Fórum Como Usar o TdateTimePicker Para Filtrar Datas e visualiza-las em um FrxReport.. #536244
02/11/2015
0
Valsistemasdelphi
Curtir tópico
+ 0Posts
03/11/2015
Raimundo Pereira
CONV_DE:STRING;
CONV_ATE:STRING;
SCRIPT_SELECT:STRING;
BEGIN
CONV_DE:=DateToStr(DE_DATA.Date);//DE_DATA É O DATEPICKER QUE DEVE RECEBER A DATA INICIAL
CONV_ATE:=DateToStr(ATE_DATA.Date);//ATE_DATA É O DATEPICKER QUE DEVE RECEBER A DATA FINAL
CONV_DE:=StringReplace(CONV_DE,'/','.', [rfReplaceAll, rfIgnoreCase]);
CONV_ATE:=StringReplace(CONV_ATE,'/','.', [rfReplaceAll, rfIgnoreCase]);
DM.SUA_QUERY.Active:=FALSE;
// MONTAGEM DO SELECT
SCRIPT_SELECT:='SELECT * FROM SUA_TABELA WHERE EMISSAO BETWEEN '''
+CONV_DE+''' AND '''
+CONV_ATE+''';'+
// FIM DO SELECT
DM.SUA_QUERY.SQL.TEXT:=SCRIPT_SELECT;
DM.SUA_QUERY.OPEN;
IF DM.SUA_QUERY.RECORDCOUNT=0 THEN
BEGIN
SHOWMESSAGE('NENHUM REGISTRO ENCONTRADO');
END
ELSE
BEGIN
FRX_SEU_REL.PREPAREREPORTS();
FRX_SEU_REL.SHOWREPORTS();
END;
END;
TESTA AI.
Gostei + 0
03/11/2015
Valsistemasdelphi
TDateTimePicker1:=DateToStr(TDateTimePicker1.Date);
TDateTimePicker2:=DateToStr(TDateTimePicker2.Date);
Gostei + 0
03/11/2015
Mateus Ribeiro
O erro acima é pq vc esta convertendo uma DATA para DATA... e isso não existe!
Poste seu SQL para que possamos ajudar de melhor forma!
Gostei + 0
03/11/2015
Raimundo Pereira
VAR
CONV_DE:STRING; //essa variável é usada para guardar as datas do datepicker (DE_DATA) para depois converte-las em data no formato SQL.
CONV_ATE:STRING;//essa variável é usada para guardar as datas do datepicker (ATE_DATA) para depois converte-las em data no formato SQL.
SCRIPT_SELECT:STRING;
Então recomece renomeado seu datepicker
TDateTimePicker1.name >>DE_DATA
TDateTimePicker2:name >>ATE_DATA
CONV_DE:=StringReplace(CONV_DE,'/','.', [rfReplaceAll, rfIgnoreCase]);// Aqui ele converte o conteúdo passado do datepicker DE_DATA para formato de data válido SQL
//Exemplo no datepicker a data é 03/11/2015 após a conversão fica 03.11.2015
//E ARMAZENA A DATA FORMATADA NA VARIÁVEL CONV_DE
CONV_ATE:=StringReplace(CONV_ATE,'/','.', [rfReplaceAll, rfIgnoreCase]);// Aqui ele converte o conteúdo passado do datepicker ATE_DATA para formato de data válido SQL
//Exemplo no datepicker a data é 04/11/2015 após a conversão fica 04.11.2015
//E ARMAZENA A DATA FORMATADA NA VARIÁVEL CONV_ATE
DM.SUA_QUERY.Active:=FALSE;
// MONTAGEM DO SELECT
SCRIPT_SELECT:='SELECT * FROM SUA_TABELA WHERE EMISSAO BETWEEN '''
+CONV_DE+''' AND '''
+CONV_ATE+''';'+
// FIM DO SELECT
DM.SUA_QUERY.SQL.TEXT:=SCRIPT_SELECT;
DM.SUA_QUERY.OPEN;
IF DM.SUA_QUERY.RECORDCOUNT=0 THEN
BEGIN
SHOWMESSAGE('NENHUM REGISTRO ENCONTRADO');
END
ELSE
BEGIN
FRX_SEU_REL.PREPAREREPORTS();
FRX_SEU_REL.SHOWREPORTS();
END;
END;
Caso ache complicado post seu select.
Gostei + 0
03/11/2015
Valsistemasdelphi
Para vocês entenderem estou usando um ibtable para conectar a minha tabela Caixa_Produtos. Aqui e onde fica todas as vendas da lanchonete onde fica registrado a data da venda de todos os produtos.
Bom o Código e o que o colega P2 Postou...
Gostei + 0
03/11/2015
Valsistemasdelphi
procedure TForm10.TDateTimepicker2Change(Sender: TObject);
begin
VData := DateToStr(TDateTimePicker2.Date);
end;
Ai eu coloquei este código no TDateTimePicker2... Para fazer a diferença.. O Por_Data e um TRadioButton que eu renomeei ai quando eu clico nele os Pickers ficam Visiveis..
procedure TForm10.SpeedButton1Click(Sender: TObject);
begin
if (Por_Data.Checked =true) then
begin
////pegar o periodo da data atual menos (-) 30 dias
//Form4.Ibtable1.Active := False;
Form4.Ibtable1.filter := 'DATA_VENDA = ' +''''+ DateToStr(Now)+'''';
//Form4.Ibtable1.Active := true;
Form4.Ibtable1.filtered := true;
FRXReport1.LoadFromFile('E:\ProjetoCadastro\Nova Lanchonete\VendaCaixa.fp3');
FrxReport1.ShowReport() ;
Form4.Ibtable1.filtered := False;
exit; //Forçar a sair da rotina, ou vai executar os ifs após o else...
//*********************************************************************
end;
if (Por_Data.Checked= true) then
begin
{Form4.Ibtable1.Active := True;
Form4.IBtable1.Filter := 'DATA_Venda = ' + ''''+datetostr(now)+'''';// pegar a data atual do micro
IBtable1.filtered := true;}
Form10.Ibtable1.Active := True;
Form10.Ibtable1.filter := 'DATA_VENDA >= ' +''''+DateToStr(Now)+'''' + ' and ' +
'Data_Venda <= '+ '''' + DateToStr(Now)+'''';
Form10.Ibtable1.Active := False;
Form10.Ibtable1.Filtered := True;
FRXReport1.LoadFromFile('E:\ProjetoCadastro\Nova Lanchonete\VendaCaixa.fp3');
FrxReport1.ShowReport() ;
//Form4.IBTable1.Active := true;
exit; //Forçar a sair da rotina, ou vai executar o teste abaixo
end;
Gostei + 0
03/11/2015
Raimundo Pereira
Gostei + 0
03/11/2015
Valsistemasdelphi
Campo Da Tabela: Data_Venda
Renomeei eles novamente para TDateTimePicker1 e TDateTimePicker2;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)