Reutilização de uma consulta.
22/12/2018
0
Boa tarde caros colegas,
Procurei aqui no fórum e não encontrei o que preciso especificamente e por isso venho até vocês.
Tenho uma consulta que deverei fazer exatamente da mesma forma em quase todos os forms do meu projeto. Acredito que seja possível através de uma FUNCTION, porém, não estou sabendo implementá-la.
A consulta segue este modelo:
dm_.FDQQuery.Close;
dm_.FDQQuery.SQL.Clear;
dm_.FDQQuery.SQL.Add(''select * from nomedatabela WHERE (nome = :iFunc)'');
dm_.FDQQuery.ParamByName(''iFunc'').AsString := CBLogin.Text;
dm_.FDQQuery.Prepare;
dm_.FDQQuery.Open;
Qual a forma mais correta de implementar esta ideia???
Agradeço antecipadamente à atenção de todos.
Att.
ALOISIO SANTOS.
Procurei aqui no fórum e não encontrei o que preciso especificamente e por isso venho até vocês.
Tenho uma consulta que deverei fazer exatamente da mesma forma em quase todos os forms do meu projeto. Acredito que seja possível através de uma FUNCTION, porém, não estou sabendo implementá-la.
A consulta segue este modelo:
dm_.FDQQuery.Close;
dm_.FDQQuery.SQL.Clear;
dm_.FDQQuery.SQL.Add(''select * from nomedatabela WHERE (nome = :iFunc)'');
dm_.FDQQuery.ParamByName(''iFunc'').AsString := CBLogin.Text;
dm_.FDQQuery.Prepare;
dm_.FDQQuery.Open;
Qual a forma mais correta de implementar esta ideia???
Agradeço antecipadamente à atenção de todos.
Att.
ALOISIO SANTOS.
Aloisio Santos
Curtir tópico
+ 0
Responder
Post mais votado
24/12/2018
1. Crie uma função.
Function Consultas_(Tabela, Campo : STRING; Valor:Variant):boolean; var Back:string; var Script:string; begin Back:= ' select * from XTable WHERE XCampo = '+'XValor'; Script:=Back; Script:= StringReplace(Script, 'XTable', Tabela, [rfReplaceAll, rfIgnoreCase]); Script:= StringReplace(Script, 'XCampo', Campo, [rfReplaceAll, rfIgnoreCase]); Script:= StringReplace(Script , 'XValor',Valor, [rfReplaceAll, rfIgnoreCase]); with dm.Qry_Herança do begin close; sql.Clear; SQL.Text:=Script; Clipboard.AsText:=Script; Prepare; Open; end; end;
Chamando a função em mais de um form, executando consultas diferentes .
Form1
Consultas_('mensalista_lancamento','IDMENSALISTA','1');
Form2
Consultas_('NS','NS','''AZAG3004659P5''');
Espero que ajude!!
Raimundo Pereira
Responder
Mais Posts
24/12/2018
Claudio Andrade
Pegando o gancho na função que o colega ai criou, tomei a liberdade de fazer com uma outra forma de implementação. Espero que ajude!
function Consultas_(Tabela, Campo : STRING; Valor:Variant): // coloque aqui o tipo do campo que deseja retornar begin try dm_.FDQQuery.Close; dm_.FDQQuery.SQL.Clear; dm_.FDQQuery.SQL.Text := Format(´select * from %s where %s = %s´, [Tabela, Campo, Valor]); // deverá fazer a conversão correta do VALOR, dessa forma aceita somente STRING dm_.FDQQuery.Open; finally Result := // coloque aqui o campo que vc quer retornar end; end;
Responder
24/12/2018
Aloisio Santos
Pegando o gancho na função que o colega ai criou, tomei a liberdade de fazer com uma outra forma de implementação. Espero que ajude!
function Consultas_(Tabela, Campo : STRING; Valor:Variant): // coloque aqui o tipo do campo que deseja retornar begin try dm_.FDQQuery.Close; dm_.FDQQuery.SQL.Clear; dm_.FDQQuery.SQL.Text := Format(´select * from %s where %s = %s´, [Tabela, Campo, Valor]); // deverá fazer a conversão correta do VALOR, dessa forma aceita somente STRING dm_.FDQQuery.Open; finally Result := // coloque aqui o campo que vc quer retornar end; end;
Galera, muito obrigado pela atenção... consegui resolver com uma aula do Rodrigo Mourão sobre métodos. Criei um método público dentro do form principal do projeto e chamei-o a partir dos outros formulários que precisavam da rotina.
Parece que as dicas acima fazem ainda um pouco mais do que eu precisava nesta situação, logo, vou dar uma analisada pois vejo uma outra utilização dela dentro do meu projeto. Agradeço de coração ao P2 Técnico e ao Cláudio Duarte pela ajuda.
No mais, Boas Festas e um 2019 transbordando de bençãos na vida de todos.
Responder
Clique aqui para fazer login e interagir na Comunidade :)