Вопрос
Как сделать поиск в 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 Сообщество Чайников
Контактная информация