unit Unit1chaxun;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DBCtrls, DB, ADODB;type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    DBGrid1: TDBGrid;
    ComboBox1: TComboBox;
    rgfieldnames: TRadioGroup;
    btnsearch: TButton;
    ADODataSet2: TADODataSet;
    procedure ADODataSet1AfterOpen(DataSet: TDataSet);
    procedure rgfieldnamesClick(Sender: TObject);
    procedure btnsearchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ADODataSet1AfterOpen(DataSet: TDataSet);
begin
  fillfieldnames;
  fillsearchvalues;
end;procedure TForm1.fillfieldnames;
var
  icount:integer;
begin
  rgfieldnames.items.clear;
  for icount:=0 to ADODataset1.fields.count - do
  begin
    rgfieldnames.items.add(ADODataset1.fields[icount].fieldname);
  end;
    rgfieldnames.itemindex:=0;
end;procedure TForm1.fillsearchvalues;
begin
  try
    ADODataset2.close;
    ADODataset2.commandtext:='select distinct'+getsearchfield+'from customers';
    ADODataset2.open;
    cbsearchvalue.items.clear;
    while not ADODataset2.eof do
    begin
       cbsearchvalue.items.add(ADODataset2.fields[0].asstring);
       ADODataset2.Next;
    end;
  finally
    ADODataset2.close;
  end;
end;function TForm1.getsearchfield:string;
begin
  result:=ADODataset1.fields[rgfieldnames.itemindex].fieldname;
end;
  
procedure TForm1.rgfieldnamesClick(Sender: TObject);
begin
  fillsearchvalues;
end;procedure TForm1.btnsearchClick(Sender: TObject);
begin
  ADODataset1.Locate(getsearchfield,cbsearchvalue.text,
  [locaseinsensitive,lopartialkey]);
end;procedure TForm1.btnMultiSearchClick(Sender: TObject);
begin
   ADODataset1.Locate('city,country',VarArrayOf([edit1.Text,edit2.Text]),
   [locaseinsenvitive,lopartialkey]);
end;end.[Error] Unit1chaxun.pas(44): Undeclared identifier: 'fillfieldnames'
[Error] Unit1chaxun.pas(45): Undeclared identifier: 'fillsearchvalues'
[Error] Unit1chaxun.pas(48): Undeclared identifier: 'fillfieldnames'
[Error] Unit1chaxun.pas(52): Undeclared identifier: 'rgfieldnames'
[Error] Unit1chaxun.pas(52): Missing operator or semicolon
[Error] Unit1chaxun.pas(53): Undeclared identifier: 'ADODataset1'
[Error] Unit1chaxun.pas(53): 'DO' expected but identifier 'fields' found
[Error] Unit1chaxun.pas(55): Missing operator or semicolon
[Error] Unit1chaxun.pas(57): Declaration expected but identifier 'rgfieldnames' found
[Error] Unit1chaxun.pas(58): '.' expected but ';' found
[Error] Unit1chaxun.pas(60): Undeclared identifier: 'fillsearchvalues'
[Error] Unit1chaxun.pas(63): Undeclared identifier: 'ADODataset2'
[Error] Unit1chaxun.pas(64): Undeclared identifier: 'getsearchfield'
[Error] Unit1chaxun.pas(66): Undeclared identifier: 'cbsearchvalue'
[Error] Unit1chaxun.pas(67): 'DO' expected but identifier 'eof' found
[Error] Unit1chaxun.pas(69): 'END' expected but ')' found
[Error] Unit1chaxun.pas(71): EXCEPT or FINALLY expected
[Error] Unit1chaxun.pas(72): 'END' expected but 'FINALLY' found
[Warning] Unit1chaxun.pas(75): Text after final 'END.' - ignored by compiler
[Error] Unit1chaxun.pas(26): Unsatisfied forward or external declaration: 'TForm1.rgfieldnamesClick'
[Error] Unit1chaxun.pas(27): Unsatisfied forward or external declaration: 'TForm1.btnsearchClick'
[Error] Unit1chaxun.pas(28): Unsatisfied forward or external declaration: 'TForm1.btnMultiSearchClick'