Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

0,1 is not a valid BCD value [D7, XP, 2003]


Дмитрий ©   (2014-04-01 16:56:00) 

При заполнении одного из полей формы внезапно полезла ошибка типа "0,1 is not a valid BCD value".
Явно связана с десятичным разделителем, на ввод дробной части ругается.
В базе поле определено `Price` decimal(19,4) DEFAULT '0.0000'.
Датасет AnyDAC.TADQuery.
Упоминаемое здесь
http://www.sql.ru/forum/846144/decimalseparator-tfmtbcdfield-i-naglaya-ado
свойство EnableBCD в списке отсутствует.
По какой причине поле перестало работать?


Германн   (2014-04-03 02:18:00) [1]


> Юрий Зотов ©   (02.04.14 20:39) [11]
>
> И еще чудо - тот же самый insert, который давал ошибку,
> без проблем выполнился в той же БД, но через другой клиент.
>

А что такое "клиент"? Провайдер?


Inovet   (2014-04-02 21:44:00) [2]

Подумал было про пробел, но решил, что слишком глюкотно, оказывается, нет предела.

Другой клиент региональные настройки правильно потдягивал.


[ВладОшин]   (2014-04-02 21:23:00) [3]


>  но через другой клиент.

хотел же уточнить насчет ЯП/ПО..


Юрий Зотов   (2014-04-02 20:39:00) [4]

И еще чудо - тот же самый insert, который давал ошибку, без проблем выполнился в той же БД, но через другой клиент.


Юрий Зотов   (2014-04-02 20:35:00) [5]

Ну да, после запятой парсер ожидал цифру или пробел, а встретил апостроф. Мы были в шоке.


brother   (2014-04-02 20:26:00) [6]

> 123,'XYZ'

'XYZ' оно думал, что это дробь числа? О_о


Юрий Зотов   (2014-04-02 20:07:00) [7]

Братцы, вы не поверите. Даю подсказку:
insert into T (F1, F2) values (123, 'XYZ') - все ОК


[ВладОшин]   (2014-04-02 19:56:00) [8]

тоже ставлю на cast(123 as число(11,0) )


Inovet   (2014-04-02 18:29:00) [9]


> [3] Юрий Зотов ©   (02.04.14 15:27)
> insert into T (F1, F2) values (123,'XYZ') - выдает ошибку invalid token.

Неужели надо было 123,0, 'XYZ'?


Inovet   (2014-04-02 18:28:00) [10]

> [4] sniknik ©   (02.04.14 17:46)

Не, там были .T. и .F., просто буква как и любая другая. Это в dbf они хранились, как ты говоришь.


sniknik   (2014-04-02 17:46:00) [11]

а Т тут случаем не от True? в foxpro так было, в смысле T и F зарезервированные переменные.
в кавычки взять... ну в такие какие в DB2 приняты, в mssql было бы [T].


Юрий Зотов   (2014-04-02 15:27:00) [12]

Тут еще вот на что напоролись (DB2).

Таблица T:
F1 - число(11, 0)
F2 - char(3)

insert into T (F1, F2) values (123,'XYZ') - выдает ошибку invalid token.

Кто поймет, в чем дело - тому респект и уважуха.


Дмитрий   (2014-04-01 17:53:00) [13]

Поле категорически отказывается принимать точку, с одной стороны.
С другой, точка в одном поле как разделитель совершенно не устраивает.

Обнаружил, проблема связана не с разделителем, а с пробелом перед числом.
Формат отображения выставлен с пробелом между разрядом тысяч и сотен (#_##0.00).
При переходе в режим редактирования перед трех значным числом оказывается пробел, при редактировании части числа вылетает ошибка.
При выделении всего содержимого и вводе числа целиком ошибка не возникает.
После заполнения свойства EditFormat (0.00) проблема исчезла.


sniknik   (2014-04-01 17:08:00) [14]

возможно запятую берет из локальных настроек (панель управления "язык и региональные настройки"), попробуй поставь там точку.


Наверх

Титульная страница Поиск, карта сайта Написать письмо