Clarion 6 - Locator por campo que no es clave

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Responder
magamaso
Novato
Mensajes: 12
Registrado: Jue Jun 09, 2016 5:17 pm
Ubicación: J. Posse, Pcia de Córdoba, Argentina
Contactar:

Clarion 6 - Locator por campo que no es clave

Mensaje por magamaso » Vie Dic 02, 2016 6:22 pm

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!!


R.Pacheco
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

Mensaje por R.Pacheco » Jue Dic 08, 2016 5:59 pm

Hola

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

magamaso
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

Mensaje por magamaso » Lun Dic 12, 2016 11:20 am

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)

Avatar de Usuario
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

Mensaje por Mauricio » Vie Dic 16, 2016 7:51 am

Gabriela, con qué driver estás trabajando? TPS? SQL?
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog

magamaso
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

Mensaje por magamaso » Vie Dic 16, 2016 11:15 am

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


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados