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.
Aloisio Santos

Aloisio Santos

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

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar