Главная страница
    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.47 MB
Время: 0.043 c
14-1116859334
TAHAT
2005-05-23 18:42
2005.06.14
Существуют ли компоненты для работы с архивами 7Zip?


1-1117115874
Mouserx
2005-05-26 17:57
2005.06.14
Полный путь к файлу


3-1115553366
SergeyPVC
2005-05-08 15:56
2005.06.14
После удаление размер БД не уменьшился... :(


3-1115389297
Karburator
2005-05-06 18:21
2005.06.14
(SQL) integer в дату


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