Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

Запрос к MSSQL через ADOQuery c параметрами   Найти похожие ветки 

 
dmitry501 ©   (2005-05-06 11:08) [0]

Здравствуйте. Передаю запрос SQL серверу примерно вот так:
frmDM.queryAcc.SQL.Add("SELECT State, PavilionID, PacketType, CreateTime, TimeToCreate, TimetoSend, FileSize");
frmDM.queryAcc.SQL.Add("FROM DataPackets WHERE (CreateTime BETWEEN :p1 AND :p2) AND (PavilionID IN (:p3)) AND (State = :p4)");

frmDM.queryAcc.Parameters[0].DataType:= ftDate;
frmDM.queryAcc.Parameters[1].DataType:= ftDate;
frmDM.queryAcc.Parameters[2].DataType:= ftString;
frmDM.queryAcc.Parameters[3].DataType:= ftString;

frmDM.queryAcc.Parameters[0].Value := dtpBegin.Date;
frmDM.queryAcc.Parameters[1].Value := dtpEnd.Date;
frmDM.queryAcc.Parameters[2].Value := "7, 8";
frmDM.queryAcc.Parameters[3].Value := "2";


При выполнении ругается - "Syntax error converting the varchar value "7, 8" to a column of data type int"
Причем в Enterprise Manager запрос

SELECT     State, PavilionID, PacketType, CreateTime, TimeToCreate, TimetoSend, FileSize
FROM         DataPackets
WHERE     (CreateTime BETWEEN " 05/05/ 2005 " AND " 05/06/ 2005 ") AND (PavilionID IN (7; 8)) AND (State = 2)

нормально возвращает строки.
Ткните, пожалуйста, носом а ошибку....


 
Nikolay M. ©   (2005-05-06 11:13) [1]


> Ткните, пожалуйста, носом а ошибку....



>  IN (:p3)


> frmDM.queryAcc.Parameters[2].Value := "7, 8";

Через параметры не прокатит.


 
Johnmen ©   (2005-05-06 11:15) [2]

Устойчивая тема :)
Фактически :p3 не параметр, а макроподстановка. Делай выводы...


 
Ozone ©   (2005-05-06 11:16) [3]

>  [1] Nikolay M. ©   (06.05.05 11:13)

В Oracle такая конструкция прокатывала


 
dmitry501 ©   (2005-05-06 11:18) [4]

Что ж, спасибо. Жаль.


 
Polevi ©   (2005-05-06 11:18) [5]

frmDM.queryAcc.Parameters[2].Value := QuotedStr("7, 8");


 
Polevi ©   (2005-05-06 11:19) [6]

ups, sorry


 
Danilka ©   (2005-05-06 11:20) [7]

[3] Ozone ©   (06.05.05 11:16)
нет, не прокатывала.

а по теме, твой запрос с параметрами и вот-этот:
SELECT     State, PavilionID, PacketType, CreateTime, TimeToCreate, TimetoSend, FileSize
FROM         DataPackets
WHERE     (CreateTime BETWEEN " 05/05/ 2005 " AND " 05/06/ 2005 ") AND (PavilionID IN (7; 8)) AND (State = 2)


это две разные вещи. запусти Profiler и увидишь, что на самом деле уходит на сервер.


 
dmitry501 ©   (2005-05-06 11:35) [8]

Да, спасибо, посмотрел.

SET FMTONLY ON select CreateTime,CreateTime,PavilionID,State from  DataPackets SET FMTONLY OFF

SET FMTONLY ON SELECT State, PavilionID, PacketType, CreateTime, TimeToCreate, TimetoSend, FileSize
FROM DataPackets WHERE (CreateTime BETWEEN "01-01-1992 01:01:01:000" AND "01-01-1992 01:01:01:000") AND (PavilionID IN (0)) AND (State = 0)
SET FMTONLY OFF

exec sp_executesql N"SELECT State, PavilionID, PacketType, CreateTime, TimeToCreate, TimetoSend, FileSize
FROM DataPackets WHERE (CreateTime BETWEEN @P1 AND @P2) AND (PavilionID IN (@P3)) AND (State = @P4)
", N"@P1 datetime,@P2 datetime,@P3 varchar(6),@P4 varchar(4)", "May  4 2005  1:51:40:000PM", "May  4 2005  1:52:03:000PM", """7, 8""", "2"


Кроме всего прочего, еще и в дату не преобразовал, а  оставил DateTime....



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.048 c
3-1115273353
Mr.F
2005-05-05 10:09
2005.06.14
Построение дерева из базы данных


1-1117285735
Malenkii Myk
2005-05-28 17:08
2005.06.14
Программа удаляет саму себя. Реально ?


14-1116855042
blackman
2005-05-23 17:30
2005.06.14
Ничего не понимаю. Просветите...


4-1114250886
Керик
2005-04-23 14:08
2005.06.14
SHBrowseForFolder


14-1116786734
Gero
2005-05-22 22:32
2005.06.14
Явное обострение





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