Busca Valor Em Todos Campos Tabela

Função que busca todos os campos da tabela para saber se ela tem determinado valor se ela encontrar ela retorna o nome do campo e o nome da tabela que tem o valor.

Vai a dica para quem quer saber, quais campos tem determinado valor, é uma função onde você passa a Conexão(TSqlConnection), nome da Tabela se for passado * ele vai pesquisar em todas tabela mais o processo é mais lento, e o campo Busca que é o que ele vai pesquisar dentro do campo.

<br><pre>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;</pre>

Como ela retorna uma String List você pode colocar um Memo
para receber esse valor

exemplo:

<br></p><pre>procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.AddStrings(BuscaValorEmTodosCamposTabela(SQLConnection1, 'CLIENTE','RAFAEL')); end;</pre>

ele pesquisaria em Todos os Campos da Tabela Cliente se tem
o nome RAFAEL

Artigos relacionados