СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как сделать поиск в ADO?

Делаю так:
ADOTable1.Locate('Name', VarArrayOf(['Clients']),[loPartialKey]);

Должна находится запись 'Clients' в поле 'Name' , но эта запись не выделяется. Курсор так же и стоит на первой записи.

В чем тут дело?

Ответ

Возможно проблема в VarArrayOf(), разбираться, почему не работает не хочется, вот кусок кода который работает:

В процедуру передается Имя поля в котором мы будем искать значение.

procedure TfrmListEdit.SearchIn(DisplayName: String);
var SStr: string;
begin InputQuery('Поиск', 'поиск по столбцу [' + DisplayName + ']', SStr);
if Length(SStr) > 0 then if not ADOTable.Locate(DisplayName, SStr, [loCaseInsensitive, loPartialKey])
then MainData.EAccessMsg(-1, 'Ничего не найдено', 'Поиск');
end;


Из конференции Expert_FAQ

Могу предложить следующий вариант может поможет.
На форму кинте Button и два поля Edit.
В Edit1 вводите по какому столбцу искать, а в Edit2 текст для поиска.

procedure TForm1.Button1Click(Sender: TObject);
var stolbec:string;
begin
stolbec:=Edit1.Text;
adodataset1.close;
AdoDataset1.CommandText:='select * from ваша_таблица where ' + stolbec + '
like '+ QuotedStr(edit2.text);
adodataset1.Open;
end;


Так же можно использовать символ "%" для поиска по шаблону (можно ставить в начале и в конце слова, по середине ставить не пробовал может и получится не знаю), в Windows обычно используется "*".

rustik



Copyright © 2000-2004 Сообщество Чайников
Контактная информация