Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: вставка даты
вставка даты
Posted: 2007/05/25 07:10
 
Дмитрий, подскажите как вставить значение в поле типа date (MySQL)

MyQuery_articles.Insert;
MyQuery_articles.FieldValues['bookname']:= pole_nazvanie_article.Text;

....
MyQuery_articles.FieldValues['product_type']:= 'article';
MyQuery_articles.FieldValues['inputdate']:= '2005-04-25';
MyQuery_articles.Post;

Все поля заполняются замечательно, а вот дата забивается значением по-умолчанию 0000-00-00

причем запрос в phpMyAdmin
insert into `books` (inputdate) values ('2005-04-25')
отрабатывает как и следовало

Заранее, спасибо.
Re:вставка даты
Posted: 2007/05/25 07:52
 
Одно из слудующих:
1) MyQuery_articles.FieldValues['inputdate']:= StrToDate('2005-04-25');
2) MyQuery_articles.FieldByName('inputdate').AsString := '2005-04-25';
3) MyQuery_articles.FieldByName('inputdate').AsDate := StrToDate('2005-04-25');

удачи,
Дмитрий
Re:вставка даты
Posted: 2007/05/28 04:52
 
Дмитрий, добрый день!

Разобрался. Заработало.

Нашел следующую закономерность, может Вас она заинтересует:

Поля типа DATE обрабатываются иначе, чем остальные поля:

т.е. в моём первом примере

MyQuery_articles.Insert;
MyQuery_articles.FieldValues['bookname']:= pole_nazvanie_article.Text;
....
MyQuery_articles.FieldValues['product_type']:= 'article';
MyQuery_articles.FieldValues['inputdate']:= '2005-04-25';
MyQuery_articles.Post;

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

Дело в том, что если оставить пустым текст в ADUpdateSQL1.InsertSQL или в нем не будет указываться поле inputdate - будут писаться нули - и ничто не поможет.
А вот если указать inputdate .... :NEW_inputdate то всё нормально работает.
Другими словами для полей любого типа, отличного от date можно работать в независимости от наполненности ADUpdateSQL1.InsertSQL, а для полей типа date они обязательно должны быть указаны в ADUpdateSQL1.InsertSQL (иначе будут писаться нули).

Вот такую штуку обнаружил.