Filtros, não funciona
Olá, bom dia.
Tenho um pequeno sistema de controle de contas a pagar particular - Delphi7 - firebird
Criei um relatório com o Fortes report, em ordem.
A consulta em SQL, funciona pelo IB Expert.
Porem, quando passo pros fontes, o sistema não filtra, é como se eu estivesse carregando o relatório original, sem filtros, até traz os dados, mas todos eles.
Abaixo, o código do filtro:
procedure TFormChamaRelContasAbertas.SpeedButtonVisualizarClick(
Sender: TObject);
begin
FormRelContasPagar := TFormRelContasPagar.Create(Application);
with FormRelContasPagar do
begin
DataModule1.SQLDataSetRelContasPagar.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
DataModule1.SQLDataSetRelContasPagar.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
DataModule1.ClientDataSetRelContasPagar.Close;
DataModule1.ClientDataSetRelContasPagar.Open;
FormRelContasPagar.RLReport1.PreviewModal;
end;
end;
Se alguem puder me ajudar, fico grato.
Tenho um pequeno sistema de controle de contas a pagar particular - Delphi7 - firebird
Criei um relatório com o Fortes report, em ordem.
A consulta em SQL, funciona pelo IB Expert.
Porem, quando passo pros fontes, o sistema não filtra, é como se eu estivesse carregando o relatório original, sem filtros, até traz os dados, mas todos eles.
Abaixo, o código do filtro:
procedure TFormChamaRelContasAbertas.SpeedButtonVisualizarClick(
Sender: TObject);
begin
FormRelContasPagar := TFormRelContasPagar.Create(Application);
with FormRelContasPagar do
begin
DataModule1.SQLDataSetRelContasPagar.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
DataModule1.SQLDataSetRelContasPagar.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
DataModule1.ClientDataSetRelContasPagar.Close;
DataModule1.ClientDataSetRelContasPagar.Open;
FormRelContasPagar.RLReport1.PreviewModal;
end;
end;
Se alguem puder me ajudar, fico grato.
Fausto Alencar
Curtidas 0
Melhor post
Raylan Zibel
19/04/2016
Tente
DataModule1.ClientDataSetRelContasPagar.Close;
DataModule1.SQLDataSetRelContasPagar.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
DataModule1.SQLDataSetRelContasPagar.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
DataModule1.ClientDataSetRelContasPagar.Open;
GOSTEI 3
Mais Respostas
Fausto Alencar
19/04/2016
Ola Raylan.
Mesmo com o seu codigo, não filtra.
Mesmo com o seu codigo, não filtra.
GOSTEI 0
Natanael Ferreira
19/04/2016
Notei que você está abrindo e fechando o ClientDataSetRelContasPagar e está alimentando os parâmetros no SQLDataSetRelContasPagar.
Teste assim:
Ou assim:
Teste assim:
With DataModule1.SQLDataSetRelContasPagar do
begin
Close;
Params.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
Params.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
Open;
end;Ou assim:
With DataModule1.ClientDataSetRelContasPagar do
begin
Close;
Params.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
Params.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
Open;
end;GOSTEI 1
Fausto Alencar
19/04/2016
Ola, Natanael.
Testei com os seus códigos e mesmo assim, ele não filtra
Testei com os seus códigos e mesmo assim, ele não filtra
GOSTEI 0
Fausto Alencar
19/04/2016
Peço desculpas aos amigos que estão tentando me ajudar, mas não estudei desenvolvimento, o que aprendi foi com o dia a dia, pegando uma ajuda aqui, outra ali. Não trabalho com TI, apenas uso como hobby
Grato
Grato
GOSTEI 0
Natanael Ferreira
19/04/2016
Como está o seu comando SQL nos componentes? Criou os parâmetros nos componentes?
Te aconselho a atribuir o SQL e os parâmetros direto no código. Exemplo:
No commandText coloque o nome correto da tabela e nome correto do campo de data.
Te aconselho a atribuir o SQL e os parâmetros direto no código. Exemplo:
With DataModule1.ClientDataSetRelContasPagar do
begin
Close;
CommandText:= 'Select * from Tabela where campodata >= :data1 and campodata <= :data2';
Params.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
Params.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
Open;
end;No commandText coloque o nome correto da tabela e nome correto do campo de data.
GOSTEI 0
Fausto Alencar
19/04/2016
Natanael, o codigo ficou assim
procedure TFormChamaRelContasAbertas.SpeedButtonVisualizarClick(
Sender: TObject);
begin
FormRelContasPagar := TFormRelContasPagar.Create(Application);
With DataModule1.ClientDataSetRelContasPagar do
begin
Close;
CommandText:= 'Select * from contasapagar where contasapagar.vcto >= :data1 and contasapagar.vcto <= :data2';
Params.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
Params.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
Open;
end;
End;
Porem retorna erro na execução.
"
---------------------------
Debugger Exception Notification
---------------------------
Project PrjPrincipalContasPagar.exe raised exception class EDatabaseError with message 'CommandText changes are not allowed'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
"
procedure TFormChamaRelContasAbertas.SpeedButtonVisualizarClick(
Sender: TObject);
begin
FormRelContasPagar := TFormRelContasPagar.Create(Application);
With DataModule1.ClientDataSetRelContasPagar do
begin
Close;
CommandText:= 'Select * from contasapagar where contasapagar.vcto >= :data1 and contasapagar.vcto <= :data2';
Params.ParamByName('data1').asDate := StrToDate(DateEditInicial.Text);
Params.ParamByName('data2').asDate := StrToDate(DateEditFinal.Text);
Open;
end;
End;
Porem retorna erro na execução.
"
---------------------------
Debugger Exception Notification
---------------------------
Project PrjPrincipalContasPagar.exe raised exception class EDatabaseError with message 'CommandText changes are not allowed'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
"
GOSTEI 0
Natanael Ferreira
19/04/2016
Na propriedade Options do DataSetProvider vc tem que colocar para True a opção poAllowCommandText.
GOSTEI 0
Fausto Alencar
19/04/2016
Natanael, bom dia.
Eu posso te mandar meu codigo? Voce teria tempo de dar uma olhada rapida nele?
É pequeno.
Tenho um outro sisteminha, bem maior e, no grande consigo uma filtragem a contento, to copiando o codigo da filtragem na integra e fazendo as devidas alterações, mas ainda não filtra.
Se vc puder me ajudar, da um toque que te envio os fontes.
De qualquer forma, te agradeço pelo apoio.
Eu posso te mandar meu codigo? Voce teria tempo de dar uma olhada rapida nele?
É pequeno.
Tenho um outro sisteminha, bem maior e, no grande consigo uma filtragem a contento, to copiando o codigo da filtragem na integra e fazendo as devidas alterações, mas ainda não filtra.
Se vc puder me ajudar, da um toque que te envio os fontes.
De qualquer forma, te agradeço pelo apoio.
GOSTEI 0
Natanael Ferreira
19/04/2016
Sim. Pode me enviar, liberando um tempo aqui eu dou uma olhada.
natanaelcosta1@gmail.com
natanaelcosta1@gmail.com
GOSTEI 0