Problema com Listagem por Data
18/02/2013
0
procedure TF_ListaChqData.btn_PesqClick(Sender: TObject);
// COMANDO PARA SELECIONAR SOMENTE POR DATA //
var Inicio: String;
Final: String;
begin
If DateTimePicker2.Date < DateTimePicker1.Date Then
begin
ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!');
DateTimePicker2.Date := DateTimePicker1.Date;
end
else
begin
Inicio := DateToStr(DateTimePicker1.Date);
Final := DateToStr(DateTimePicker2.Date);
DM.Q_PesqChq.Close;
DM.Q_PesqChq.SQL.Clear;
DM.Q_PesqChq.SQL.Add('SELECT CODIGO, DATA_EMISSAO, DATA_VENCIMENTO, NUMCHEQUE, TITULAR, APELIDO_TITULAR, TEL_TITULAR, BANCO, AGENCIA, CONTA, VALOR, SITUACAO_CHQ, SACADOR, TEL_SACADOR, OBS FROM CHEQUES');
DM.Q_PesqChq.SQL.Add('WHERE DATA_VENCIMENTO >=:pInicio and DATA_VENCIMENTO<=:pFinal ORDER BY DATA_VENCIMENTO');
DM.Q_PesqChq.ParamByName('pInicio').Value := StrToDate(Inicio);
DM.Q_PesqChq.ParamByName('pFinal').value := StrToDate(Final);
// DM.Q_PesqChq.Prepared;//
DM.Q_PesqChq.Open;
DM.CDS_PesqChq.Open;
Label2.Caption := 'Total de Registros Localizados: ' + IntToStr(DM.Q_PesqChq.RecordCount)
end;
end;
Francielio Medeiros
Posts
18/02/2013
Rafael Cunha
procedure TF_ListaChqData.btn_PesqClick(Sender: TObject); begin If DateTimePicker2.Date < DateTimePicker1.Date Then begin ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!'); DateTimePicker2.Date := DateTimePicker1.Date; end else begin DM.Q_PesqChq.Close; DM.Q_PesqChq.SQL.Clear; DM.Q_PesqChq.SQL.Add('SELECT CODIGO, DATA_EMISSAO, DATA_VENCIMENTO, NUMCHEQUE, TITULAR, APELIDO_TITULAR, TEL_TITULAR, BANCO, AGENCIA, CONTA, VALOR, SITUACAO_CHQ, SACADOR, TEL_SACADOR, OBS FROM CHEQUES '); DM.Q_PesqChq.SQL.Add('WHERE DATA_VENCIMENTO between :dtInicial and :dtFinal ORDER BY DATA_VENCIMENTO'); DM.Q_PesqChq.ParamByName('pInicio').Value := DateTimePicker1.Date; DM.Q_PesqChq.ParamByName('pFinal').value := DateTimePicker2.Date; // DM.Q_PesqChq.Prepared;// DM.Q_PesqChq.Open; DM.CDS_PesqChq.Open; Label2.Caption := 'Total de Registros Localizados: ' + IntToStr(DM.Q_PesqChq.RecordCount) end; end;
18/02/2013
Joel Rodrigues
Por que você não passa para o parâmetro direto o valor dos DatePickers?
18/02/2013
Francielio Medeiros
Q_PesqChq:Parameter 'pInicial' Not Found.
18/02/2013
Joel Rodrigues
Basta usar os mesmos nomes.
18/02/2013
Francielio Medeiros
Conversion error from string "41319.87095906250"
18/02/2013
Rafael Cunha
18/02/2013
Joel Rodrigues
18/02/2013
Francielio Medeiros
como que posso fazer isso?
18/02/2013
Rafael Cunha
DM.Q_PesqChq.ParamByName('pInicio').Value := DateTimePicker1.Date; DM.Q_PesqChq.ParamByName('pFinal').value := DateTimePicker2.Date;
18/02/2013
Perivaldo Martins
DM.Q_PesqChq.ParamByName('pInicio').Value := DateTimePicker1.Date; DM.Q_PesqChq.ParamByName('pFinal').value := DateTimePicker2.Date;
Eu também concordo, ele poderia também fazer assim.
DM.Q_PesqChq.ParamByName('pInicio').asDate := DateTimePicker1.Date; DM.Q_PesqChq.ParamByName('pFinal').asDate := DateTimePicker2.Date;
Boa sorte e bons códigos!
18/02/2013
Joel Rodrigues
Você primeiramente converteu as datas para string:
Inicio := DateToStr(DateTimePicker1.Date); Final := DateToStr(DateTimePicker2.Date);
depois converteu de string para data:
DM.Q_PesqChq.ParamByName('pInicio').Value := StrToDate(Inicio); DM.Q_PesqChq.ParamByName('pFinal').value := StrToDate(Final);
O que nós estamos dizendo é pare você passar os valores para os parâmetros diretamente dos DatePickers, conforme foi sugerido acima:
DM.Q_PesqChq.ParamByName('pInicio').asDate := DateTimePicker1.Date; DM.Q_PesqChq.ParamByName('pFinal').asDate := DateTimePicker2.Date;
Abraço.
18/02/2013
Francielio Medeiros
#Código
procedure TF_ListaChqData.btn_PesqClick(Sender: TObject);
begin
If DateTimePicker2.Date < DateTimePicker1.Date Then
begin
ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!');
DateTimePicker2.Date := DateTimePicker1.Date;
end
else
begin
DM.Q_PesqChq.Close;
DM.Q_PesqChq.SQL.Clear;
DM.Q_PesqChq.SQL.Add('SELECT CODIGO, DATA_EMISSAO, DATA_VENCIMENTO, NUMCHEQUE, TITULAR, APELIDO_TITULAR, TEL_TITULAR, BANCO, AGENCIA, CONTA, VALOR, SITUACAO_CHQ, SACADOR, TEL_SACADOR, OBS FROM CHEQUES ');
DM.Q_PesqChq.SQL.Add('WHERE DATA_VENCIMENTO between :dtInicial and :dtFinal ORDER BY DATA_VENCIMENTO');
DM.Q_PesqChq.ParamByName('dtInicial').asDate := DateTimePicker1.Date;
DM.Q_PesqChq.ParamByName('dtFinal').asDate := DateTimePicker2.Date;
DM.Q_PesqChq.Prepared := True;
DM.Q_PesqChq.Open;
DM.CDS_PesqChq.Open;
Label2.Caption := 'Total de Registros Localizados: ' + IntToStr(DM.Q_PesqChq.RecordCount)
end;
end;
18/02/2013
Francielio Medeiros
esqueci de mencionar eu estou usando: SQLConnection1, TsqlQuery, TDataSetProvider, TclientDataset.
18/02/2013
Rafael Cunha
18/02/2013
Rafael Cunha
procedure TF_ListaChqData.btn_PesqClick(Sender: TObject); begin If DateTimePicker2.Date < DateTimePicker1.Date Then begin ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!'); DateTimePicker2.Date := DateTimePicker1.Date; end else begin DM.Q_PesqChq.Close; DM.Q_PesqChq.SQL.Clear; DM.Q_PesqChq.SQL.Add('SELECT CODIGO, DATA_EMISSAO, DATA_VENCIMENTO, NUMCHEQUE, TITULAR, APELIDO_TITULAR, TEL_TITULAR, BANCO, AGENCIA, CONTA, VALOR, SITUACAO_CHQ, SACADOR, TEL_SACADOR, OBS FROM CHEQUES '); DM.Q_PesqChq.SQL.Add('WHERE DATA_VENCIMENTO between :dtInicial and :dtFinal ORDER BY DATA_VENCIMENTO'); DM.Q_PesqChq.ParamByName('dtInicial').Value := DateTimePicker1.Date; DM.Q_PesqChq.ParamByName('dtFinal').value := DateTimePicker2.Date; // DM.Q_PesqChq.Prepared;// //DM.Q_PesqChq.Open; DM.CDS_PesqChq.Open; Label2.Caption := 'Total de Registros Localizados: ' + IntToStr(DM.CDS_PesqChq.RecordCount) end; end;
Espero que ajude.
Clique aqui para fazer login e interagir na Comunidade :)