Problemas de control con el filtro en MYSQL
Publicado: Mié May 28, 2008 12:34 pm
Este código :
//Cambio de filtro en un DBBrowse + SQLQUery
oSender:OnFilterChange:={|o,n|if(n=1,(o:oDataSet:lUpdLinked :=
..f.,o:oDataSet:Close(),o:oDataSet:cSelect:="Select * from SubCuentas
"+if(!empty(alltrim(o:aCols[1]:cFilter))," WHERE NUMERO LIKE
'"+alltrim(o:aCols[1]:cFilter)+"%'",""),o:aCols[1]:cFilter:= "",
o:oDataSet:lUpdLinked :=
..t.,o:oDataSet:Open(),msginfo(o:oDataSet:RecCount()), o:refresh() ),)}
Permite crear un tSQLQuery sobre un DBBrowse cada vez que yo cambio el
filtro de la 1ª columna que es el nº de cuenta (NUMERO)
Funcionamiento :
1º) Aparece toda la base de datos al arrancar el formulario
2º) Al poner algo en el filtro de la columna (ejem 430) , cierra el
DataSet (o:oDataSet) , cambio el cSelect y vuelvo a abrir el dataSet .El
resultado es que me aparece un nuevo SQLQuery filtrado segun mis deseos
, en este caso (WHERE NUMERO LIKE '430%')
3º) Borro el filtro y refresco el DbBrowse
Problema. Si vuelvo a cambiar el filtro me aparece 1 registro o ninguno.
El msginfo(o:oDataSet:RecCount()) me devuelve 0 ó 1
¿Por qué ?
Realmente la 1ª y la 2ª vez direcciona sobre el mismo DataSource.
Gracias.
//Cambio de filtro en un DBBrowse + SQLQUery
oSender:OnFilterChange:={|o,n|if(n=1,(o:oDataSet:lUpdLinked :=
..f.,o:oDataSet:Close(),o:oDataSet:cSelect:="Select * from SubCuentas
"+if(!empty(alltrim(o:aCols[1]:cFilter))," WHERE NUMERO LIKE
'"+alltrim(o:aCols[1]:cFilter)+"%'",""),o:aCols[1]:cFilter:= "",
o:oDataSet:lUpdLinked :=
..t.,o:oDataSet:Open(),msginfo(o:oDataSet:RecCount()), o:refresh() ),)}
Permite crear un tSQLQuery sobre un DBBrowse cada vez que yo cambio el
filtro de la 1ª columna que es el nº de cuenta (NUMERO)
Funcionamiento :
1º) Aparece toda la base de datos al arrancar el formulario
2º) Al poner algo en el filtro de la columna (ejem 430) , cierra el
DataSet (o:oDataSet) , cambio el cSelect y vuelvo a abrir el dataSet .El
resultado es que me aparece un nuevo SQLQuery filtrado segun mis deseos
, en este caso (WHERE NUMERO LIKE '430%')
3º) Borro el filtro y refresco el DbBrowse
Problema. Si vuelvo a cambiar el filtro me aparece 1 registro o ninguno.
El msginfo(o:oDataSet:RecCount()) me devuelve 0 ó 1
¿Por qué ?
Realmente la 1ª y la 2ª vez direcciona sobre el mismo DataSource.
Gracias.