Не выполняется триггер - FB 2.0

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 10 янв 2007, 14:55

Я привык обходить все грабли при построении моделей, такшта мне IBX в этом плане не жмёт :)

qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Сообщение qvd » 10 янв 2007, 14:57

Код: Выделить всё

TEMP_IBQuery.SQL.Add('select * from ZAKRUTIYE_ZAKAZA(:abonent, :data)');
TEMP_IBQuery.ParamByName('abonent').AsInteger  := IBTable_Main.FieldByName('abonent').AsInteger;
TEMP_IBQuery.ParamByName('data').AsDateTime := IBTable_Main.FieldByName('NACHALO_VUPOLNENIYA').AsDateTime;
Вылетел -
error conversion from string ''''

FlexTracer -
select * from ZAKRUTIYE_ZAKAZA(?, ?)

Почему ошибка произошла, попробую позже разобраться, проблему решил - сделал where по другому полю (ID - наращивает триггер, надо было сразу так сделать..).
Всем спасибо за помощь!

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 10 янв 2007, 15:10

qvd писал(а):

Код: Выделить всё

TEMP_IBQuery.ParamByName('data').AsDateTime := IBTable_Main.FieldByName('NACHALO_VUPOLNENIYA').AsDateTime;
И все равно в этом месте оно тебе доли секунд отрежет нафиг. Причем дважды. Ну-ка нах такую бодягу...

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 10 янв 2007, 17:51

Merlin писал(а):И гарантированно не совпадёт с установленным триггерно.
Как раз такую бодягу лечил недавно.
У меня в АСУ (без исходников, конечно) запросы написаны как ...AND DATEREC=:DATEREC, типа того, отслеживает, не менял ли кто документ, пока я его открывал и редактил. Соответсвенно, триггерный 'NOW' стал пихать туда милисекунды, и всё встало.
Для совместимости кода FB1 и FB2 пришлось написать процедурку, отрезающую милисекунды, и везде вместо 'NOW' использовать её.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 10 янв 2007, 18:05

WildSery писал(а): запросы написаны как ...AND DATEREC=:DATEREC
На эти грабли я наступил один раз, в 96-м году, ещё на BDE (в среднем 1 запись из 1000 не находилась), промыслил, осознал и с тех пор ни-ни.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 10 янв 2007, 19:16

Merlin писал(а):На эти грабли я наступил один раз, в 96-м году, ещё на BDE (в среднем 1 запись из 1000 не находилась), промыслил, осознал и с тех пор ни-ни.
Я эти грабли обошёл (к щастью, учусь на ошибках других :wink: ), их оставил Ансофт, и кстати, тоже в BDE.

Ответить