Form de Consulta , usando data erro no meu Parâmetro

30/05/2008

1

Caros Amigo....
Se alguem puder me Ajudar ficarei grato!!

Bom eu Tenho um formulario de Pesquisa onde eu tenho um dbGrid , logo em baixo eu tenho 2 DateTimePiker um para inicio e outro para fim.

estou usando o seguinte Código!!

procedure TfrmPesqDoc.btnProcessarClick(Sender: TObject);
var
Inicio : string;
Final: string;
begin
If dtpFim.Date < dtpInicio.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
dtpFim.Date := dtpInicio.Date;
end
Else
begin
Inicio := DateToStr(dtpInicio.Date);
Final := DateToStr(dtpFim.Date);
sqlCadDoc.Close;
sqlCadDoc.SQL.Clear;
sqlCadDoc.SQL.Text := ´SELECT * FROM CAD_DOCUMENTOS WHERE DATA_EMISS >=:pInicioa and DATA_EMISS <=:pFinal ORDER BY DATA_EMISS ´;
sqlCadDoc.ParamByName(´pInicial´).AsDateTime := strtodate(Inicio);
sqlCadDoc.ParamByName(´pFinal´).Asdatetime := strToDate(Final);
sqlCadDoc.Open;
end;
//textar se o resultado da SQL é vazio.
if sqlCadDoc.RecordCount = 0 then
begin
ShowMessage (´Não Foram Localizados Documentos Neste Periodo!´);
abort;
end;

só que ta dando o seguinte erro:
´sqlCadDoc: Parameter ´pInicial´ not found´

o parâmetro que uso na sql é esse:
select R.NOME ,DOC.DATA_CAD, DOC.TIPO, DOC.assunto, DOC.data_emiss, DOC.decla_cont, DOC.especificacao, DOC.pessoa_emiss
FROM CAD_DOCUMENTOS DOC, REMETENTE R
WHERE DOC.ID_COD_REMET = R.ID_CODIGO

Por favor me ajuda ai se puder!
Obrigado


Responder

Posts

30/05/2008

Eniorm

1) vc usa o banco Firebird?
2) como está definido o seu campo data: date, datetime, timestamp?

algumas coisas no seu código vc pode mudar, por exemplo

não precisa declarar as variáveis string: Inicio, Final, faça assim:

sqlCadDoc.ParamByName(´pInicial´).[b:65252ef52b]AsDate[/b:65252ef52b] := [b:65252ef52b]dtpInicio.Date[/b:65252ef52b];
sqlCadDoc.ParamByName(´pFinal´).[b:65252ef52b]AsDate[/b:65252ef52b] := [b:65252ef52b]dtpFim.Date[/b:65252ef52b];


Responder

30/05/2008

Eniorm

outra coisa que vi foi que, a menos que vc errou na hora de escrever o post, os nomes de parâmetros estão diferentes

SELECT * FROM CAD_DOCUMENTOS WHERE DATA_EMISS >=[b:0513a886d7]:pInicioa[/b:0513a886d7] and DATA_EMISS <=:pFinal ORDER BY DATA_EMISS

sqlCadDoc.ParamByName(´[b:0513a886d7]pInicial[/b:0513a886d7]´).AsDateTime := strtodate(Inicio);


Responder