Filtros, não funciona

Delphi

19/04/2016

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.
Fausto Alencar

Fausto Alencar

Curtidas 0

Melhor post

Raylan Zibel

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

Fausto Alencar

19/04/2016

Ola Raylan.

Mesmo com o seu codigo, não filtra.
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

19/04/2016

Notei que você está abrindo e fechando o ClientDataSetRelContasPagar e está alimentando os parâmetros no SQLDataSetRelContasPagar.

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

Fausto Alencar

19/04/2016

Ola, Natanael.

Testei com os seus códigos e mesmo assim, ele não filtra
GOSTEI 0
Fausto Alencar

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
GOSTEI 0
Natanael Ferreira

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:

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

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
---------------------------
"
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

19/04/2016

Na propriedade Options do DataSetProvider vc tem que colocar para True a opção poAllowCommandText.
GOSTEI 0
Fausto Alencar

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.
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

19/04/2016

Sim. Pode me enviar, liberando um tempo aqui eu dou uma olhada.

natanaelcosta1@gmail.com
GOSTEI 0
POSTAR