Главная страница
    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.038 c
14-1116654893
petya-kurochkin
2005-05-21 09:54
2005.06.14
Курсоры(Обобщение)


8-1109687099
B-boy Dimo-N
2005-03-01 17:24
2005.06.14
Как вместо простого фона обычного окна сделать картинку ?


9-1110629897
nor
2005-03-12 15:18
2005.06.14
Какой язык выбрать ?


4-1114194670
Merl
2005-04-22 22:31
2005.06.14
Растягивание формы


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