In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Problemas de control con el filtro en MYSQL

Foro de Xailer profesional en español
Responder
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Problemas de control con el filtro en MYSQL

Mensaje por correo »

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.
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Problemas de control con el filtro en MYSQL

Mensaje por correo »

JJG Soft escribió:
> 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.
>
Esto si funciona
//Cambio de filtro
oSender:OnFilterChange:={|o,n|if(n=1,(o:oDataSet:lUpdLinked :=
..f.,o:oDataSet:Close(),o:oDataSet:oDataSource:=AppData:MYSQ L,o:oDataSet:cSelect:= "Select
* from SubCuentas "+if(!empty(alltrim(o:aCols[1]:cFilter))," WHERE
NUMERO LIKE '"+alltrim(o:aCols[1]:cFilter)+"%'",""),
o:oDataSet:lUpdLinked :=
..t.,o:oDataSet:Open(),msginfo(o:oDataSet:RecCount()), o:refresh() ),)}
He incluido o:oDataSet:oDataSource:=AppData:MYSQL ,es decir vuelvo a
asignar el Datasource y !!! funciona !!!
Responder