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

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

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

Студворк — интернет-сервис помощи студентам
Делаю 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
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  [ТС]
Так это он мне и написал)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.02.2021, 23:23
Цитата Сообщение от 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  [ТС]
В России, копейки сами по себе конечно не очень нужны, только при расчёте НДС.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
24.02.2021, 10:39  [ТС]
Поставил вместо текстбокса:
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  [ТС]
NumberFormatInfo-эта штуковина, которая позволяет обходить проблемы с точками и запятыми(которые ещё в региональных настройках сидят) ?

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

Добавлено через 5 минут
Попробовал numericUpDown1.DecimalPlaces, но он мне количество знаков после запятой и показывает, т.е. "2"
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
24.02.2021, 12:03
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
7-2-3, я не вижу на вашем скрине запроса с параметрами. И лучше подкрепляйте свои сообщения кодом(а не скрином), так проще указать на ошибки.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
24.02.2021, 12:16  [ТС]
Вот, мой красивый и замечательный кодик:
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
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
24.02.2021, 12:29
Цитата Сообщение от 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
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  [ТС]
Если бы не Price, то моя "обновляшка" бы и без параметров сработала.
Ну я же примерно то же самое в своём коде написал, параметр для Price указать был, остальные просто не стал впихивать.

Но в итоге, VS не нравится это:
Миниатюры
Ошибка при преобразовании типа данных varchar к numeric  
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
25.02.2021, 15:35
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
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
Igr_ok, Я в курсе: копипаста подвела + невнимательность
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
25.02.2021, 19:46  [ТС]
Я видимо что то не так делаю:
Миниатюры
Ошибка при преобразовании типа данных varchar к numeric  
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
25.02.2021, 23:24
Цитата Сообщение от 7-2-3 Посмотреть сообщение
Я видимо что то не так делаю:
"Слепая" копипаста Откуда было известно как называются боксы Вашей формы, из которых извлекаются значения параметров. Вот и получили названия "по смыслу", теперь вместо них подставьте Ваши излюбленные TextBox298, TexBox100500 и т.д.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
26.02.2021, 10:23  [ТС]
А вот и нет, я именно проименовал текстбоксы. ProductID.Text(и т.п.), оно так и было.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.02.2021, 13:05
Скобки уберите вокруг 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru