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

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

Проблема с ApplyUpdates [D7, IB6.x]


Patrick ©   (2003-10-16 10:21:00) 

На форме заполняю поля (изменение) QUERY, затем по нажатию клавиши делаю ApplyUpdated, выползает сообщение типа "SQL General Error...numeric overflow...Cannot transliterate between character sets" ну в общем изместное, до боли, сообщение (уже надоело).На страничке ModifySQL следующее:
update people
set n = :n,
a = :a,
b = :b,
c = :c
where n = :old_n and a = :old_a and b = :old_b and c = :old_c
n - integer
a,b,c - string

вроде всё верно. В IBExpress выполняю такой же update но с конкретными значениями (строки на русском языке), всё прелестно.
Устал уже биться, главное уже не знаю где найти выход из сложившейся ситуации, может кто имел положительный опыт в борьбе с этим. Может это какой глюк BDE.
И еще вопрос, используя компонент IBDataSet, а именно в плане ApplyUpdates, например при переходе с записи на запись в событии
BeforeScroll (необходимо сохранить данные) программа уходит в глухой штопор аж Stack OverFlow похоже ApplyUpdates и BeforeScroll вызывают друг друга. Видимо в корне неправильно так делать, но как быть если необходимо часто обновлять данные?


stud   (2003-10-16 15:03:00) [1]

скачай с борланда инсталяшку и не мучайся.


Patrick   (2003-10-16 14:57:00) [2]

причем не только для IB, а вообще для любого.


Patrick   (2003-10-16 14:54:00) [3]

Значит надо переставлять BDE - у вновь создаваемых алиасов BDE для IB, нет langdriver.


stud   (2003-10-16 14:42:00) [4]

там должен быть langdriver


Patrick   (2003-10-16 14:23:00) [5]

Кстати, заметил одну особенность у меня была Delphi5 и когда я минуя 6 поставил сразу 7, я сохранил BDE-шный idapi32.cfg и подсунул его в 7-ке, чтобы сохранить всю информацию по алиасам, у меня там действительно был установлен PDox Ansi Cyrillic для моего злосчастного gdb, я решил удалить алиас и создать заново.
И в свойствах нового алиаса, уже не было параметра Database language, интересно почему, опять глюк или несколько другая версия BDE?


kaif   (2003-10-16 14:11:00) [6]

Я не понял, какие компоненты используются. Но если IBX, то:
У тебя в компоненте IBDatabase в параметрах соединения прописана кодовая страница?
Щелкни дважды на IBDatabase и посмотри, какая страница выбрана. Я использую WIN1251.


Romkin   (2003-10-16 13:59:00) [7]

Может быть. Правда, я не понимаю, какие проблемы у IBX? Все нормально (ну почти), по крайней мере, гораздо лучше, чем пользовать BDE.
А сам я в любом случае использую связку TIBQuery -> TDatasetProvider -> TClientDataset, сейчас как раз их верчу :)
Уж слишком много вкусностей, даже в двухзвенке


MsGuns   (2003-10-16 13:47:00) [8]

>Romkin © (16.10.03 13:40) [5]
Похоже, что все же использует TQuery, предпочитая его компонентам IBX именно по причине, указанной в Patrick © (16.10.03 10:43) [2]


Romkin   (2003-10-16 13:40:00) [9]

Хм... А какое отношение имеет BDE к TIBQuery?
ТАм в TIBDatabase надо страницу указывать lc_ctype=WIN1251
http://www.ibase.ru/devinfo/ibrusfaq.htm
Особо хотелось бы обратить внимание, что у поля должна быть кодировка win1251 установлена


MsGuns   (2003-10-16 13:29:00) [10]

При коннекте к серверу надо явно указывать Character Set = win1251.


stud   (2003-10-16 11:45:00) [11]

возможно в настройках бде нужно вообще убрать языковой драйвер


Patrick   (2003-10-16 10:43:00) [12]

Попрабовал по латински , получилось, но почему так, ведь в BDE, language выставлен корректно PDox Ansi Cyrillic как учили,

и по второму вопросу тот подход который я описывал работает в IBQuery? а вот в IBDataSet не желает. зато у IBDataSEt, как кто-то написал на форуме, возможно несколько запросов типа update в одной секции ModifySQL, верно ли это, и вообще, что всё-таки для IB лучше использовать BDE или IB компоненты или есть еще какая альтернатива, а то какие-то глюки с character set у BDE уже слегка притомили.


Nikolay M.   (2003-10-16 10:25:00) [13]


> В IBExpress выполняю такой же update но с конкретными значениями
> (строки на русском языке), всё прелестно.

А если через приведенный пример с БДЕ провести только латиницу?


> Видимо в корне неправильно так делать

Совершенно верно.


> как быть если необходимо часто обновлять данные?

Зависит от задачи. Возможно, достаточно будет выполнять вспомогательный запрос вроде qTempQuery.SQL.Text := "INSERT INTO table_name VALUES (...)" (или UPDATE, смотря что нужно).


Наверх

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