function BuscaValorEmTodosCamposTabela(conexao : TSQLConnection;
Tabela,Busca : String) : TStringList;
var
Query : TSQLQuery;
qryPesq : TSQLQuery;
begin
Result := TStringList.Create;
Query := TSQLQuery.Create(nil);
qryPesq := TSQLQuery.Create(nil);
Query.SQLConnection := conexao;
qryPesq.SQLConnection := conexao;
Query.SQL.Add('Select R.Rdb$Relation_Name, R.Rdb$Field_Name');
Query.SQL.Add('from rdb$Relation_Fields R, RDB$FIELDS F');
Query.SQL.Add('where F.rdb$field_name=R.Rdb$field_source');
// AQUI SE VC PREFERIR VC PODE COLOCAR O NOME DA TABELA PARA IR
// MAIS RAPIDO
// SE FOR * ELE PESQUISA EM TODAS AS TABELA DO BANCO
if Tabela <> '*' then
Query.SQL.Add('and R.Rdb$Relation_Name = '+QuotedStr(Tabela));
Query.SQL.Add('order by R.rdb$field_position, R.rdb$field_name');
Query.Open;
while not Query.Eof do
begin
qryPesq.Close;
qryPesq.SQL.Clear;
qryPesq.SQL.Add('select first 1 '+Query.Fields[1].AsString+
' from '+Query.Fields[0].AsString);
qryPesq.SQL.Add('where '+Query.Fields[1].AsString+' like '+
QuotedStr('%'+Busca));
qryPesq.Open;
if not qryPesq.IsEmpty then
Result.Add('Tabela: '+Query.Fields[0].AsString+' campo: '+
Query.Fields[1].AsString);
Query.Next;
end;
Query.Close;
qryPesq.Close;
FreeAndNil(Query);
FreeAndNil(qryPesq);
end;
Como ela retorna uma String List você pode colocar um Memo
para receber esse valor
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.AddStrings(BuscaValorEmTodosCamposTabela(SQLConnection1,
'CLIENTE','RAFAEL'));
end;
Nenhum comentário:
Postar um comentário