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

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

ADO+ODBC Firebird [D7, Firebird]


Страницы:   1 2

elserpiente ©   (2007-04-11 11:39:00) 

Привет всем!
Столкнулся с такой проблемой:
есть таблица 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;
если же не пользоваться параметрами и вставлять текстом то все работает. Ничего не пойму...мо кто поможет?


elserpiente   (2007-04-12 13:04:00) [1]


> > Скорей всего проблема была в ОДБС фаербёрда
> русский язык понимаем? сколько раз надо повторить чтобы
> дошло? (3х раз ([6][13][16]) в одной ветке явно недостаточно)

Чтоб убедится, надо самому все проверить.. ;)

> p.s. у фаербёрда нет ОДБС. лучше бы уж молчал.

не придерайся.
Всем Удачи!


sniknik   (2007-04-12 12:51:00) [2]

> Скорей всего проблема была в ОДБС фаербёрда
русский язык понимаем? сколько раз надо повторить чтобы дошло? (3х раз ([6][13][16]) в одной ветке явно недостаточно)

p.s. у фаербёрда нет ОДБС. лучше бы уж молчал.


elserpiente   (2007-04-12 11:36:00) [3]


> Только учти  что он денег стоит...

есть фриварній провайдер
в лицензии на него написано:
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

> Кстати багу с параметром можно обойти так:

гимор ;).
Скорей всего проблема была в ОДБС фаербёрда


Jan1   (2007-04-12 10:15:00) [4]


> а вопрос решился заменой провайдера на 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


Jan1   (2007-04-12 10:12:00) [5]


> да, и глюк не в АДО, а в провайдере данных (с) [13]

пробовал через TADODataSet?


Johnmen   (2007-04-12 09:59:00) [6]


> Спасибо Коваленко Диме с рсдн ;)

Вот на расдн и говори ему спасибо.
А здесь спасибо надо говорить Desdechado,  sniknik и Johnmen.
:)))


elserpiente   (2007-04-12 09:33:00) [7]


>
> > в ФБ нет "NOW",в ФБ есть "current_timestamp".
>
> Куда же делось "NOW"? И откуда такие шокирующие факты?

прогнал ;)
а вопрос решился заменой провайдера на http://www.ibprovider.com/;) Спасибо Коваленко Диме с рсдн ;)


Johnmen   (2007-04-11 20:32:00) [8]

да, и глюк не в АДО, а в провайдере данных (с) [13]


Johnmen   (2007-04-11 20:31:00) [9]


> в ФБ нет "NOW",в ФБ есть "current_timestamp".

Куда же делось "NOW"? И откуда такие шокирующие факты?


Jan1   (2007-04-11 20:23:00) [10]


> >> тоже самое
> > тогда, имхо, дело в провайдере данных.

не-а :) глюк в ADO а именно с параметрами. Если сделать через датасет, то все будет ОК.


sniknik   (2007-04-11 16:47:00) [11]

>> помогло?
> нет конечно

>> тоже самое
> тогда, имхо, дело в провайдере данных.


elserpiente   (2007-04-11 15:25:00) [12]


> помогло?

нет конечно


sniknik   (2007-04-11 13:49:00) [13]

> В первом 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], только надо присвоить.

помогло?


Desdechado   (2007-04-11 13:43:00) [14]

sniknik ©   (11.04.07 13:39) [9]
В первом DATE тождественен TIMESTAMP из третьего. Никаких других дато/временных типов в первом больше нет.


sniknik   (2007-04-11 13:39:00) [15]

> Зависит от диалекта БД.
намекаешь на первый? но там вроде нет типа полей Timestamp только либо дата либо тайм... или я путаю? (не работаю с IB/FB, практически не знаю...)


sniknik   (2007-04-11 13:36:00) [16]

> видать ошибка в синтаксисе.
а. ну понятно, ты же его привел в кавычках, а это переменная
итого 'NOW' = CURRENT_TIMESTAMP
вот как есть, без убирания кавычек в одном случае и добавления в другом...


Desdechado   (2007-04-11 13:36:00) [17]

> в ФБ нет "NOW",в ФБ есть "current_timestamp".
Зависит от диалекта БД.


sniknik   (2007-04-11 13:29:00) [18]

> тоже самое
тогда, имхо, дело в провайдере данных.

во всяком случае у меня означенный запрос с параметром работает, и время не режет.

> в ФБ нет "NOW",в ФБ есть "current_timestamp".
странно, но у меня есть... впрочем про current_timestamp тоже слышал, но вот прямо счас не работает, видать ошибка в синтаксисе.


elserpiente   (2007-04-11 13:11:00) [19]


> перепиши на ...

тоже самое
> в FB есть 'NOW'

в ФБ нет "NOW",в ФБ есть "current_timestamp".


sniknik   (2007-04-11 12:58:00) [20]

и кстати можно обойтись вообще без параметра в FB есть 'NOW' возвращающая текущее време... ну если конечно не нужно время именно клиента.


Страницы:   1 2

Наверх

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