Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];

Вниз

проблема с датами и временем в ADOComand   Найти похожие ветки 

 
Slym ©   (2010-03-20 00:23) [0]

База Firebird, подключаюсь через ODBC, использую ADO
проблема с датами и временем (тип Date, Time) Restricted data type attribute violation при операции вида
ADOComand.Parameters[0].DataType:=ftDate;
ADOComand.Parameters[0].Value:=Now;
ADOComand.Execute;


если передавать строку то сработает
ADOComand.Parameters[0].Value:=DateTimeToStr(Now);
но из-за разници форматов даты клиента и сервера (dd.MM.yyyy и MM.dd.yyyy) меняются день с месяцем

Как победить проблему?


 
sniknik ©   (2010-03-20 00:39) [1]

DataType:= ftDateTime
попробуй.


 
Slym ©   (2010-03-20 00:47) [2]

а параметру всеравно ftDate сбрасывает на ftDateTime
что
DataType:=ftDate
Value:=Now;
что
Value:=Now;
DataType:=ftDate
ЛОГ:
UPDATE ADV SET ID= :ID,NAME= :NAME,CHANGE_DATE= :CHANGE_DATE,CHANGE_TIME= :CHANGE_TIME,IS_DELETED= :IS_DELETED WHERE (REPLIC_ID= :REPLIC_ID);
ID=2(ftInteger)
NAME=ТВ(ftString)
CHANGE_DATE=20.03.2010 4:16:34(ftDateTime)
CHANGE_TIME=20.03.2010 4:16:34(ftDateTime)
IS_DELETED=0(ftSmallint)
REPLIC_ID={13F36713-3584-407E-839B-FF2462AE93E6}(ftString)


 
Slym ©   (2010-03-20 01:33) [3]

поборол так прямым присвоением ADO в обход дельфевой обертки
ADOComand.Parameters[0].ParameterObject.Value:=Now;
ADOComand.Parameters[0].ParameterObject.Type_:=adDBDate;


 
sniknik ©   (2010-03-20 07:49) [4]

т.е. чтобы работало нужно было задавать с глюком?... шаман.

Now возвращает значение типа TDateTime со временем, явное приписывание типа (в общем то не нужное) задает тип дата, без времени. и это так и нужно? однако...


 
Slym ©   (2010-03-20 09:27) [5]

исследование показало что виновник находится в
ADODB.DataTypeValues

DataTypeValues: array[TDataType] of TOleEnum = (
   adEmpty, adVarChar, adSmallint, adInteger, adUnsignedSmallint,
   adBoolean, adDouble, adDouble, adCurrency, adDate, adDate,
   adDate,
adBinary,...
т.е. любой тип даты времени дельфи (ftDate, ftTime, ftDateTime) приравнивался к ADOтипу дата (adDate)
ParameterObject.Type_ := DataTypeValues[Value];

ручное присваивание вроде ParameterObject.Type_:=adDBTimeStamp; решило проблему


 
Anatoly Podgoretsky ©   (2010-03-20 09:35) [6]

> Slym  (20.03.2010 00:23:00)  [0]

Интересно, а зачем ты время превращаешь в строку, что бы затем строку превратить во время.
Не надо так.


 
sniknik ©   (2010-03-20 09:42) [7]

> ручное присваивание вроде ParameterObject.Type_:=adDBTimeStamp; решило проблему
ну вот это совсем другое дело, и это практически то, что советовал в [1]

> т.е. любой тип даты времени дельфи (ftDate, ftTime, ftDateTime) приравнивался к ADOтипу дата (adDate)
почему тогда нет проблем у остальных? могу только предположить, что не все драйверы к этому чувствительны, а то может и специально сделано (исходно то делалось под MSSQL, а ему может пифигу/либо он только один тип признавал)


 
Slym ©   (2010-03-20 11:11) [8]


> Интересно, а зачем ты время превращаешь в строку, что бы
> затем строку превратить во время.
> Не надо так.

это где?
вариант со строкой я не рассматривал всерьез, грабли с конвертациями/форматами мною приведены [0] и "идеологически" неверно...
вообще в итоге вся логика у меня в строках (т.к. прога экспорт/импорт в xml)
> почему тогда нет проблем у остальных?

может большинство не пользует ODBCFireBirdDriver, а пользуют нативный FIB+ или IBProvider... сменить способ доступа к ДБ мне нельзя только ADO-ODBC-Firebird


 
Anatoly Podgoretsky ©   (2010-03-20 14:06) [9]


> это где?

Тренируем память
ADOComand.Parameters[0].Value:=DateTimeToStr(Now);



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1315315520
Palladin
2011-09-06 17:25
2011.12.25
Ассоциированные с файлом иконки в Vista и Windows 7


3-1269033816
Slym
2010-03-20 00:23
2011.12.25
проблема с датами и временем в ADOComand


2-1315895287
KIR@PRO
2011-09-13 10:28
2011.12.25
TComboBox vs PStrings


2-1316452365
Leon-Z
2011-09-19 21:12
2011.12.25
Рисунок *.jpg ?


2-1316021139
pravd
2011-09-14 21:25
2011.12.25
работа с БД paradox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский