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

Вниз

TQuery и параметры   Найти похожие ветки 

 
Gaber ©   (2002-09-18 14:44) [0]

Хотел сделать поиск, такой чтоб находил подразделения по введеному в Edit1 или выдавал все надписи, запускаю, найти введеную:
Query1.Close;
Query1.Prepare;
Query1.Params[0].AsString:=Edit1.Text;
Query1.Open;
выдает все правильно, нажимаю показать все:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("select * from podr");
Query1.Open;
выдает все правильно, нажимаю опять искать введеную:
выдает ошибку,
List index out of bounds(0)
Что это?
Если нажать показать все, то выводит все, а по поиску ошибка.

И еще в догонку, хотел разабраться с параметрами и обнаружил, что если в методе SQL у Query пусто то метод Params тоже пустой, может быть я говорю чушь, но в метод Params ничего не добавить.
Как быть, если я хочу использовать разные запросы, которые буду формировать в процессе программы, как назначать Params, или надо тогда юзать ParamByName?


 
Lord Warlock ©   (2002-09-18 14:51) [1]

Ругается правильно, при втором варианте запроса параметра нет, и при попытке присвоить значение несуществующему элементу вываливантся ошибка.

чтобы работало нормально, перед этим :

Query1.Close;
Query1.Prepare;
Query1.Params[0].AsString:=Edit1.Text;
Query1.Open;

вставь заполнение запроса SQL с параметром


 
Lord Warlock ©   (2002-09-18 14:55) [2]

Насчет Params и ParamByName: использовать можно и тот и другой в любых случаях, дело вкуса

пишешь запрос:

Query1.SQL.Add("select * from podr");
Query1.SQL.Add("where a=:Param1 and b=:Param2");

Задать значения параметрам можно так:

Query1.Params[0].AsString:=Edit1.Text;
Query1.Params[1].AsString:=Edit2.Text;
Query1.ParamByName("Param1").AsString:=Edit1.Text;
Query1.ParamByName("Param2").AsString:=Edit2.Text;



 
Gaber ©   (2002-09-18 15:16) [3]

Спасибо за ответ, но подскажите еще раз на счет ругани, что надо вставить перед ...?


 
Lord Warlock ©   (2002-09-18 15:22) [4]

Перед надо вставить тот запрос, в котором у тебя был параметр
Наверняка ты его написал в свойстве SQL...


 
Gaber ©   (2002-09-18 17:02) [5]

Спасибо за совет про параметры,
Теперь я сделал так:

procedure TPPodr.Button1Click(Sender: TObject);
begin
Query1.SQL.Add("select * from podr");
Query1.SQL.Add("where NamePodr=:Param1");
Query1.Params[0].AsString:=Edit1.Text;
Query1.Open;
end;

Но теперь если опять вызвать все записи, а потом опять вызвать определенную все виснет. =(


 
Lord Warlock ©   (2002-09-18 17:10) [6]

:)))

procedure TPPodr.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;

Query1.SQL.Add("select * from podr");
Query1.SQL.Add("where NamePodr=:Param1");
Query1.Params[0].AsString:=Edit1.Text;
Query1.Open;
end;



 
ЮЮ ©   (2002-09-19 03:52) [7]

>И еще в догонку, хотел разабраться с параметрами и обнаружил, что если в методе SQL у Query пусто то метод Params тоже пустой, может быть я говорю чушь, но в метод Params ничего не добавить.
Как быть, если я хочу использовать разные запросы, которые буду формировать в процессе программы, как назначать Params, или надо тогда юзать ParamByName?

Естественно, при изменении Query.SQL изменяется и Params, ведь Params определяется текстом запроса Query.SQL.
Не обязательно ParamByName, можно и Params[Индекс], если параметры определяются непосредственно после формированмя текста запроса. Если же код работает с неизвестным кол-вом параметров, то ParamByName, проверяя возвращаемое значение на nil



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
1-31780
Driver
2002-10-01 15:36
2002.10.10
Мужики, выручайте... Как заставить THintWindow получать сообщения


6-31928
VARVAR
2002-08-11 20:18
2002.10.10
Получить MAC-адреса по известным IP в локальной сети


3-31669
dim-
2002-09-18 14:47
2002.10.10
Пользователь в ADOConnection


3-31642
Виталий Панасенко
2002-09-19 18:00
2002.10.10
Скорость выполнения запроса


1-31704
Romikadze
2002-09-30 18:53
2002.10.10
Полупрозрачная форма