Fórum Reutilização de uma consulta. #599361
22/12/2018
0
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
+ 0Post 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
Gostei + 1
Mais Posts
24/12/2018
Claudio Andrade
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;
Gostei + 1
24/12/2018
Aloisio Santos
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)