Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Probleminha Com Dbgrid X Componente Prtgrid


Eder
 Share

Question

Ola..pessoal..estou manipulando uma consuta e o resultado sai no Dbgrid

codigo da consulta:

procedure TForm18.EncartaButton3Click(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;
    exit;
    end;
  with Query1 Do
     Begin
        Close;
        With SQL Do
           Begin
              Clear;
              Add('Select * from AR Where DATARECE is null and (DATA BETWEEN :DATAINI and :DATAFIM) AND ENTREGA = ' + QUOTEDSTR ('XXXX'));
           End;
        ParamByName('DATAINI').AsDate := DateTimePicker1.Date;
        ParamByName('DATAFIM').AsDate := DateTimePicker2.Date;
        Open;
        Panel1.caption := IntToStr(Query1.RecordCount); //contar os registros consultados
     end;
end;
após esta consulta eu uso o componente Prtgrid que é um componente que uso pra salvar o relatorio em *.xls(no componente tem uma propriedade que é ligada ao DbGrid).
PrtGrid1.SaveToFile;

O componente funciona perfeito...mas agora precisei de uma consulta num periodo mais longo e

deu o seguinte erro:

raised exception class einvalid gridoperation message: "indice do grid fora da faixa"

se eu escolher um periodo de 1 mes não da erro...somente com periodo mais longos....

Nota: Mas estranho ainda...é que quando entro neste form....já aparece na dbgrid toda a consulta do banco...que é um monte de registro ai se eu salvar não da erro...e é mtos dados...

só apos rodar o codigo da consulta que ai aparece o erro quando a consulta for de periodo mais longo tipo 5 meses.

alguém poderia dar uma dica??

Grato

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0
procure pelas propriedades de colunas e linhas ( col , row ) e defina um tamaho maximo de uso para elas .... eu não tenho o componente por isso não sei te dizer com certeza onde alterar ....

R.: Jonas..alterei algumas propriedade, joguei bem alto, mais o erro persiste.

Agora uma coisa...estranha...quando abro o form ai no dbgrid mostra toda os dados, de 3 anos....um monte de registros....ai click no botão de salvar e salva legal........sem erros..

O problema acontece por exemplo se o usuario faz um filtro tipo os dados do periodo 010107 ate hoje ai....quando click em salvar da o ERRO.

mas se o usuario selecionar um periodo de um mes ai não da erro.

:(

Parece que o codigo da consulta ta influenciando algo.....parece que quando é periodo longo fica algo na memoria....sei lá..parece que algo não se completa..e ai clicko no botão salvar e da o erro.

o codigo que estou usando pra filtrar-consultar é este que esta acima

Grato

Link to comment
Share on other sites

  • 0

Oi Eder ... tente esta mudança no seu codigo

procedure TForm18.EncartaButton3Click(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;
    exit;
    end;
  with Query1 Do
     Begin
        Close;
        With SQL Do
           Begin
              Clear;
              Add('Select * from AR Where DATARECE is null and (DATA >= :DATAINI and DATA <= :DATAFIM) AND ENTREGA = ' + QUOTEDSTR ('XXXX'));
           End;
        ParamByName('DATAINI').AsDate := DateTimePicker1.Date;
        ParamByName('DATAFIM').AsDate := DateTimePicker2.Date;
        Open;
        Panel1.caption := IntToStr(Query1.RecordCount); //contar os registros consultados
     end;
end;

Tive um problema parecido usando o BETWEEN

Link to comment
Share on other sites

  • 0

carinha consegui...achei o motivo do erro.....

após a consulta o dbgrid as vezes congelava.

nas era só com periodo long...tipo um travamento..cheguei a usar outro componente dbgrid....mas mesmo assim congelava...acho que é um buguezinho do componente PRTGRID....sei lá..

ai pra solicionar o problema apenas coloquei ao final do codigo este comando:

Query1.first;

assim força a query a rodar até o última registro, destravando o DbGrid...ai resolveu..o erro não apareceu mais..independente do período.

Mas valeu...muito grato pela força :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...