![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при конвертации строки в дату. [FireBird 1.5]
Alexander Panov © (2005-02-07 19:19:00)Используется FireBird Embeded 1.5, IBDatabase, IBQuery.
Выполняется для нескольких таблиц подряд следующий код:
Q.SQL.Text := 'ALTER TABLE "'+Src+'" ADD CHDATE DATE DEFAULT ''NOW''';
Q.ExecSql;
Q.SQL.Text := 'UPDATE "'+Src+'" SET CHDATE=''01.01.2004''';
Q.ExecSql;
Для нескольких таблиц код отрабатывает без ошибок, а для некоторых возникает исключение -
conversion error from string
Как с этим бороться? Сталкивался кто-нибудь?
Deniz (2005-02-08 06:34:00) [1]И еще не плохо бы на 3 диалект перейти, и вместо DEFAULT NOW использовать DEFAULT current_timestamp или чего там надо.
Fay (2005-02-07 20:46:00) [2]2 Vlad © (07.02.05 19:35) [1]
В IB дата в виде 'XX.XX.XXXX' - это всегда DD.MM.YYYY.
Alexander Panov (2005-02-07 20:45:00) [3]Desdechado © (07.02.05 20:14) [4]
Спасибо, теперь знать буду.
Desdechado (2005-02-07 20:14:00) [4]В IB строго разделяется изменение метаданных и изменение данных.
В одной транзакции смешивать недопустимо.
Alexander Panov (2005-02-07 19:57:00) [5]Очень странно, но если выполнять запрос на добавление поля и его обновление в одной транзакции, то в этом случае происходит такая ошибка(причем не на всех таблицах).
Если же после каждого запроса выполнять завершение транзакции, то всё отрабатывает без ошибок...
Alexander Panov (2005-02-07 19:40:00) [6]Vlad © (07.02.05 19:35) [1]
UPDATE MyTable SET CHDATE = :Param
Так тоже делал. Ошибка та же самая.
Вот код:
Q.SQL.Text := 'UPDATE "'+Src+'" SET CHDATE=:pDate';
Q.Params[0].DataType := ftDate;
Q.ParamByName('pDate').AsDate := now-300;
Q.ExecSQL;
Vlad (2005-02-07 19:35:00) [7]
> Alexander Panov © (07.02.05 19:19)
Обычно рекомендуют использовать параметры. Особенно если дело касается дат или дробных чисел.
UPDATE MyTable SET CHDATE = :Param