![]() |
|
Модераторы: gambit |
![]()
|
|
| MoRoZfromT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.3.2006 Репутация: нет Всего: нет |
Нужно запихать в базу Access'a такую строку
получаю синтаксическую ошибку из-за sentCostTotal. Эта переменная типа double. Насколько я понимаю при подставление параметра в запрос в качестве знака разделения целой и дробной части ставится запятая, в результате чего получается несоответствие количества столбцов и значений. Как решить эту задачу? |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 2 Всего: 39 |
Предположу, что заключение масок в косые апострофы способно улучшить ситуацию :
если не помогло, то попробуй ещё отправить вещественное число в представлении с мантиссой :
-------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 1 Всего: 42 |
Пример из MSDN - посмотри
|
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 2 Всего: 39 |
согласен с HalkaR : можно сделать параметризованный запрос сначала задав общий вид, а затем подставив нужные параметры. Но не может быть, чтобы без этого нельзя было обойтись!
+ со всей аккуратностью нужно с uint, VarChar (string) и тому подобными неформатными типами. A double вроде везде double... Это сообщение отредактировал(а) marcusmae - 4.9.2006, 22:28 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 5 Всего: 232 |
В SQL Server вещественный тип всегда идёт с точкой, независимо от настроек культуры. А при конвертации double.ToString на клиентской машине может быть подставлена либо точка, либо запятая. Так что либо делаем специальный NumberFormatInfo с NumberDecimalSeparator = "." и передаём его в ToString, либо используем параметризованные запросы. Кстати, параметры можно не обязательно обозначать именами, можно ставить символ "?".
-------------------- ![]() |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Тут речь об Аксесе, а у него с точностью до наоборот - формат вещественного типа зависит от текущей локали. Так что пользуйтесь параметрическими запросами |
|||
|
||||
| MoRoZfromT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.3.2006 Репутация: нет Всего: нет |
Чертовщина какая-то.
Сделал параметрический запрос, но проблема опять в этом double
Стоит убрать этот параметр @Sum - запрос проходит. Даже если я напрямую присваиваю параметру значение 1.0 не работает запрос. Всегда одно и то же "Syntax error in INSERT INTO statement." Чего же я не так делаю? |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 2 Всего: 39 |
А если f поставить
? Добавлено @ 18:27 + где и как объявлено sentCostTotal? Добавлено @ 18:29 + поставь брейк в catch-е и напиши, что за запрос там в cmd лежит. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| MoRoZfromT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.3.2006 Репутация: нет Всего: нет |
c буковкой f не прокатывает.
выше в этой же функции double sentCostTotal = 0.0; ставлю брейк, в коммандтексте вижу: INSERT INTO acc_test (userid,filterid,sum) VALUES (@User,@Filter,@Sum) вообще ничего не понимаю. |
|||
|
||||
| marcusmae |
|
||||||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 2 Всего: 39 |
ну так, пардон, ты заявляешь тип Float
а присваиваешь double
То есть, что, если сделать
? -------------------- ἀπὸ μηχανῆς θεός |
||||||||
|
|||||||||
| MoRoZfromT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.3.2006 Репутация: нет Всего: нет |
это я сам потом заметил. не помогает. к тому же я переделал немного.
теперь код выглядит так
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 5 Всего: 232 |
Может, в самой таблице тип не double а real ?
-------------------- ![]() |
|||
|
||||
| MoRoZfromT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.3.2006 Репутация: нет Всего: нет |
в таблице тип "Двойное с плавающей точкой"
все уже перепробовал |
|||
|
||||
| Mad |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 1 Всего: 19 |
|
||||
|
|||||
| MoRoZfromT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.3.2006 Репутация: нет Всего: нет |
я понял в чем была бага: нельзя называть столбец именем sum - это ключевое слово.
последнее предложенное решение выглядит более элегантно. всем спасибо за участие. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |