Fórum Procedure Access / Firebird #53501

21/10/2005

0

Em um banco Access estou usando essa consulta: ´spApEnt´


SELECT OS, Codigo, Aparelho, Marca, Modelo, Numero, Entrada, Orcamento, Prometido, Saida, DtaExe
From tlbOrdemServ
GROUP BY OS, Codigo, Aparelho, Marca, Modelo, Numero, Entrada, Orcamento, Prometido, Saida, DtaExe
HAVING (((tlbOrdemServ.Aparelho) Like [Aparelho]) AND
((tlbOrdemServ.Marca) Like [Marca]) AND ((tlbOrdemServ.Modelo) Like [Modelo]) AND
((tlbOrdemServ.Entrada) Between [Inicio] And [Final]))
ORDER BY tlbOrdemServ.Entrada;


======================================================================================

E estou chamando assim:

begin

spApEntrada.Active := false;
spApEntrada.Parameters.Clear;
spApEntrada.ProcedureName := ´spApaEnt´;
spApEntrada.Parameters.Clear;

spApEntrada.Parameters.CreateParameter(´Aparelho´, ftString, pdInput, 30, 0);
spApEntrada.Parameters.CreateParameter(´Marca´, ftString, pdInput, 30, 0);
spApEntrada.Parameters.CreateParameter(´Modelo´, ftString, pdInput, 30, 0);
spApentrada.Parameters.CreateParameter(´Inicio´, ftDateTime, pdInput, 8, 0);
spApentrada.Parameters.CreateParameter(´Final´, ftDateTime, pdInput, 8, 0);
spApEntrada.Parameters.ParamByName(´Aparelho´).Value := Edit1.Text + ´¬´;
spApEntrada.Parameters.ParamByName(´Marca´).Value := Edit2.Text + ´¬´;
spApEntrada.Parameters.ParamByName(´Modelo´).Value := Edit3.Text + ´¬´;
spApEntrada.Parameters.ParamByName(´Inicio´).Value := mskInicio.Text;
spApEntrada.Parameters.ParamByName(´Final´).Value := mskFinal.Text;

spApEntrada.Open;

end;
====================================================================================
Como fazer um procedure no Firebird com esses parâmetros?
Desde já brigadão a quem ajudar-me.


Jose

Jose

Responder

Posts

22/10/2005

Afarias

o procedimento:


set term ^;

CREATE PROCEDURE spApEnt (
  inAparelho VARCHAR(?),  
  inMarca VARCHAR(?),
  inModelo VARCHAR(?), 
  inInicio DATE, 
  inFinal DATE) 
RETURNS (
  Os <tipo>, 
  Codigo <tipo>, 
  Aparelho <tipo>, 
  Marca <tipo>, 
  Modelo <tipo>, 
  Numero <tipo>, 
  Entrada <tipo>, 
  Orcamento <tipo>, 
  Prometido <tipo>, 
  Saida <tipo>, 
  DtaExe <tipo>) 
AS BEGIN
  
  FOR SELECT Os, Codigo, Aparelho, Marca, Modelo, Numero, Entrada, 
       Orcamento, Prometido, Saida, DtaExe FROM tlbOrdemServ 
       WHERE Aparelho STARTING :inAparelho 
       AND Marca STARTING :inMarca
       AND Modelo STARTING :inModelo
       AND Entrada BETWEEN :inInicio AND :inFinal
       ORDER BY Entrada 
       INTO :Os, :Codigo, :Aparelho, :Marca, :Modelo, :Numero, :Entrada, 
         :Orcamento, :Prometido, :Saida, :DtaExe DO 
         SUSPEND;

END^



a chamada no Delphi:

with IBQuery1 do
begin
  SQL.Clear;
  SQL.Add(´SELECT * FROM spApaEnt (´);
  SQL.Add(´:Aparelho, :Marca, :Modelo, :Inicio, :Final)´);

  ParamByName(´Aparelho´).AsString := Edit1.Text;
  ParamByName(´Marca´).AsString := Edit2.Text;
  ParamByName(´Modelo´).AsString := Edit3.Text;
  ParamByName(´Inicio´).AsDate := StrToDate(mskInicio.Text);
  ParamByName(´Final´).AsDate := StrToDate(mskDate.Text);

  Open;
end;



T+


Responder

Gostei + 0

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

Aceitar