Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.052 c
2-1181568479
Cardinalius
2007-06-11 17:27
2007.07.08
Проблема с ООП.


15-1180739061
Kostafey
2007-06-02 03:04
2007.07.08
С днем рождения ! 2 июня


4-1169645797
PVN
2007-01-24 16:36
2007.07.08
Как узнать, какая раскладка клавы в данный момент активна?


2-1181826144
SunriseGirl
2007-06-14 17:02
2007.07.08
коды клавиш в Delphi


2-1181992506
Delon
2007-06-16 15:15
2007.07.08
Как разобрать файл (txt), выделив информацию





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский