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.

Filtros en TDBBrowse

Foro público de Xailer en español
Responder
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Filtros en TDBBrowse

Mensaje por jrcsistemas »

Hola.
Tengo un TDBBrowse con lFilterBar habilitado. Una de las columnas
originalmente tiene los codigos de una tabla relacionada con la del Browse.
Mediante OnGetData voy mostrando el dato DETALLE en lugar de CODIGO.
Ahora.... en el filtrado, tambien quiero buscar por DETALLE. No por CODIGO
que es lo que realmente tiene la tabla.
Creo que haciendo uso de cFilter lo podria lograr, pero no se como.
Un poco mas de datos para que me entiendan, tengo dos tablas
PERSONAS con
CODIGO
NOMBRE
CALLE
NUMERODECALLE
y CALLES con
CODIGO
DETALLE
en el TDBBrowse de PERSONAS, tengo un OnGetData en la columna de CALLE asi:
METHOD DBPersonasColumn3GetData( oSender, Value, nImage ) CLASS
TFormABMPersonas
Local aData
AppData:oBase:Execute( "select detalle from calles where
codigo='"+Value+"'",, @aData )
RETURN aData[1][1]
el browse se ve perfecto con los nombres de las calles en lugar de su
codigo.
Como busco en el filtro, tambien por nombre de calle y no por su codigo?
No se si me explico
Gracias
Juan Castañeda
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9460
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Filtros en TDBBrowse

Mensaje por ignacio »

Juan,
Sólo le funcionará si utiliza un SET RELATION ya que necesite que se
posicione correctamente el Recno en la segunda tabla cuando el filter actúe
sobre la primera.
Saludos
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje
news:4ab2ec97$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Hola.
> Tengo un TDBBrowse con lFilterBar habilitado. Una de las columnas
> originalmente tiene los codigos de una tabla relacionada con la del
> Browse.
> Mediante OnGetData voy mostrando el dato DETALLE en lugar de CODIGO.
> Ahora.... en el filtrado, tambien quiero buscar por DETALLE. No por CODIGO
> que es lo que realmente tiene la tabla.
> Creo que haciendo uso de cFilter lo podria lograr, pero no se como.
>
> Un poco mas de datos para que me entiendan, tengo dos tablas
>
> PERSONAS con
> CODIGO
> NOMBRE
> CALLE
> NUMERODECALLE
>
> y CALLES con
> CODIGO
> DETALLE
>
> en el TDBBrowse de PERSONAS, tengo un OnGetData en la columna de CALLE
> asi:
>
> METHOD DBPersonasColumn3GetData( oSender, Value, nImage ) CLASS
> TFormABMPersonas
> Local aData
> AppData:oBase:Execute( "select detalle from calles where
> codigo='"+Value+"'",, @aData )
> RETURN aData[1][1]
>
> el browse se ve perfecto con los nombres de las calles en lugar de su
> codigo.
>
> Como busco en el filtro, tambien por nombre de calle y no por su codigo?
>
> No se si me explico
>
> Gracias
>
> Juan Castañeda
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Filtros en TDBBrowse

Mensaje por jrcsistemas »

Ignacio.
Son tablas de MySQL. Quiero poner mi funcion de busqueda de la segunda tabla
tomando como parámetro el valor ingresado por el usuario en el filtro.
Es correcto que ese valor se guarda en cFilter de la columna ?
Y se busca en base a la funcion que haya en FilterEval ?
Si es asi, como indico en Filtereval mi funcion de búsqueda:
Por ej:
en "'%' $ fBuscarCalle( )" // segun la documentacion el % representa lo
ingresado por el usuario
Function fBuscarCalle(Self)
Local cCodigo := Alltrim( ::oDBPersonas:aCols[4]:value ) // 4 es mi columna
de calles
Return AppData:oBase:QueryValue( "select detalle from calles where
codigo='"+cCodigo+"'")
Cada vez que busco en esa columna hace un simple BIP de error y no pasa
nada.
Gracias
"Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> escribió en el
mensaje news:4ab33c3d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Juan,
>
> Sólo le funcionará si utiliza un SET RELATION ya que necesite que se
> posicione correctamente el Recno en la segunda tabla cuando el filter
> actúe sobre la primera.
>
> Saludos
>
> --
> Ignacio Ortiz de Zúñiga
> Xailer support / Soporte de Xailer
> http://www.xailer.com
> http://www.xailer.info
> "Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje
> news:4ab2ec97$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Hola.
>> Tengo un TDBBrowse con lFilterBar habilitado. Una de las columnas
>> originalmente tiene los codigos de una tabla relacionada con la del
>> Browse.
>> Mediante OnGetData voy mostrando el dato DETALLE en lugar de CODIGO.
>> Ahora.... en el filtrado, tambien quiero buscar por DETALLE. No por
>> CODIGO que es lo que realmente tiene la tabla.
>> Creo que haciendo uso de cFilter lo podria lograr, pero no se como.
>>
>> Un poco mas de datos para que me entiendan, tengo dos tablas
>>
>> PERSONAS con
>> CODIGO
>> NOMBRE
>> CALLE
>> NUMERODECALLE
>>
>> y CALLES con
>> CODIGO
>> DETALLE
>>
>> en el TDBBrowse de PERSONAS, tengo un OnGetData en la columna de CALLE
>> asi:
>>
>> METHOD DBPersonasColumn3GetData( oSender, Value, nImage ) CLASS
>> TFormABMPersonas
>> Local aData
>> AppData:oBase:Execute( "select detalle from calles where
>> codigo='"+Value+"'",, @aData )
>> RETURN aData[1][1]
>>
>> el browse se ve perfecto con los nombres de las calles en lugar de su
>> codigo.
>>
>> Como busco en el filtro, tambien por nombre de calle y no por su codigo?
>>
>> No se si me explico
>>
>> Gracias
>>
>> Juan Castañeda
>>
>>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9460
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Filtros en TDBBrowse

Mensaje por ignacio »

Juan,
Si es MySQL entonces no hay dos tablas, sólo hay una SELECT que recibe todo
y debería funcionar sin hacer absolutamente nada. Mandenos un ejemplo que
reproduzca su problema con el backup de una pequeña BD para MySQL.
Supongo que sabrá como hacer una SELECT que utiliza más de una tabla, en
caso contrario consulte la cláusula JOIN del comando SELECT.
Además, no puede utilizar funciones propias en el filtro, SOLO puede
utilizar expresiones SQL válidas que entienda el motor que lo vaya a
procesar, por ejemplo: "CODIGO = %" siendo CODIGO un campo del dataset.
Un saludo,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje
news:4ab374df$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ignacio.
>
> Son tablas de MySQL. Quiero poner mi funcion de busqueda de la segunda
> tabla tomando como parámetro el valor ingresado por el usuario en el
> filtro.
> Es correcto que ese valor se guarda en cFilter de la columna ?
> Y se busca en base a la funcion que haya en FilterEval ?
> Si es asi, como indico en Filtereval mi funcion de búsqueda:
>
> Por ej:
> en "'%' $ fBuscarCalle( )" // segun la documentacion el % representa lo
> ingresado por el usuario
>
> Function fBuscarCalle(Self)
> Local cCodigo := Alltrim( ::oDBPersonas:aCols[4]:value ) // 4 es mi
> columna de calles
> Return AppData:oBase:QueryValue( "select detalle from calles where
> codigo='"+cCodigo+"'")
>
> Cada vez que busco en esa columna hace un simple BIP de error y no pasa
> nada.
>
> Gracias
>
>
> "Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> escribió en el
> mensaje news:4ab33c3d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Juan,
>>
>> Sólo le funcionará si utiliza un SET RELATION ya que necesite que se
>> posicione correctamente el Recno en la segunda tabla cuando el filter
>> actúe sobre la primera.
>>
>> Saludos
>>
>> --
>> Ignacio Ortiz de Zúñiga
>> Xailer support / Soporte de Xailer
>> http://www.xailer.com
>> http://www.xailer.info
>> "Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje
>> news:4ab2ec97$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Hola.
>>> Tengo un TDBBrowse con lFilterBar habilitado. Una de las columnas
>>> originalmente tiene los codigos de una tabla relacionada con la del
>>> Browse.
>>> Mediante OnGetData voy mostrando el dato DETALLE en lugar de CODIGO.
>>> Ahora.... en el filtrado, tambien quiero buscar por DETALLE. No por
>>> CODIGO que es lo que realmente tiene la tabla.
>>> Creo que haciendo uso de cFilter lo podria lograr, pero no se como.
>>>
>>> Un poco mas de datos para que me entiendan, tengo dos tablas
>>>
>>> PERSONAS con
>>> CODIGO
>>> NOMBRE
>>> CALLE
>>> NUMERODECALLE
>>>
>>> y CALLES con
>>> CODIGO
>>> DETALLE
>>>
>>> en el TDBBrowse de PERSONAS, tengo un OnGetData en la columna de CALLE
>>> asi:
>>>
>>> METHOD DBPersonasColumn3GetData( oSender, Value, nImage ) CLASS
>>> TFormABMPersonas
>>> Local aData
>>> AppData:oBase:Execute( "select detalle from calles where
>>> codigo='"+Value+"'",, @aData )
>>> RETURN aData[1][1]
>>>
>>> el browse se ve perfecto con los nombres de las calles en lugar de su
>>> codigo.
>>>
>>> Como busco en el filtro, tambien por nombre de calle y no por su codigo?
>>>
>>> No se si me explico
>>>
>>> Gracias
>>>
>>> Juan Castañeda
>>>
>>>
>>
>>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder