var
sql,str: string;
i: integer;
begin
ListBox.Clear;
ListBox.Items.Add('數據庫'^I'表名'^I'字段名'^I'字段值');
sql:='select name from master..sysdatabases where name not in (''master'',''model'',''msdb'',''Northwind'',''pubs'',''tempdb'')';
ADOQDB.Close;
ADOQDB.SQL.Clear;
ADOQDB.SQL.Add(sql);
ADOQDB.Open;
ADOQDB.Next;
while not ADOQDB.Eof do
begin
sql:='select name,id from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..sysobjects where xtype=''U''';
ADOQTB.Close;
ADOQTB.SQL.Clear;
ADOQTB.SQL.Add(sql);
ADOQTB.Open;
while not ADOQTB.Eof do
begin
sql:='select name from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..syscolumns where id='+Trim(ADOQTB.FieldByName('id').AsString)+' and xtype in (167,175,231,239)';
ADOQFD.Close;
ADOQFD.SQL.Clear;
ADOQFD.SQL.Add(sql);
ADOQFD.Open;
while not ADOQFD.Eof do
begin
str:='';
for i:=0 to CheckListBox.Count-1 do
begin
if CheckListBox.Checked[i] then
str:=Trim(ADOQFD.FieldByName('name').AsString)+' like ''%'+CheckListBox.Items.Strings[i]+'%'' or ';
end;
if str='' then
exit;
str:=copy(str,1,length(str)-3);
sql:='select '+Trim(ADOQFD.FieldByName('name').AsString)+' from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..'+Trim(ADOQTB.FieldByName('NAME').AsString)+' where '+str;
ADOQ.Close;
ADOQ.SQL.Clear;
ADOQ.SQL.Add(sql);
ADOQ.Open;
while not ADOQ.Eof do
begin
ListBox.Items.Add(Trim(ADOQDB.FieldByName('NAME').AsString)+' '+Trim(ADOQTB.FieldByName('NAME').AsString)+' '+Trim(ADOQFD.FieldByName('NAME').AsString)+' '+Trim(ADOQ.FieldByName(Trim(ADOQFD.FieldByName('NAME').AsString)).AsString));
ListBox.Update;
ADOQ.Next;
end;
ADOQFD.Next;
end;
ADOQTB.Next;
end;
ADOQDB.Next;
end;
showmessage('檢索完畢');
end;