Форум программистов, компьютерный форум, киберфорум C#: Базы данных, Entity Framework
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/103: Рейтинг темы: голосов - 103, средняя оценка - 4.98
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
1

Ошибка при преобразовании типа данных varchar к numeric

23.02.2021, 22:08. Показов 19058. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю UPDATE таблицы Orders, конкретно поле Price(decimal) изPrice.Text, получаю:
Ошибка при преобразовании типа данных varchar к numeric.
Проблема в том что, в этом поле число с запятой, если запятую убирать то "обновляшка" срабатывает, но я же не могу цену в целочисленном типе писать.
Как это победить ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.02.2021, 22:08
Ответы с готовыми решениями:

Ошибка при преобразовании типа данных varchar к real
Пытаюсь обновить запись в БД. Делаю так: double stavka = Convert.ToDouble(textBox3.Text); SqlCommand updateTeacher2 = new...

Ошибка при преобразовании типа данных varchar к float
Здравствуйте. Проблема с типами данных при внесении данных в БД из mfc проекта visual studio. В проекте есть edit box типа double, также в...

Ошибка при преобразовании типа данных varchar к int
Вообщем, есть некая хранимая процедура в SQL: create procedure new_Aut (@InventarizNomer int,@GosNomerGIBDD int, @MarkaAuto nvarchar(50),...

24
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
23.02.2021, 22:33 2
7-2-3, вот тут MsGuns расписал, как не надо кодить, вам это тоже полезно https://www.cyberforum.ru/ado-... st15283262
Цитата Сообщение от 7-2-3 Посмотреть сообщение
Price.Text
Если Price - это текстбокс, то откройте для себя другие контролы, которые позволяют работать с числами, датой и т.д. Для чисел - NumericUpDown https://docs.microsoft.com/en-... ew=net-5.0
Запрос пишете с параметрами, добавляя параметр так:
C# Скопировано
1
command.Parameters.AddWithValue(@Price, numericUpDown1.Value);
1
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
23.02.2021, 23:04  [ТС] 3
Так это он мне и написал)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.02.2021, 23:23 4
Цитата Сообщение от 7-2-3 Посмотреть сообщение
Ошибка при преобразовании типа данных varchar к numeric.
Обратите внимание на Decimalseparator https://docs.microsoft.com/en-... ew=net-5.0

Добавлено через 2 минуты
И просто интересно - Вы в какой стране живете, что у вас копейки есть в ценах ?
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
24.02.2021, 08:50  [ТС] 5
В России, копейки сами по себе конечно не очень нужны, только при расчёте НДС.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
24.02.2021, 10:39  [ТС] 6
Поставил вместо текстбокса:
C# Скопировано
1
+ "',Price='" + numericUpDown1+
Прикрутил параметр:
C# Скопировано
1
myCommand.Parameters.AddWithValue("@Price", numericUpDown1.Value);
Теперь немного другое сообщение получаю:
C# Скопировано
1
2
3
Ошибка арифметического переполнения при преобразовании varchar к типу данных numeric.
 
Выполнение данной инструкции было прервано.
Миниатюры
Ошибка при преобразовании типа данных varchar к numeric  
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
24.02.2021, 10:50  [ТС] 7
NumberFormatInfo-эта штуковина, которая позволяет обходить проблемы с точками и запятыми(которые ещё в региональных настройках сидят) ?

Добавлено через 4 минуты
Попробовал
C# Скопировано
1
+ "',Price='" + numericUpDown1.Value+
Получил первоначальное сообщение.
Ошибка при преобразовании типа данных varchar к numeric.

Добавлено через 5 минут
Попробовал numericUpDown1.DecimalPlaces, но он мне количество знаков после запятой и показывает, т.е. "2"
0
 Аватар для Andrey-MSK
3133 / 2033 / 371
Регистрация: 14.08.2018
Сообщений: 6,648
Записей в блоге: 4
24.02.2021, 12:03 8
7-2-3, в SQL (MS SQL) строки присваиваются так:
T-SQL Скопировано
1
SET TextField = 'SomeText'
а числа так:
T-SQL Скопировано
1
SET NumField = 45.89
Разницу со своей записью видите?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
24.02.2021, 12:10 9
7-2-3, я не вижу на вашем скрине запроса с параметрами. И лучше подкрепляйте свои сообщения кодом(а не скрином), так проще указать на ошибки.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
24.02.2021, 12:16  [ТС] 10
Вот, мой красивый и замечательный кодик:
C# Скопировано
1
2
3
 SqlCommand myCommand = conn.CreateCommand();
                myCommand = new SqlCommand("UPDATE Orders SET  ProductID='" + ProductID.Text + "',Qty='" + Qty.Text + "',Price='" + numericUpDown1.Value + "' WHERE OrderID='" + OrderID + "' AND LineItem='" + LineItem + "' ", conn);
                myCommand.Parameters.AddWithValue("@Price", numericUpDown1.Value);
0
 Аватар для Andrey-MSK
3133 / 2033 / 371
Регистрация: 14.08.2018
Сообщений: 6,648
Записей в блоге: 4
24.02.2021, 12:29 11
Цитата Сообщение от 7-2-3 Посмотреть сообщение
C# Скопировано
1
myCommand.Parameters.AddWithValue("@Price", numericUpDown1.Value);
И где в запросе вот этот параметр? И все остальные тоже
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
24.02.2021, 13:01 12
C# Скопировано
1
2
3
4
5
6
7
myCommand = new SqlCommand("UPDATE Orders SET  ProductID=@product, Qty=@quant, Price=@price " +
              "WHERE OrderID=@orderid AND LineItem=@lineitem", conn);
myCommand.Parameters.AddWithValue("@product", Int32(ProductID.Text));
myCommand.Parameters.AddWithValue("@quant", Int32(Qty.Text));
myCommand.Parameters.AddWithValue("@price", numericUpDown1.Value);
myCommand.Parameters.AddWithValue("@orderid", Int32(OrderID));
myCommand.Parameters.AddWithValue("@lineitem", LineItem);
1
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
25.02.2021, 14:12  [ТС] 13
Если бы не Price, то моя "обновляшка" бы и без параметров сработала.
Ну я же примерно то же самое в своём коде написал, параметр для Price указать был, остальные просто не стал впихивать.

Но в итоге, VS не нравится это:
Миниатюры
Ошибка при преобразовании типа данных varchar к numeric  
0
 Аватар для Andrey-MSK
3133 / 2033 / 371
Регистрация: 14.08.2018
Сообщений: 6,648
Записей в блоге: 4
25.02.2021, 15:35 14
7-2-3, параметры можно объявлять по другому, это более полная запись, тут явно всё указывается - тип, значения, направление параметра:
C# Скопировано
1
2
3
4
5
6
7
8
                    SqlParameter param = new SqlParameter
                    {
                        ParameterName = "@idDraw",
                        Value = drawID,
                        SqlDbType = SqlDbType.Int,
                        Direction = ParameterDirection.Input
                    };
                    sqlCommand.Parameters.Add(param);
Добавлено через 2 минуты
7-2-3, и преобразование типов в DataReader:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
                    using (SqlDataReader dataReader = sqlCommand.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            draw.IDDraw = (int)dataReader["ID_Draw"];
                            draw.IDGenPlan = (int)dataReader["ID_GenPlan"];
                            draw.DrawNum = dataReader["DrawNum"] as string ?? "";
                            draw.DrawName = dataReader["DrawName"] as string ?? "";
                            draw.Stage = dataReader["Stage"] as string ?? "";
                            draw.StageTEP = (int)dataReader["StageTEP"];
                            draw.Works = dataReader["Works"] as string ?? "";
                        }
                    }
1
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
25.02.2021, 17:54 15
7-2-3, вместо
Цитата Сообщение от MsGuns Посмотреть сообщение
C# Скопировано
1
Int32(ProductID.Text)
надо писать
ConvertToInt32(ProductID.Text) или (int)ProductID.Text.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
25.02.2021, 18:40 16
Igr_ok, Я в курсе: копипаста подвела + невнимательность
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
25.02.2021, 19:46  [ТС] 17
Я видимо что то не так делаю:
Миниатюры
Ошибка при преобразовании типа данных varchar к numeric  
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
25.02.2021, 23:24 18
Цитата Сообщение от 7-2-3 Посмотреть сообщение
Я видимо что то не так делаю:
"Слепая" копипаста Откуда было известно как называются боксы Вашей формы, из которых извлекаются значения параметров. Вот и получили названия "по смыслу", теперь вместо них подставьте Ваши излюбленные TextBox298, TexBox100500 и т.д.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
26.02.2021, 10:23  [ТС] 19
А вот и нет, я именно проименовал текстбоксы. ProductID.Text(и т.п.), оно так и было.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.02.2021, 13:05 20
Скобки уберите вокруг ProductID.Text:
C# Скопировано
1
  myCommand.Parameters.AddWithValue("@product", (int)ProductID.Text);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2021, 13:05
Помогаю со студенческими работами здесь

Ошибка при преобразовании типа данных varchar к int
Есть 3 таблицы: Покупатели - customer(id,name,city,phone,rating) поставщики - supplier(id,name,city,phone) договор -...

Ошибка при преобразовании типа данных varchar к int
Подскажите в чем дело, пару часов назад таблица работала а теперь выдает ошибку. После того как заполню и нажму добавить. Ошибка при...

Ошибка арифметического переполнения при преобразовании int к типу данных numeric
SELECT TOP 1 CONVERT(DECIMAL(5,5), Practics) FROM #Subjects WHERE ID = 66 Practics - это INT Этот селект выбрасывает мне такую ошибку:...

Ошибка при преобразовании типа данных nvarchar к datetime
Пытаюсь выполнить запрос EXEC docWagonPass Null,"2020-06-19 13:40:00:000","2020-06-19 16:40:00:000",67676,4,57195,45,Null,21403 ...

LINQ to SQL Ошибка при преобразовании типа данных nvarchar к float
Всем доброго времени суток! На сервере есть табличная функция function FunViewWarrantyPeriod() RETURNS @result table( per...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
Выполнение кода в игровом цикле Unity с использованием не-MonoBehaviour классов C#
bytestream 02.03.2025
Обычный подход к разработке игр на Unity тесно связан с использованием MonoBehaviour - базового класса для скриптов, обеспечивающего доступ к игровому циклу через события Update, FixedUpdate и. . .
Управление инстанцирование­м вложенных классов в C#
bytestream 02.03.2025
Вложенные классы в C# - мощное средство для создания тесно связанных типов данных и логики. Такие классы определяются внутри других классов и обеспечивают высокий уровень инкапсуляции, позволяя. . .
Как использовать Batch Transform и Batch Gizmo Drawing API в Unity
bytestream 02.03.2025
В мире разработки игр производительность часто становится краеугольным камнем, особенно когда речь заходит о проектах с большим количеством объектов и сложной визуализацией. Unity предоставляет. . .
Эффективный реверс строк в C#
Wired 01.03.2025
Реверс строки, казалось бы простая операция, на практике может стать испытанием для производительности приложения, особенно когда речь идет о больших объемах данных или критически важных участках. . .
Перегрузка булевых операторов в C#
Wired 01.03.2025
В программировании редко встречаются задачи, требующие перегрузки булевых операторов. Обычно достаточно стандартной реализации для типа bool или использования nullable-типов. Однако существуют. . .
Способы определения момента возникновения события в коде C# Unity
Wired 01.03.2025
Отслеживание событий - важный элемент разработки игр на Unity, позволяющий создавать отзывчивые и интерактивные приложения. Однако стандартные средства Unity не всегда предоставляют оптимальные. . .
Unit-тестирование в Unity
Wired 01.03.2025
Многие разработчики игр считают, что написание тестов отнимает слишком много времени и ресурсов, особенно учитывая частые изменения геймплейной логики и механик. Однако это заблуждение приводит к. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер