Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамический запрос к таблице acess [D6, access]


Страницы:   1 2

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)
>нет... именно похоже )))
А мне кажется для "похоже" не хватает некоторых символов. Хотя, с аксес я не работал, но сумнительно чтой-то.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо