Показать сообщение отдельно
  #4  
Старый 28.11.2013, 21:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну брось еще один ADOQuery, подключи его (пусть это будет ADOQueryFind).
При клике на кнопку "Найти" напиши примерно такой код (имен полей не знаю, соотв, поставил по русски):

Код:
procedure Form1.btFindClick(Sender : TObject);
const
  cQuery = 'SELECT * FROM Таблица WHERE %s = ''%s''';
var
  sQuery : String;
  sField : String;
begin
  If rbLastName.Checked 
    Then sField := 'Фамилия'
    Else sField := 'Страна';
  sQuery := Format(cQuery,[sField,edFind.Text]);
  ADOQueryFind.SQL.Clear;
  ADOQueryFind.SQL.Add(sQuery);
  ADOQueryFind.Open;
end;

Это для точного сравнения.
Для точного сравнения без учета регистра, константу надо описать так:
Код:
const
  cQuery = 'SELECT * FROM Таблица WHERE UPPER(%s) = UPPER(''%s'')';

Для неточного сравнения (по началу строки), но с учетом регистра, надо сделать такую константу:
Код:
const
  cQuery = 'SELECT * FROM Таблица WHERE %s LIKE ''%s%''';
Ну, как убрать зависимости от регистра в последнем случае, сам сообразишь.


Но я бы все-равно лучше бы "сел" на OnFilterRecord. Так красивее получается И не нужен дополнительный грид.

ЗЫ. Все, дальше или в "Код на шару", или в "Работу".
Ответить с цитированием