Hola!
Tengo que simular un locator, es decir hacerlo manualmente simulando lo que hace el template, pero con un campo que no es parte de la clave.
En realidad tengo una tabla que muestra las Dimensiones de los productos, y la tabla Productos es un padre de esta tabla. El cliente quiere un locator en el browse de Dimensiones pero por un campo de la tabla Productos. ¿Alguien hizo esto o sabe cómo se puede hacer?
Gracias!!
Clarion 6 - Locator por campo que no es clave
-
- Novato
- Mensajes: 12
- Registrado: Jue Jun 09, 2016 5:17 pm
- Ubicación: J. Posse, Pcia de Córdoba, Argentina
- Contactar:
-
- Al nivel de RZ
- Mensajes: 367
- Registrado: Lun Feb 07, 2011 4:45 pm
- Ubicación: Santo Domingo,Rep.Dominicana
- Contactar:
Re: Clarion 6 - Locator por campo que no es clave
Hola
por favor en la seccion de trucos hay ejemplos de estos puede entrar y descargarlo
por favor en la seccion de trucos hay ejemplos de estos puede entrar y descargarlo
Ing. R. Pacheco
Analista Programador
Pachecoramon@hotmail.com, Skype:pachecoramon
Santo Domingo, Rep. Dominicana
Para cualquier consulta rápida: hacerla por WhatApp al 1 347-6159 US
Analista Programador
Pachecoramon@hotmail.com, Skype:pachecoramon
Santo Domingo, Rep. Dominicana
Para cualquier consulta rápida: hacerla por WhatApp al 1 347-6159 US
-
- Novato
- Mensajes: 12
- Registrado: Jue Jun 09, 2016 5:17 pm
- Ubicación: J. Posse, Pcia de Córdoba, Argentina
- Contactar:
Re: Clarion 6 - Locator por campo que no es clave
Gracias R. Pacheco por tu rta. Entré a la sección de trucos y miré los títulos uno por uno y no veo ninguno que hable de ordenamientos, incluso entré a algunos por las dudas para ver si hablaba de eso pero no lo encuentro... Te acordás cuál es? Me podés decir el Tema para buscarlo? Gracias
Gabriela (Argentina)
Gabriela (Argentina)
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: Clarion 6 - Locator por campo que no es clave
Gabriela, con qué driver estás trabajando? TPS? SQL?
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 12
- Registrado: Jue Jun 09, 2016 5:17 pm
- Ubicación: J. Posse, Pcia de Córdoba, Argentina
- Contactar:
Re: Clarion 6 - Locator por campo que no es clave
Hola Mauricio, trabajo con SQL, gracias por responder.
Ya encontré una forma de hacerlo y lo publico por si a alguien más le sirve:
* Agregar un campo entry, chequearlo como Skip. Utilizar una variable local (ejemplo: C_PROD) que coincida con el campo del padre (o que no forma parte de una clave) por el que se quiere buscar.
* En el Browse, en Action, Locator Behavior, seleccionar Locator Filtered.
* En Init(8200) agregar:
BRW1::Sort0:Locator.Init(?C_PROD,C_PROD,,BRW1)
Obs: si el campo por el cual se quiere hacer la búsqueda rápida es Uppercase agregar un 1:
BRW1::Sort0:Locator.Init(?C_PROD,C_PROD,1,BRW1)
Obs2: si hubiera más de un tab con locator de este tipo se van agregando como Sort1, Sort2, etc. Por ej.:
BRW1::Sort1:Locator.Init(?D_PROD,D_PROD,,BRW1)
Por las dudas buscar en Sources de Init(8200) (código anterior a lo que estamos agregando), el número que asigna a cada objeto Sort. En los procedimientos probados asigna para tab 1, Sort0; para tab 2, Sort1, y así sucesivamente.
* En ApplyFilter(6000) del list:
Se debe utilizar dentro de PROP:SQLFilter la sentencia LIKE, por ejemplo: 'PRODUCTOS.C_PROD LIKE <39>' & CLIP(C_PROD ) & '%<39>'
Obs: se debe utilizar PROP:SQLfilter SIN el signo + adelante.
Ej:
Sobre un list de la tabla DIM_PROD relacionada en File Schematic on PRODUCTOS (padre), se quiere filtrar por campos de PRODUCTOS:
CASE CHOICE(?CurrentTab)
OF 1
IF C_PROD <> ' '
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39> AND '|
& 'PRODUCTOS.C_PROD LIKE <39>' & CLIP(C_PROD) & '%<39>'
ELSE
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39>'
END
OF 2
IF D_PROD <> ' '
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39> AND '|
& 'PRODUCTOS.D_PROD LIKE <39>' & CLIP(D_PROD) & '%<39>'
ELSE
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39>'
END
END
Ya encontré una forma de hacerlo y lo publico por si a alguien más le sirve:
* Agregar un campo entry, chequearlo como Skip. Utilizar una variable local (ejemplo: C_PROD) que coincida con el campo del padre (o que no forma parte de una clave) por el que se quiere buscar.
* En el Browse, en Action, Locator Behavior, seleccionar Locator Filtered.
* En Init(8200) agregar:
BRW1::Sort0:Locator.Init(?C_PROD,C_PROD,,BRW1)
Obs: si el campo por el cual se quiere hacer la búsqueda rápida es Uppercase agregar un 1:
BRW1::Sort0:Locator.Init(?C_PROD,C_PROD,1,BRW1)
Obs2: si hubiera más de un tab con locator de este tipo se van agregando como Sort1, Sort2, etc. Por ej.:
BRW1::Sort1:Locator.Init(?D_PROD,D_PROD,,BRW1)
Por las dudas buscar en Sources de Init(8200) (código anterior a lo que estamos agregando), el número que asigna a cada objeto Sort. En los procedimientos probados asigna para tab 1, Sort0; para tab 2, Sort1, y así sucesivamente.
* En ApplyFilter(6000) del list:
Se debe utilizar dentro de PROP:SQLFilter la sentencia LIKE, por ejemplo: 'PRODUCTOS.C_PROD LIKE <39>' & CLIP(C_PROD ) & '%<39>'
Obs: se debe utilizar PROP:SQLfilter SIN el signo + adelante.
Ej:
Sobre un list de la tabla DIM_PROD relacionada en File Schematic on PRODUCTOS (padre), se quiere filtrar por campos de PRODUCTOS:
CASE CHOICE(?CurrentTab)
OF 1
IF C_PROD <> ' '
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39> AND '|
& 'PRODUCTOS.C_PROD LIKE <39>' & CLIP(C_PROD) & '%<39>'
ELSE
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39>'
END
OF 2
IF D_PROD <> ' '
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39> AND '|
& 'PRODUCTOS.D_PROD LIKE <39>' & CLIP(D_PROD) & '%<39>'
ELSE
Self.View{PROP:SQLFilter} = 'DIM_PROD.C_DIM = ' & C_DIM_USU & ' AND PRODUCTOS.CONTAR_SN = <39>S<39>'
END
END
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados