Filtrar búsqueda por tipo de entidad


([N1] joce) #1

Hola a todos,

Bueno, por fin me decidí a meterle mano a la V7 y la verdad es que tiene muy buenas expectativas. Estoy montando un proyecto que hereda vGestion y uno de los problemas que me encuentro, ya que sigo con el chip de V6 es el siguiente: Para obtener un simple listado de clientes en un formulario, inserto un "Control Objeto" con una búsqueda sin formulario asociado (esto es imprescindible) y una rejilla, ambos asociados a la tabla "Entidades" (ENT@Entidades). Hasta ahí todo bien, el problema es que quiero filtrar la búsqueda por el campo "Tipos de Entidad" (#ENT_TIP), cuyo contenido es una cadena separada por comas y no consigo aislar la parte correspondiente a clientes (CLT), en el caso de que la entidad tenga asignados más de un tipo de entidad. La fórmula que utilizo para el filtro es la siguiente: #ENT_TIP=getStringRegExp("[A-Z]", "CLT", 0, 0,0), pero no funciona, devuelve la rejilla vacía. ¿Alguien tiene alguna pista de qué estoy haciendo mal?

Muchas gracias a todos y que paséis una feliz Navidad.

 


([N4] Fran) #2

Buenos dias:

 

No he utilizado esta función, por lo que desconozco la sintaxis exacta... pero se me ocurre que pongas un mensaje en un proceso que te devuelva la salida de la función y así ves lo que está devolviendo y puedes ajustarla hasta que devuelvas lo que buscas.

 

Otra cosa: En lugar de utilizar un filtrado, la búsqueda sería más efectiva si utilizas un componente de búsqueda sobre un índice de este campo, buscando por parte izquierda y cruzando.

 

Un saludo,

 

Fran

EfeUno Consultores de Gestión y Software, S.L.

www.efeuno.org

 


([N1] Valdes) #3

En vez de utilizar una cadena de texto (CLT), utiliza las constantes creadas para ello.

 

 

Saludos<span style="white-space: pre;">


([N1] Nacho) #4

Hola @joce

Para obtener una lista de entidades de un tipo, tienes dos caminos:

1.- Mediante la tabla ENT_ENT_TIP, donde están las Entidades y sus tipos. Tu caso sería (si heredas vConta) tan sencillo como:

(Ver Imagen EntListaClt.jpg)

[attachment=14004,1211]

2.- Utilizando la búsqueda ENT_LOC que está en el proyecto vBase (o haciendo una parecida), pasandole las siguientes variables:

$LOC_TIP@Entidades.dat= "N" : Para asegurarte que no utiliza los otros índices

$ENT_TIP_LOC@Entidades.dat = ~CLT_TIP@vConta.dat + "EMP" + $EMP_ID_ENT@Entidades.dat

Nota que el tipo de entidad cliente es multiempresa, por lo tanto el tipo se guarda con la empresa asociada. Si no fuese multiempresa harías:

$ENT_TIP_LOC@Entidades.dat = ~CLT_TIP@vConta.dat 

Aunque para que te sirva en los dos casos, y dado que utilizamos la búsqueda de cualquier palabra, podrías poner:

$ENT_TIP_LOC@Entidades.dat = ~CLT_TIP@vConta.dat + "EMP" + $EMP_ID_ENT@Entidades.dat + "    " + ~CLT_TIP@vConta.dat 

 

Espero te aclare lo suficiente. Un saludo

 

Nacho

http://www.vtodo.net