Pregunta de novato


([N1] juanpelaez) #1

Buenos Días, primero pediros disculpas por que seguro que para vosotros es una tonteria pero para mi es un autentico misterio …
estoy queriendo cargar una tabla en una rejilla a traves de un proceso para poder llamarlo desde una opción de menú. Creo que al crear el proceso he seguido los pasos correcto pero en el apartado “Interfaz:Procesar” no encuentro mi rejilla donde cargar los datos. Os adjunto una imagen de la situación por si podeis ver algo raro …

Muchas Gracias,


([N1] wikan) #2

Los comandos de interfaz se usan en formularios.

Tienes que crear una acción que llame al proceso y verás que luego se activa otro disparador para que selecciones que elemento gráfico muestra la lista de registros que devuelve el proceso.

PD: Para que los demás novatos también puedan avanzar, pon un título descriptivo y usa las etiquetas para que pueda ser encontrado.


([N1] vgegeo) #3

A falta de imagen:

No se para que necesitas “Interfaz: Procesar”

Pero el proceso consiste en:

Propiedades del proceso:

Tabla destino: TU_TABLA
Destino: Lista

¿Por que? Digamos que el destino final del proceso, es mostrar una lista de registros de TU_TABLA

Instrucciones del proceso:

-Cargar lista (TU_TABLA, POR_UN_INDICE)
–Añadir lista a la salida

Aqui ya has terminado con el proceso.

Ahora te hace falta la accion para ejecutarlo en tu menú:

-Con el proceso marcado, pinchas para crear una accion

Propiedades de la accion:
Comando: Dispara objeto
Objeto 1: El proceso que has creado (lo pone automaticamente porque has pinchado en crear una accion con el proceso marcado)
Objeto 2: Aqui seleccionaras la rejilla que quieras de TU_TABLA

¿Por que esto ultimo?
Porque si recuerdas, el destino de tu proceso, es una lista de TU_TABLA, por lo que aqui el vDevelop te ofrece los objetos relacionados con TU_TABLA

Y ya por ultimo, colocas la ACCION creada en el menu que quieras que esté disponible.


([N1] juanpelaez) #4

(WIKAN) : tienes razon, la proxima vez etiquetare correstamente la pregunta. GRACIAS.

(VGEGEO) : y si la rejilla está dentro de un formulario que quiero mostrar ? …


([N1] vgegeo) #5

Dos opciones:
-Si el formulario es sin origen:

1.Colocas dentro del formulario una vista de datos
2.En las propiedades de la vista de datos:
…En el objeto 1: el proceso de antes
…En el objeto 2: la rejilla de TU_TABLA

-Si el formulario es con origen:

1.Creas el mismo proceso que antes, pero esta vez, en tabla asociada, la misma que el formulario, y origen ficha
2.Colocas dentro del formulario una vista de datos.
3.En las propiedades de la vista de datos:
…En el objeto 1: el proceso nuevo con tabla asociada
…En el objeto 2: la rejilla de TU_TABLA

Esta es la gracia del concepto ENTRADA / SALIDA de Velneo V7

Y por ultimo, creo que @wikan se referia mas bien al asunto del hilo, ademas de las etiquetas.
“pregunta de novato” no ayuda para busquedas posteriores.

Saludos


([N1] juanpelaez) #6

Saludos,

Llevo todo el día atascado …

Resumo la situación :

1.- tengo una tabla de clientes presentada en una rejilla dentro de un formulario ( Foto01 ).
2.- Quiero localizar un registro tecleando en la casilla de busqueda ( Foto02 ).
3.- Al pulsar el boton de (BUSCAR) desaparecen todos los registros y NO consigo saber porque …

4.- Al pulsar (BUSCAR) lanzo un evento llamado (BUS) Foto03.
5.- El Proceso BUS_CTE_3P Foto04.
6.- Rastreando la ejecucion del programa compruebo que los valores de las variables locales son Correctos …

Alguna idea ???




([N1] juanpelaez) #7

Las fotos …


([N1] juanpelaez) #8

Bueno, desesperado estoy !!!, no puedo adjuntar mas foto, si alguien me explica como y le interesa puedo enviar la solucion

Gracias.


([N2] Esfero) #9

Faltan las fotos 3 y 4, pero si las variables son correctas, comprueba el objeto de la búsqueda, los diferentes filtros que estás haciendo y la relación entre ellos(cruzar, añadir), piensa que la búsqueda realiza los filtros de arriba hacia abajo y sobre los registros del filtro anterior


([N2] jorge) #10

Hola Juan,

Yo lo hago de la siguiente manera.

Tengo un componente busqueda al que llamo CLIENTES_TROZOS
Este componente tiene una variable y dos indices
Variable
TXT_BUS
Indices
NOMBRE
TROZOS - Cruzar - PARTS - NAME(TXT_BUS)

El formulario no tiene tabla asociada.

Creo las variables TEXTO_BUSQUEDA y OK

El control que sirve de vista de datos lo llamo VISTA_REJILLA

Creo un Manejador de Evento: BUSCAR

Rem ------------------------
Rem Creo una cesta vacia
Rem ------------------------
Cesta: Crear cesta local (CLIENTES@vEjemplo_dat, Cesta)
Rem ------------------------
Rem Ejecuto la busqueda
Rem ------------------------
Crear manejador de objeto (bus, Busqueda CLIENTES_TROZOS@vEjemplo_app)
Set variable local de objeto (bus, TXT_BUS, TEXTO_BUSQUEDA)
Disparar objeto (bus, No aplicable, OK)
Cesta: Agregar lista a la cesta ( Cesta )
Rem ------------------------
Rem Añado la cesta a la lista
Rem ------------------------
Interfaz: Procesar (VISTA_REJILLA, Todas)
Cortar lista (0,)
Cesta: Agregar a la lista en curso (Cesta)
Rem ------------------------
Rem Fin
Rem ------------------------

Espero que te sirva


([N1] juanpelaez) #11

Saludos,

Si todo eso ya lo hago pero no aparece nada, tiene que ser una tonteria.


([N4] Infortic) #12

Hola Juan.

¿El tipo de las variables es el correcto?

TXT_BUS y TEXTO_BUSQUEDA deben de ser alfabéticos.

¿Rellenas las variables?

Si pasas TXT_BUS a esa búsqueda no devolverá nada, porque la búsqueda por prozos necesita al menos 3 caracteres.

Debes condicionar el componente por trozos con TXT_BUS!"" y el componente del índice nombre debe de ser Todo el Fichero.

¿Con qué proceso enlazas la rejilla?, debería de ser un proceso sin código que tenga salida tabla CLIENTES en lista.

Un saludo.


([N1] juanpelaez) #13

( Para sotomayor.75 ),

¿ Que quieres decir con “TROZOS – Cruzar – PARTS – NAME(TXT_BUS)”, no lo tengo muy claro.

Gracias,


([N4] Infortic) #14

Hola juan.

Creo que vas bastante perdido. Yo te he respondido pensando que el mensaje de sotomayor era tuyo, perdona.

La forma de construir un formulario de búsqueda es bastante diferente de la forma “habitual” en la que rellenas los datos de las rejillas.

Te recomiendo que mires todos los tutoriales de búsquedas que puedas encontrar, porque creo que te falta bastante base para desenvolverte bien en este tema.

Para que te hagas una idea, para hacer bien lo que pretendes hay que hacer varias cosas:

  • El proceso que alimenta la rejilla debe de estar vacío, tiene entrada vacía y salida lista de registros de CLIENTES.
  • Necesitas un objeto búsqueda de la tabla CLIENTES, con una variable alfabética TXT_BUS y 2 componentes de búsqueda, uno devuelve Todo el fichero, y el otro usa el índice PARTS de la tabla de CLIENTES con los parámetros que te dice sotomayor, si creas la búsqueda y añades un componente de búsquedas entenderás lo que sotomayor te está diciendo.
  • En el formulario tienes una variable TEXTO_BUSQUEDA alfabética como contenido el textbox de búsqueda.
  • Además un manejador con el código que te dice sotomayor asociado al botón buscar.

Como ves son varias cosas que tienes que tener claras, en especial cómo funciona búsqueda, qué son sus componentes, cómo funcionan y cómo se condicionan.

Instalate el tutor de búsquedas

https://velneo.es/velneo-open-app/tutor-de-busquedas/

o instala vTutor (desde el vdevelop lo puedes instalar en Lanzar asistente de primeros pasos).

Necesitas entender estos temas antes que nada.


([N1] juanpelaez) #15

Otra pregunta para ir aclarando cosas … una vez Disparado el Objeto BUS ( con variable Ok )
existe alguna manera de saber si la búsqueda ha tenido éxito ?, la variable Ok devuelve el valor 1,
puedo suponer que la busqueda ha localizado el regustro ?.

Gracias,


([N1] juanpelaez) #16

Buenas tardes - noches,

POR FIN !!! he conseguido que funcione, tenia una variable mal definida. Ahora estoy tratando de perfeccionar la busqueda añadiendole diferentes opciones de busqueda.

GRACIAS a todos por vuestra paciencia y consejos, lo malo que no va a ser la ultima vez que os de la lata !!!

Juan Pelaez


([N4] Infortic) #17

Me alegro.

A lo que preguntabas, la variable OK dice si se ha ejecutado o no la búsqueda.

Que se haya ejecutado correctamente no quiere decir que devuelva algún registro, se puede ejecutar de forma correcta y no devolver ningun registro como es normal.

Si quieres comprobar la cantidad de registros devueltos, en el interior del disparar objeto tienes una lista de registros de la tabla asociada a la búsqueda, dentro de ese ámbito, la variable sysListSize contiene la cantidad de registros devueltos.


([N1] juanpelaez) #18

Otra duda mas… he parametrizado la busqueda para tener las típicas Opciones avanzadas de búsqueda ( por Nombre, trozos, palabras … ), utilizo una variable y en la condicion de activo de cada componente de busqueda lo verificco tal que así (len(TXT_BUS) > 2 & TIP_BUS = “N”)para Nombre, aqui utilizo el indice NAME, (len(TXT_BUS) > 2 & TIP_BUS = “T”) para Trozo, aqui utilizo el indice PARTS. Lo que veo que utilize lo que utilize el resultado es el mismo. Un ejemplo, oprimo el boton de búsqueda avanzada, esta pinchada la opcion de Nombre, pongo “TRES” y me devuelve tres registros : 1.- CLIENTE TREINTA Y TRES, 2.- CLIENTE TRES, 3.- CLIENTE VEINTITRES. Si eligo la opcion de trozos ( que yo entiendo que seria la qwe tendría que devolverme esos tres registros) me sale lo mismo, ya he comprobado que traspasa correctamente el parametro de TIPO DE BUSQUEDA correcto.

Alguna idea ? …


([N4] Infortic) #19

Hola.

A falta de ver imágenes de cómo está creada la búsqueda y de cómo la lanzas, a mi me parece que las condiciones las tienes mal, ponle paréntesis:


( ( len(TXT_BUS) > 2) & (TIP_BUS = "N") )
( ( len(TXT_BUS) > 2) & (TIP_BUS = "T") )


([N1] juanpelaez) #20

Saludos,

Si, efectivamente las condiciones estaban mal, bueno, poco a poco va entrando y voy entrando … son 20 años programado en RPG y cuesta
el cambio pero parece que VA !!!