Erro ao filtrar registros.

Delphi

07/01/2005

Bom dia pessoal,

estou com problema na hora de fazer o filtro nos meus resgistros, estou usando banco de dados MySQL e uso o componente ZEOS.

o erro é o seguinte:
[color=red:4548446fb2]
ERangeError with message : ´Range Check Error´.[/color:4548446fb2]


O que acontece, tenho um combo box que recebe os valores a serem filtrados e a medida que o usuário seleciona as opções ele vai mostrando os registros.

o codigo é este:
  with qryPedido do
  begin
    with cbExibir do
    begin
      if ItemIndex = 0 then
        Filtered := False
      else
        Filter := qryPedidoTipo.FieldName + ´ = ´ + Items[ItemIndex];
    end; 
  end;


Mais uma pergunta, por acaso o filtro aceita códigos em SQL?


Douglasf

Douglasf

Curtidas 0

Respostas

Douglasf

Douglasf

07/01/2005

sobe


GOSTEI 0
Douglasf

Douglasf

07/01/2005

Sobe


GOSTEI 0
Massuda

Massuda

07/01/2005

o erro é o seguinte: [color=red:9bfcdc4002] ERangeError with message : ´Range Check Error´.[/color:9bfcdc4002] [...] o codigo é este:
  with qryPedido do
  begin
    with cbExibir do
    begin
      if ItemIndex = 0 then
        Filtered := False
      else
        Filter := qryPedidoTipo.FieldName + ´ = ´ + Items[ItemIndex];
    end; 
  end;

Experimente testar se ItemIndex < 0 (nenhum item selecionado no combobox) antes de atribuir um valor a Filter.

Mais uma pergunta, por acaso o filtro aceita códigos em SQL?

Acho que não, mas dê uma olhada na ajuda do Delphi sobre a propriedade Filter do TDataSet para ver exemplos expressões válidas para filtro.

Uma outra coisa... se qryPedidoTipo é um campo string, então seu filtro deveria ser:
Filter := qryPedidoTipo.FieldName + ´ = ´´´ + Items[ItemIndex] + ´´´´;



GOSTEI 0
Douglasf

Douglasf

07/01/2005

Muito obrigado pela resposta,

infelizmente não resolveu mas consegui encontrar a origem do problema só falta resolver.

Pelo que me parece o problema esta com a [color=red:c52bb2327e]Query[/color:c52bb2327e], pois fiz todos os testes com [color=red:c52bb2327e]cbExibe(ComboBox)[/color:c52bb2327e], olhei os valores que o I[color=red:c52bb2327e]tems[ItemIndex] e o ItemIndex[/color:c52bb2327e] me retornou e esta corretíssimo.


GOSTEI 0
Massuda

Massuda

07/01/2005

Achava que o problema era com o combobox... não tenho idéia de qual problema possa ter na sua query. Em qual linha do seu código o Delphi está mostrando a exceção?


GOSTEI 0
Douglasf

Douglasf

07/01/2005

Filter := qryPedidoTipo.FieldName + ´ = ´ + ´´´´ + Items[ItemIndex] + ´´´´;


GOSTEI 0
Massuda

Massuda

07/01/2005

Nessa linha...
Filter := qryPedidoTipo.FieldName + ´ = ´ + ´´´´ + Items[ItemIndex] + ´´´´;
Posso estar enganado, mas a única coisa que pode gerar o ERangeError é o combobox... Só para verificar se o problema é no combobox, experimente testar assim:
if (ItemIndex >= 0) and (ItemIndex < Items.Count) then begin
  Filter := qryPedidoTipo.FieldName + ´ = ´ + ´´´´ + Items[ItemIndex] + ´´´´;
end else
  ShowMessage(´ItemIndex fora de faixa!´);



GOSTEI 0
POSTAR