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

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

Ошибка при конвертации строки в дату. [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


Наверх

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