Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1140079974
Daria
2006-02-16 11:52
2006.03.05
посчитать максимольное количество строк для разбивки ячейки


3-1134547301
Alex_1234
2005-12-14 11:01
2006.03.05
TADOQuery, тип поля DATE, параметр ????


15-1139494192
ZeroDivide
2006-02-09 17:09
2006.03.05
Лена Воронова отдыхает...


2-1140350444
JEK2
2006-02-19 15:00
2006.03.05
как организовать сортировку в БД по полю


2-1140088376
Id
2006-02-16 14:12
2006.03.05
TIBBlobStream





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