Página 1 de 1

Problema com filtros

Publicado: Mar Oct 07, 2014 8:45 pm
por Sommus
Prezados desenvolvedores de Xailer,
Detectamos um pequeno problema em relação ao filtro do browse:
Num browse, com tríªs colunas, ligado a query abaixo:
::oSQLQuery:cSelect:="SELECT srv_campo_1, if(srv_campo_2 IS NULL,'0','1') AS campo_2, srv_campo_3 FROM srv_tabela" ::oSQLQuery:lOpen:=.T.
::oProdutos:AddCalcField("campo_3",{|oField| strzero(oField:oDataSet:srv_campo_3(dsFIELD),3)})
onde as colunas estão relacionadas com os campos srv_campo_1, campo_2 e campo_3, respectivamente. O filtro do Browse só funciona corretamente no primeiro campo, nos demais ele não filtra os registros.
O problema ocorre nas colunas que são adicionadas com AddCalcField() e nas colunas com "apelidos"...
Obrigado pela atenção,

Problema com filtros

Publicado: Mié Oct 08, 2014 10:08 am
por ignacio
Buenos dí­as,
Desgraciadamente el filtro del Browse no es demasiado inteligente y me temo que hay que ayudarle utilizando la propiedad TBrwColumn:FilterEval e inlcuso a veces resulta imposible en cuyo caso puede usar la propiedad TBrwColumn:lCanFilter.
Esto es debido a que realmente el filtro no se hace en local sino que se vuelve a realizar la consulta al motor SQL y cuando los campos del select son complicados me temo que hay poco que se pueda hacer. No obstante existe una solución que consiste en utilizar un TMemDataset, en dicho caso los filtros se resuelven localmente y no tiene ningún problema. Utilice el método TDataSource:QueryMemDataset() para ello. Su gran limitación es que ha de considerar el dataset de sólo lectura ya que las modificaciones que haga (que se pueden hacer) no se reflejarán en la base de datos SQL.
Saludos