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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
14-48691
Igor__
2003-08-25 17:52
2003.09.15
Подключение двух ПК через модем


1-48565
BOA_KAA
2003-09-04 11:53
2003.09.15
Опять PowerPoint


3-48415
Алексей Петухов
2003-08-25 09:28
2003.09.15
Инсталяция BDE


3-48473
deadman
2003-08-19 16:40
2003.09.15
база и сервис NT


1-48645
Skif
2003-09-03 05:19
2003.09.15
Пробег по компонентам





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