Como Usar o TdateTimePicker Para Filtrar Datas e visualiza-las em um FrxReport..

Delphi

02/11/2015

Olá inicie a pouco tempo no Delphi.. Estou desenvolvendo um sistema de lanchonete para meu projeto.. Estou com um problema em Dois TDateTimePicker.. Pois a finalidade de um e Pegar uma data inicial... E o outro e pegar uma data final... E depois visualizar as datas de vendas do caixa em um FrxReport com a ajuda de um SppedButton.. Mais não sei nem como começar.. Fiz pesquisa na internet e só achei códigos com IbQuery.. Eu uso Ibtable.. Quem poder me ajudar a respeito disto..
Valsistemasdelphi

Valsistemasdelphi

Curtidas 0

Respostas

Raimundo Pereira

Raimundo Pereira

02/11/2015

VAR:
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
Valsistemasdelphi

Valsistemasdelphi

02/11/2015

Está dando erro neste Date o Delphi não está reconhecendo....[dcc32 Error] Unit10.pas(266): E2003 Undeclared identifier: 'Date'
TDateTimePicker1:=DateToStr(TDateTimePicker1.Date);
TDateTimePicker2:=DateToStr(TDateTimePicker2.Date);
GOSTEI 0
Mateus Ribeiro

Mateus Ribeiro

02/11/2015

Boa tarde!

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
Raimundo Pereira

Raimundo Pereira

02/11/2015

Lembre-se do inicio.

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
Valsistemasdelphi

Valsistemasdelphi

02/11/2015

Minha Dúvida e se vai algum código nos datas picker ou só no Button que vai chamar o Relatório??... A meses que estou tentando resolver este problema mais não tive sucesso nenhum.. Estou dependendo só destes datas picker.. Pois os meus outros relatórios consegui ja desenvolver mais esses datas picker está enrolando a cabeça...

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
Valsistemasdelphi

Valsistemasdelphi

02/11/2015

Desenvolvi uma lógica...
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
Raimundo Pereira

Raimundo Pereira

02/11/2015

----------
GOSTEI 0
Valsistemasdelphi

Valsistemasdelphi

02/11/2015

Table Name : Caixa_Produtos

Campo Da Tabela: Data_Venda

Renomeei eles novamente para TDateTimePicker1 e TDateTimePicker2;
GOSTEI 0
POSTAR