Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Probleminha Com Dbgrid X Componente Prtgrid


Eder

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...