Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизTADOQuery, тип поля DATE, параметр ???? Найти похожие ветки
← →
Alex_1234 © (2005-12-14 11:01) [0]Примитивщина, но не работает!!!!
Делаю так:
qDele.Close;
qDele.SQL.Clear;
qDele.SQL.Add("select max(npp) as MNPP from nchecks where data_post = :dp ");
qDele.Parameters.ParamByName("dp").Value:=DateTimePicker1.Date;
qDele.Open;
Матерится:Operator/operand type mismatch
Попытка вставить параметр напрямую в текст запроса:
qDele.SQL.Add("select max(npp) as MNPP from nchecks where data_post={"""+DateToStr(DateTimePicker1.Date)+"""}");
приводит к тому же результату.
Таблица FoxPro, поле data_post имеет тип DATE, строка подключения имеет вид:
if dbMyDB.Connected=true then dbMyDB.Connected:=false;
dbMyDB.ConnectionString:=
"DSN=Таблицы Visual FoxPro;UID=;PWD=;SourceDB="+
PathBD+";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;"+
"Collate=Machine;Null=Yes;Deleted=Yes;";
ЧТО Я НЕ ТАК ДЕЛАЮ???
← →
Sergey13 © (2005-12-14 11:22) [1]qDele.Parameters.ParamByName("dp").asDate:=DateTimePicker1.Date;
не поможет?
← →
Alex_1234 © (2005-12-14 11:26) [2]Для TADOQuery.Parameters.ParamByName("") НЕТ свойств как у BDE-ного запроса вида AsString,AsDate и т.д. , а только .Value..
← →
Sergey13 © (2005-12-14 11:33) [3]2[2] Alex_1234 © (14.12.05 11:26)
А явно указать тип параметра можно?
← →
Alex_1234 © (2005-12-14 11:43) [4]Победил следующим макаром:
qDele.SQL.Add("select max(npp) as MNPP from nchecks where data_post=:dp");
DataVstavki:=DateTimePicker1.Date;
qDele.Parameters.ParamByName("dp").Value:=DataVstavki;
то есть: УБРАЛ ПРОБЕЛ перед двоеточием, и завел переменную DataVstavki типа TDateTime. Все заработало. Если пробел оставить - дает туже ошибку....
Из-за чего весь сыр-бор - НИЧЕГО НЕ ПОНИМАЮ!!!!
(жалко нельзя сделать хотя-бы 20 шрифт :-) )
← →
Vlad © (2005-12-14 12:24) [5]
> Alex_1234 © (14.12.05 11:43) [4]
да, я тоже натыкался на подобные штуки в ADO
Борол взятием параметра в скобки
...= (:param)
← →
sniknik © (2005-12-14 12:30) [6]Sergey13 © (14.12.05 11:33) [3]
> А явно указать тип параметра можно?
можно, но чаще всего не нужно т.к. Value метод вариантного типа то информация о типе в нем есть, а когда с конкретного присвоение идет то автопреобразование эту инфу в него запишет, а уж метод setvalue(так кажется) установит тип параметра по нему.
Alex_1234 © (14.12.05 11:43) [4]
не понятно, должно правильно работать... но может компилятор "запутался" в типах > DateTimePicker1.Date - TDate - TDateTime
(не разобрал что TDate в действительности это TDateTime)
попробуй явно указать, что за тип передается
qDele.SQL.Add("select max(npp) as MNPP from nchecks where data_post=:dp");
qDele.Parameters.ParamByName("dp").Value:= TDateTime(DateTimePicker1.Date);
и потом точное сравнение в запросе... для дататайма... нехорошо (в поле то только дата. нет?). может там время у тебя вмешивалось, т.е.
еще лучше тогда делай так
qDele.Parameters.ParamByName("dp").Value:= TDateTime(Trunc(DateTimePicker1.Date));
ну а про пробел в конце... не знаю с чем связано но тоже "нарывался", если параметр последний в запросе то его не определяло (или не правильно определяло, не помню уже) именно последний...
т.е. если сделать например (просто условие чтобы параметр не был последним)
qDele.SQL.Add("select max(npp) as MNPP from nchecks where data_post = :dp or .T.");
то все "пахало", независимо от пробела. (есть время разбираться? тогда когда закончиш скажеш в чем дело)
← →
Alex_1234 © (2005-12-14 13:11) [7]Уже заработало и ушло на клиентские машины....
Именно как я писал: без пробела и с промежуточной переменной....
← →
Dell3r © (2006-01-07 15:30) [8]Может и мне поможете. Все перепробовал. Никак.
SELECT * FROM Data WHERE
Name<>""
and
(Dataiz>=:datain and Dataiz<=:dataout)
and
Tip<>""
DataType=ftDateTime. Value.Type=Date;
Не соответствие типов говорит.
← →
tech © (2006-01-08 01:06) [9]qDele.SQL.Add("select max(npp) as MNPP from nchecks where data_post = :dp ");
qDele.Parameters.ParamByName("dp").Value:=DateTimePicker1.Date;
Очень похоже, что присваивание значения параметру в НОВОМ запросе можно делать (по хорошему) только после
qDele.Prepare;
иначе будут выполняться методы для "неопределенного" типа параметра, а для даты это, возможно, не годится.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c