Recent

Author Topic: Problema com Filter no TSQLQuery  (Read 3720 times)

j.cant

  • Newbie
  • Posts: 2
Problema com Filter no TSQLQuery
« on: March 16, 2012, 05:37:50 pm »
Olá. Estou com o seguinte problema no Lazarus:
Tenho um DBLookupComboBox listando todos os estados.
Tenho outro DBLookupComboBox listando todas as cidades.

No evento OnChange do DBLookupComboBox de estados eu faço o seguinte comando:

SQLCidades.Filtered := False;
SQLCidades.Filter := 'ESTADO = ' + QuotedStr(DBLookupComboBoxESTADO.KeyValue);
SQLCidades.Filtered := True;

Esse comando acima simplesmente não faz nada, ou seja, não filtra e nem dá mensagem alguma de erro.
Obs.: Já constatei que o "KeyValue" traz o valor correto (ex.: RS, SP, SC, etc...).
Desde já, grato pela atenção.

j.cant

  • Newbie
  • Posts: 2
Resolvido
« Reply #1 on: March 16, 2012, 08:39:48 pm »
Descobri que o problema não estava com o componente TSQLQuery, mas sim com o componente TDBLookupComboBox.
Após eu passar os filtros como no código acima, eu tive que setar novamente a propriedade ListSource do combobox das cidades.

Exemplo:
DBLookupComboBoxCIDADES.ListSource := DatasourceCIDADES;

Seria como se tivesse dado um refresh nos itens.
Na minha opinião isso é um bug do componente. Se não for um bug, gostaria de ler uma explicação para isso.
Desde já, obrigado.

Daniel Simoes

  • New Member
  • *
  • Posts: 11
    • DJSystem
Re: Problema com Filter no TSQLQuery
« Reply #2 on: March 23, 2012, 12:55:24 pm »
Evite montar Querys com concatenação... isso e um prato cheio para SQL Injection, e o banco de dados nunca conseguira se otimizar para querys repetitivas...

Use Parametros nas querys... e ParamByName para atribuir valores a eles...

Exemplo:
SQL.Text := 'select * from CIDADES where ESTADO = :PESTADO' ;
SQL.ParamByName('PESTADO').AsString := 'SP' ;
Open;

 

TinyPortal © 2005-2018