Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

Параметрический запрос   Найти похожие ветки 

 
alex-ran   (2003-08-26 12:07) [0]

Уважаемые мастера, помогите плиз, если пишу запрос в одну строку то все ОК, а если несколько строк то вылетаю с сообщением: "Field "pPeriod" is of an unknown type". Вот кусок кода:

qrClients:=TQuery.Create(Self);
with qrClients do
begin
Active := False;
with Params.CreateParam(ftString,"pPeriod",ptInput) do asString:="0307";
DatabaseName := "UMC";
SQL.Clear;
SQL.Add("SELECT FIO, NTel, StatUser FROM Clients");
SQL.Add("INNER JOIN Account ON (Clients.NTel = Account.NTel)");
SQL.Add("WHERE Account.Period=:pPeriod");
SQL.Add("ORDER BY Clients.StatUser");
Prepare;
// SQL.Add("SELECT FIO, NTel, StatUser FROM Clients INNER JOIN Account ON (Clients.NTel = Account.NTel) WHERE Account.Period=:pPeriod ORDER BY Clients.StatUser"); - если так то все ОК!
Active := True;
First;
end;

Почему так происходит? Помогите разобраться.


 
Reindeer Moss Eater ©   (2003-08-26 12:09) [1]

Происходит так потому, что пробелов между словами не хватает


 
LVitaliy ©   (2003-08-26 12:10) [2]

Попробуй поставить пробелы в конце
SQL.Add("SELECT FIO, NTel, StatUser FROM Clients ");


 
LVitaliy ©   (2003-08-26 12:12) [3]

Попробуй поставить пробелы в конце вообще проблем не должно быть
SQL.Add("SELECT FIO, NTel, StatUser FROM Clients ");


 
Е-Моё имя ©   (2003-08-26 12:17) [4]

а чо, для парадокса #13#10 не разделитель?


 
alex-ran   (2003-08-26 12:18) [5]

Пробовал и спереди и сзаду :) - не помогает, и, по-моему это достаточно логично - зачем пробел, если новая строка?


 
Danilka ©   (2003-08-26 12:19) [6]

alex-ran (26.08.03 12:07)
перед
prepare;
напиши:
ShowMessage(IntToStr(params.Count));

:))


 
Danilka ©   (2003-08-26 12:21) [7]

вернее не так, когда ты сделал SQL.Clear; твои параметры пибились, потом, после SQL.Add опять появились но с неизветсным типом, вобщем, побежал я водку пить, сам разберешся..


 
Соловьев ©   (2003-08-26 12:23) [8]


> Active = true;

а где идет присвоение параметров?


 
alex-ran   (2003-08-26 12:38) [9]

По совету Danilka перенес строку
with Params.CreateParam(ftString,"pPeriod",ptInput) do asString:="0307";
после последнего SQL.Add
Но теперь ошибка: Could not find object


 
Zacho ©   (2003-08-26 12:44) [10]

Да вообще не нужно Params.CreateParam вызывать.

Parameters for datasets that represent queries are only created by specifying parameters in the SQL statement. The TParam objects in such as dataset’s Params property are created automatically when parameter tokens are added to the SQL statement.


 
alex-ran   (2003-08-26 12:47) [11]

Zacho © Спасибо, заработало.
Только интересно узнать почему при явном вызове CreateParam получаются такие грабли?


 
Danilka ©   (2003-08-26 13:06) [12]

alex-ran (26.08.03 12:47)
параметры создаются сами, когда делаешь sql.add(...),
или sql.text = ...
Если в тексте встречается :NAME, создается параметр с именем NAME и неизвестным типом, поэтому нет нужды в CreateParam, вернее есть, но для чего именно я так, навскидку, после водки, не могу вспомнить. :))


 
Hawk2 ©   (2003-08-26 15:30) [13]

Danilka © (26.08.03 13:06) [12] > Но для чего именно я так, навскидку, после водки, не могу вспомнить. :))

Parameters for datasets that represent queries are only created by specifying parameters in the SQL statement. :-)



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

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-48618
Relaxxx
2003-09-02 11:52
2003.09.15
Нащет StringGrid


14-48767
Yuraz
2003-08-25 17:01
2003.09.15
Имеюшим быстрый инет! Хотелось бы получить архивы всех форумов


1-48603
AlexPul
2003-09-03 13:02
2003.09.15
Кодировка в консольных приложениях


1-48491
ЮРИЙ_К
2003-09-03 12:06
2003.09.15
Как привязаться к относительным координатам ветки дерева TreeView


7-48818
Kalifen
2003-07-01 19:09
2003.09.15
Контроль печати.