Форум: "Базы";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
ВнизADO+ODBC Firebird Найти похожие ветки
← →
elserpiente (2007-04-11 11:39) [0]Привет всем!
Столкнулся с такой проблемой:
есть таблица FB, с полем td Timestamp, и программа которая работает с этой таблицей. Программа работает через ADO компоненты.
Вставляю новую запись я с помощью параметров:
adoquery.sql.text = "insert into test (td) values (:ftime)";
adoquery.Parameters.FindParam("ftime").Value = now;
adoquery.execsql
смотрим в таблицу...а там в поле td запись: "11.04.2007 0:00:00".
в adoquery.Parameters.FindParam("ftime").datatype = ftDateTIme;
если же не пользоваться параметрами и вставлять текстом то все работает. Ничего не пойму...мо кто поможет?
← →
Desdechado © (2007-04-11 12:01) [1]> в adoquery.Parameters.FindParam("ftime").datatype = ftDateTIme;
Это само определилось или руками выставлял?
Попробуй ftTimeStamp.
← →
elserpiente (2007-04-11 12:22) [2]
> Это само определилось или руками выставлял?
само
> Попробуй ftTimeStamp.
вылетает ошибка "EOleException with message "Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another". Process Project1.exe (1184)"
← →
sniknik © (2007-04-11 12:55) [3]> adoquery.sql.text = "insert into test (td) values (:ftime)";
> adoquery.Parameters.FindParam("ftime").Value = now;
> adoquery.execsql
перепиши на
with adocommand do begin
commandtext:= "insert into test (td) values (:ftime)";
Parameters.ParamByName("ftime").Value:= now;
execute;
end;
(не потому, что в твоем ошибка, может и нет, но с идеологически неверным подходом даже начинать разбираться не стоит... я и не буду.)
← →
sniknik © (2007-04-11 12:58) [4]и кстати можно обойтись вообще без параметра в FB есть "NOW" возвращающая текущее време... ну если конечно не нужно время именно клиента.
← →
elserpiente (2007-04-11 13:11) [5]
> перепиши на ...
тоже самое
> в FB есть "NOW"
в ФБ нет "NOW",в ФБ есть "current_timestamp".
← →
sniknik © (2007-04-11 13:29) [6]> тоже самое
тогда, имхо, дело в провайдере данных.
во всяком случае у меня означенный запрос с параметром работает, и время не режет.
> в ФБ нет "NOW",в ФБ есть "current_timestamp".
странно, но у меня есть... впрочем про current_timestamp тоже слышал, но вот прямо счас не работает, видать ошибка в синтаксисе.
← →
Desdechado © (2007-04-11 13:36) [7]> в ФБ нет "NOW",в ФБ есть "current_timestamp".
Зависит от диалекта БД.
← →
sniknik © (2007-04-11 13:36) [8]> видать ошибка в синтаксисе.
а. ну понятно, ты же его привел в кавычках, а это переменная
итого "NOW" = CURRENT_TIMESTAMP
вот как есть, без убирания кавычек в одном случае и добавления в другом...
← →
sniknik © (2007-04-11 13:39) [9]> Зависит от диалекта БД.
намекаешь на первый? но там вроде нет типа полей Timestamp только либо дата либо тайм... или я путаю? (не работаю с IB/FB, практически не знаю...)
← →
Desdechado © (2007-04-11 13:43) [10]sniknik © (11.04.07 13:39) [9]
В первом DATE тождественен TIMESTAMP из третьего. Никаких других дато/временных типов в первом больше нет.
← →
sniknik © (2007-04-11 13:49) [11]> В первом DATE тождественен TIMESTAMP из третьего.
ага, тогда вариант у него первый диалект, тип не Timestamp а DATE, ADO определяет тип поля как DATE и "режет"/конвертирует тип под него, хотя это на самом деле дататайм...
elserpiente
попробуй тогда, указать тип явно
with adocommand do begin
commandtext:= "insert into test (td) values (:ftime)";
Parameters.ParamByName("ftime").DataType:= ftDateTIme;
Parameters.ParamByName("ftime").Value:= now;
execute;
end;
т.е. то же самое что в [0], только надо присвоить.
помогло?
← →
elserpiente (2007-04-11 15:25) [12]
> помогло?
нет конечно
← →
sniknik © (2007-04-11 16:47) [13]>> помогло?
> нет конечно
>> тоже самое
> тогда, имхо, дело в провайдере данных.
← →
Jan1 (2007-04-11 20:23) [14]
> >> тоже самое
> > тогда, имхо, дело в провайдере данных.
не-а :) глюк в ADO а именно с параметрами. Если сделать через датасет, то все будет ОК.
← →
Johnmen © (2007-04-11 20:31) [15]
> в ФБ нет "NOW",в ФБ есть "current_timestamp".
Куда же делось "NOW"? И откуда такие шокирующие факты?
← →
Johnmen © (2007-04-11 20:32) [16]да, и глюк не в АДО, а в провайдере данных (с) [13]
← →
elserpiente (2007-04-12 09:33) [17]
>
> > в ФБ нет "NOW",в ФБ есть "current_timestamp".
>
> Куда же делось "NOW"? И откуда такие шокирующие факты?
прогнал ;)
а вопрос решился заменой провайдера на http://www.ibprovider.com/ ;) Спасибо Коваленко Диме с рсдн ;)
← →
Johnmen © (2007-04-12 09:59) [18]
> Спасибо Коваленко Диме с рсдн ;)
Вот на расдн и говори ему спасибо.
А здесь спасибо надо говорить Desdechado, sniknik и Johnmen.
:)))
← →
Jan1 (2007-04-12 10:12) [19]
> да, и глюк не в АДО, а в провайдере данных (с) [13]
пробовал через TADODataSet?
← →
Jan1 (2007-04-12 10:15) [20]
> а вопрос решился заменой провайдера на http://www.ibprovider.com
Только учти что он денег стоит...
Кстати багу с параметром можно обойти так:
adoquery.sql.text = "insert into test (td) values (cast(:ftime as timestamp))";
adoquery.Parameters.ParamByName("ftime").DataType := ftString;
adoquery.Parameters.ParamByName("ftime").Value := FormatDateTime("yyyy-mm-dd hh:nn:ss.zzz", Now);
adoquery.execsql
← →
elserpiente (2007-04-12 11:36) [21]
> Только учти что он денег стоит...
есть фриварній провайдер
в лицензии на него написано:
The "Free IBProvider" is freeware. It means:
...
2.Anyone does not have to pay to use it for private or commercial usage
...
взято с http://www.ibprovider.com/eng/license/lic_free.html
> Кстати багу с параметром можно обойти так:
гимор ;).
Скорей всего проблема была в ОДБС фаербёрда
← →
sniknik © (2007-04-12 12:51) [22]> Скорей всего проблема была в ОДБС фаербёрда
русский язык понимаем? сколько раз надо повторить чтобы дошло? (3х раз ([6][13][16]) в одной ветке явно недостаточно)
p.s. у фаербёрда нет ОДБС. лучше бы уж молчал.
← →
elserpiente (2007-04-12 13:04) [23]
> > Скорей всего проблема была в ОДБС фаербёрда
> русский язык понимаем? сколько раз надо повторить чтобы
> дошло? (3х раз ([6][13][16]) в одной ветке явно недостаточно)
Чтоб убедится, надо самому все проверить.. ;)
> p.s. у фаербёрда нет ОДБС. лучше бы уж молчал.
не придерайся.
Всем Удачи!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c