![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический запрос к таблице acess [D6, access]
Leons © (2004-08-09 13:55:00)Не работает динамический запрос. Хотя вроде все верно. Пишет неправильно определен объект Параметр... Как его тогда правильно определить? Где и что поставить?
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Kods where like:=k');
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
Sergey13 (2004-08-09 15:50:00) [1]2[35] Leons (09.08.04 15:44)
Ну для аксеса то это по барабану вроде, что с ними что без них. Но разобраться то не мешало бы.
Leons (2004-08-09 15:44:00) [2]Работает на УРА. ОГРОМНОЕ СПАСИБО 46_55_41_44
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Kods where Kod like ' + #39 + '%' + Edit1.Text + '%' + #39; );
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
и все... никаких тебе параметров не надо!!!!!1
46_55_41_44 (2004-08-09 15:41:00) [3]сделай как показал в этом примере - 46_55_41_44 © (09.08.04 15:39) [32]
и скажи ответ!
Соловьев (2004-08-09 15:39:00) [4]
> DOQuery1.Parameters.ParamByName('K').Value := #39 + Edit1.Text
> + #39;
> Сделай
> ADOQuery1.Parameters.ParamByName('K').Value := #39 + '%'
> + Edit1.Text + '%' + #39;
бред седой кобылы
Если параметры используешь - не надо обрамлять значение кавычками для строковых полей.
46_55_41_44 (2004-08-09 15:39:00) [5]Слушай, чего ты мучаешься?
Сделай вот так:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Kods where Kod like ' + #39 + '%' + Edit1.Text + '%' + #39; );
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
и все... никаких тебе параметров не надо!!!!!1
Sergey13 (2004-08-09 15:38:00) [6]2[30] Leons (09.08.04 15:33)
С учетом регистра?
Leons (2004-08-09 15:33:00) [7]Изменил. Но все равно результат выборки равен 0. Значение брал, которое точно есть.
46_55_41_44 (2004-08-09 15:30:00) [8]Так... вот сдвинулись с места!
Просто набери такое значение в Edit1.Text, на которое хоть что-то похоже в поле! ))))
А потом вместо:
ADOQuery1.Parameters.ParamByName('K').Value := #39 + Edit1.Text + #39;
Сделай
ADOQuery1.Parameters.ParamByName('K').Value := #39 + '%' + Edit1.Text + '%' + #39;
Leons (2004-08-09 15:27:00) [9]Теперь не ругается, но результат выборки отсутствует.
46_55_41_44 (2004-08-09 15:18:00) [10]попробуй вот так:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
k:string;
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Kods where Kod like :k');
ADOQuery1.Parameters.ParamByName('K').Value := #39 + Edit1.Text + #39;
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
Leons (2004-08-09 15:10:00) [11]Тип поля - текстовый.
46_55_41_44 (2004-08-09 15:02:00) [12]Какого типа у тебя поле Kod?
Соловьев (2004-08-09 14:53:00) [13]procedure TForm1.SpeedButton1Click(Sender: TObject);
var
k:string;
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Kods where Kod like :k');
ADOQuery1.Parameters.ParamByName('K').Value := Edit1.Text;
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
Sergey13 (2004-08-09 14:53:00) [14]2[21] Соловьев © (09.08.04 14:38)
И я про то-же.
2[22] Leons (09.08.04 14:49)
А не надо в АДО (я не работал с ним) делать нечто вроде Add(Delete)Parameter? В ДОА например надо.
Leons (2004-08-09 14:49:00) [15]Все мои манипуляции с параметрами и сменами мест строк кода ни чего не дали. Все равно пишет - параметр К не найден.
Соловьев (2004-08-09 14:38:00) [16]
> А мне кажется для "похоже" не хватает некоторых символов.
> Хотя, с аксес я не работал, но сумнительно чтой-то.
для того чтобы искать в строке на "похоже" надо добавлять символы % или * в зависимости от провайдера
Соловьев (2004-08-09 14:37:00) [17]
> ADOQuery1.Parameters.ParamValues['K'] := k;
> ADOQuery1.SQL.Add('SELECT * FROM Kods where Kod like :k');
поменять местами
> Он же программно добавляет этот параметр!!! параметр не
> может там быть!!!
да, это я прогнал)
Leons (2004-08-09 14:36:00) [18]ADOQuery1.Parameters.ParamValues['K'] := k;
К - есть в Parameters, все равно ругается.
Вот весь код на последний момент
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
k:string;
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.Parameters.ParamValues['K'] := k;
ADOQuery1.SQL.Add('SELECT * FROM Kods where Kod like :k');
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
46_55_41_44 (2004-08-09 14:35:00) [19]
> Соловьев © (09.08.04 14:33) [16]
> кликни в инспекторе обьектов ADOQuery в поле Parameters
> - есть параметр k?
Он же программно добавляет этот параметр!!! параметр не может там быть!!!
Sergey13 (2004-08-09 14:33:00) [20]211] 46_55_41_44 © (09.08.04 14:28)
>нет... именно похоже )))
А мне кажется для "похоже" не хватает некоторых символов. Хотя, с аксес я не работал, но сумнительно чтой-то.