Ayuda: Filtrar antes de localizar


([N4] ns) #1

Buenas, estoy atrancado en algo que seguro tiene una solución sencilla pero soy principiante y no doy con la solución.

 

Tengo 3 tablas: Entidades, Entidades_Direcciones y Servicios.

 

Un Servicio tiene una entidad asociada y una vez seleccionada la entidad quiero filtrar de la tabla ENTIDADES_DIRECCIONES de modo que me aparezca un localizador para seleccionar solo entre las Direcciones de la Entidad ya seleccionada.

 

He intentado crear un botón (en formulario SERVICIOS) de modo que este ejecute un proceso con el comando FILTRAR LISTA pero no lo consigo, no se si tengo que poner tabla Origen y Destino en el proceso ni tampoco como alimentar una variable que he creado en el proceso para coger el cliente actual y filtrar así en la tabla que contiene las direcciones de todos los clientes.

 

Alguien me puede ilustrar con un ejemplo de proceso o lo que fuera mas conveniente en este caso?

 

Gracias por adelantado!!


([N4] ns) #2

Una ayudita plis...


([N1] Nacho) #3

Una sugerencia:

Proceso con origen SERVICIOS (Ficha), que será donde estés.

Cargar maestros ENTIDADES

   Cargas historicos ENtidades_Direcciones

<span style="white-space: pre;"> Aquí tienes una lista con las direcciones de la entidad. Ahora deberías presentar una rejilla, y que seleccione una dirección

<span style="white-space: pre;"> Luego recoger la dirección seleccionada

 

 


([N4] ns) #4

Muchas gracias, ahora estoy unos dias fuera pero en cuanto vuelva lo probaré!!

 

Un saludo


([N4] ns) #5

Hola NAcho, acabo de probar el proceso que me comentaste pero no me aparece el comando CARGAR MAESTROS, solo CARGAR LISTA, CARGAR PLURALES Y CARGAR LISTA.

Sabes porque puede ser? 

La tabla ENTIDADES es Maesta y SERVICIOS (Desde donde quiero filtrar) es Maestra tambien. Tendrá algo que ver? Tambien he buscado ese comando CARGAR MAESTROS desde un proceso de una tabla Sub-Maestra y no aparece tampoco.

 

Gracias


([N1] Nacho) #6

El proceso FILTRAR LISTA, tiene que tener ORIGEN FICHA SERVICIOS, estando en una línea de ese proceso (con origen "ficha servicios"), dado que en la tabla SERVICIOS tienes que tener un campo ENTIDAD que apunte a la tabla ENTIDADES. Si esto es así debe aparecerte la opción LEER FICHA DE MAESTRO, por el campo ENTIDAD.

Perdona, la opción CARGAR MAESTROS es para cuando el origen es LISTA, con origen FICHA el LEER FICHA DE MAESTRO, puesto que lógicamente solo leera una ficha.


([N4] ns) #7

gracias voy a probar...


([N4] ns) #8

Perdona que pregunte tanto pero es que me atranco una si una no...

He hecho lo que me el proceso que me has comentado.

LEER MAESTRO ENTIDADES

 

    LEER PLURALES ENTIDADES_DIRECCIONES

 

Pero luego dices que lo cargue en una rejilla y recoja la selección. Bien eso no se como hacerlo de una forma operativa para el usuario.

He puesto un control OBJETO en la ficha de SERVICIOS y le digo que su origen es el Proceso y que muestre la salida en la Rejilla correspondiente. Ahora el problema esque la rejilla sale vacía, y no se como hacer que se lanze el proceso solo cuando se selecciona un cliente...

Tambien he conseguido filtrar las direcciones de las entidades con otro proceso (que adjunto en archivo), este es interesante porque me filtra lo que yo quiero pero tampoco tengo control sobre cuando hacerlo ni como quedarme con la selección.

Estoy bastante perdido... 

[attachment=5333,555]

 

 


([N1] Nacho) #9

Vamos a empezar por el principio.

Tenemos un formulario de servicios. En el tenemos 2 campos "cliente" y "direccion", cada uno apunta a su tabla correspondiente.

Y tenemos que escoger una dirección del cliente de la ficha, no?

Primero, en lugar de crear un proceso independiente, que yo creo te está liando, creas un evento en el formulario.

En este evento pones el codigo que tienes en el proceso, con un pequeño cambio:

- En lugar de "Añadir ficha a la salida" --> coges el codigo de la dirección en una variable local -> SET CodDireccion

- Al final del proceso (debajo de "cargar lista", es decir en una línea con origen ficha de servicios), haces el modificar campo, poniendo en el campo "direccion" la variable "CodDireccion"

 

Por último al botón le pones que ejecute el evento.

 


([N4] ns) #10

Muchas gracias por la ayuda, has comentado un par de cosas que me van ayudando a entender todo esto...

He hecho lo que me has dicho pero tengo un problema todavía. El caso es que se me muestran las direcciones del cliente seleccionado en una rejilla emergente, pero si doy doble-click para seleccionar una se me abre la ficha para edición.

Como puedo hacer esto agil para un cliente? Se puede seleccionar con doble click y que valla al campo correspondiente?

 

graciass

 


([N4] rcueto.velneo) #11

Hola:

Para evitar que la ficha seleccionada sea editada en un formulario, usa en el evento una rejilla que no tenga asociado formulario de modificación.

De todas formas has de saber que el comando de instrucción “Seleccionar ficha de la lista” no devuelve la selección realizada por el usuario (está incluido en nuestro sistema de gestión de incidencias con el código 1232). No obstante, podrás hacer lo que pretendes de la forma siguiente:

En la rejilla de direcciones:
- Crea un evento que lea la ficha seleccionada y guarde el código de la misma en una variable global.
- Crea una conexión del tipo “Item: Cambio de seleccionado” que dispare este evento.

De esta forma cuando lances la rejilla desde el evento del formulario, al seleccionar un registro tendrás el código del mismo en la variable global.

En el evento que ya tenías programado –el del formulario-, después de usar el comando de instrucción “Seleccionar ficha de la lista”, modifica el valor del campo correspondiente con la variable global indicada anteriormente.

Un saludo.


([N4] ns) #12

Buenas rcueto, he creado el evento en la rejilla y una variable global para recoger el código de la Dirección seleccionada.

Te adjunto el evento de la rejilla a ver si me dices porque siempre me coge el valor 0 cuando selecciono un registro de la rejilla si yo le estoy indicando que coga el #ID y me lo meta en mi variable global.

Gracias

[attachment=5423,559]


([N4] rcueto.velneo) #13

Hola:

Te rogamos nos indique qué tipo de señal has declarado en la conexión de evento que dispara dicho evento.

Un saludo.


([N4] ns) #14

Pues he probado con dos tipos de Señal:

<span style="white-space: pre;"> -Item_Cambio de seleccionadao

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

 

con ambas me coge el valor 0


([N4] rcueto.velneo) #15

Hola:

Debería funcionar. Asegúrate de haber reiniciado el proyecto de datos tras la creación de la variable global en el mismo. Si ya lo has hecho, entonces te aconsejamos que vayas lanzando mensajes desde los eventos, para comprobar si se disparan, si se lee la ficha seleccionada o no, etc.

Un saludo.


([N4] ns) #16

buenas, ya he hecho paradas en los eventos y procesos, tambien he borrado la instancia del proyecto entero y la he vuelto a crear y he metido datos nuevos.

todo va bien, es decir, se filtran los registros que tienen que filtrarse y se muestran en una rejilla para hacer doble-click en el que busquemos. Al hacer doble-click he mostrado el #ID seleccionado con un Mensaje y es correcto, lo que no funciona es asignar ese valor a la variable Global con el comando "Modificar variable global ( COD_DIRECCION@MultiSprint, #ID, )" 

 

En las propiedades de la variable global (adjunto captura) he puesto "PERSISTENCIA: MEMORIA", tendrá algo que ver? Lo he puesto así porque no me interesa guardar en disco esa variable y creo que es lo mas lógico.

 

Que hago con la variable global? Siempre tiene valor 0

 

[attachment=5476,568]


([N1] JorgeVelasco) #17

Buenas,

En teoría la variable global está bien, no tiene que ver que esté en memoria.

Te cuento como lo hago yo, una de las maneras.

Lo que quiero es localizar direcciones de un proveedores un documento de compra:

1.- Tengo una rejilla de direcciones. En esta rejilla tengo declarada una variable de tipo numérica a la que doy valor con un evento al hacer docble click. En el evento leo la ficha seleccionada y con un set le doy el valor del código.

2.- En el formulario donde localizo las direcciones del proveedor tengo un evento. En el evento tengo lo siguiente (adjunto imagen). Creo un objeto que es la rejilla que he comentado antes, después me quedo con los registos que necesito y los añado al objeto. Después disparo el objeto y con la instrucción get recojo el valor de la variable definida en la rejilla. Después sólo he de modificar el campo.

Esta es una de las maneras sencillas.

Espero que esto te ayude

Un saludo

 

 

Jorge Velasco

SISTEMA BINARIO

[attachment=5478,569]


([N4] fgutierrez.velneo) #18

¿Mensajeas el valor de la variable global en el propio evento y es 0 ó ese valor lo ves en otro sitio?

Un saludo.


([N4] ns) #19

Gracias Jovefer, probaré tambien esta forma que me comentas y así voy conociendo mas cosas, porque habia visto lo de los manejadores de objetos y no tenía ni idea de que era...

 

fgutierrez: Mensajeo el valor de la variable en los 2 eventos que tengo, en el de la rejilla de direcciones y en de Servicios.

Por ej: he probado a mostrar el valor antes de asignarle nada y da cero, despues muestro el valor de mi campo #ID (de Direcciones) y me sale 3 por ej: hago el comando Modificar_VAriable_Global y vuelvo a mostrar la variable dandome cero de nuevo.


([N4] fgutierrez.velneo) #20

Veo por las capturas que estás usando la 7.1.0. Instala la versión 7.1.1 y comprueba que no tengas otras librerías anteriores instaladas. Busca tanto las librerías de Velneo V7 como las de QT.

 

Un saludo.