Formulario con separador

Lo malo de no estar dedicado de lleno a la programación en Velneo, es que despues de un tiempo, algunas cosas se pierde el hilo de como se pueden resolver u olvidar como se usan ciertos objetos, y eso es lo que me pasa cada que me toca regresar cada vez que hay que retocar los sistemas y por eso me cuesta mucho trabajo de pronto.

Tengo un formulario en el cual tengo un cuadro de texto (asociado con una variable) donde capturo un valor, busco el registro en la tabla correspondiente cuyo campo ID sea el correcto, si lo encuentro, la idea es mostrar los campos del registro.
Hasta ahí todo bien, el problema que tengo es que uso un separador de formularios, en una pestaña muestro una parte de los datos, y en la otra, el resto.
Los 3 formularios, tanto el principal, como los dos subformularios, no tienen origen de datos, ya que si les pongo un origen de datos, a la hora de abrir el formulario principal no abre nada.

Mi idea fue la de declarar variables locales en cada subformulario, que correspondieran cada una con cada campo de la tabla y mostrarlas mediante cuadros de texto enlazados con estas variables. Luego con un “Crear manejador de objeto” y “Set variable local de objeto” paso los valores del registro encontrado a las variables de cada subformulario, pero no pasa nada.
Aquí es donde me vuela la cabeza, por que si despues de pasar todos los valores agego un comando “Disparar objeto” e indico el manejador que cree para el subformulario, me abre una pantalla nueva con el subformulario con toda la información pasada correctamente, por lo que puedo deducir que al “Crear manejador de objeto” me crea un objeto diferente al instanciado en el separador de formularios, por eso este realmente no recibe ningún dato y no muestra nada, mientras que la otra pantalle que se me abre en la prueba de meter el “Disparar objeto” si tiene la información, es decir, ambas son dos instancias independientes.
Entonces ¿Cómo puedo llenar los cuadros de texto de los subformularios o acceder a las variables de la instancia declarada dentro del formulario padre (y no crear una nueva, que veo que es lo que he hecho) y que me aparezcan los datos?
Estoy abierto a cualquier sugerencia.

Mi principal sugerencia es tratar de evitar el uso de variables locales y aprovechar los formularios con tabla de origen para que los componentes estén enlazados a los campos de la tabla sin mucho esfuerzo.
¿Podría ser factible que el formulario principal donde está el cuadro de texto que hace la búsqueda por ID no tenga origen de datos, pero dentro de este formulario coloques una vista de datos donde se muestre un formulario que tenga origen de datos y que incluya el separador de formularios? (cada subformulario también deberá tener origen de datos.)
Para que el objeto vista de datos te muestre un formulario, habría que colocar como objeto 1 un proceso sin origen pero con destino ficha, donde haces la búsqueda según el texto que has colocado en el cuadro de texto. Posiblemente necesites un botón “Buscar” o una conexión de evento para refrescar la vista de datos.
Espero sea de utilidad.
Saludos,

Hola marco_rangel
Después de crear el manejador de objeto y enviar la variable local, dispara el objeto en 1° plano.
Saludos

Hola aguevara, eso que comentas es justo lo que estaba intentando, solo me quedé en blanco en cómo debería de ser el código en el evento del botón de buscar. Es decir, lo busco, ¿Y solo selecciono la ficha encontrada para que se actualicen los formularios con el origen de datos a la tabla?
Muchas gracias a todos por sus comentarios!
Saludos.

Prueba un manejador de evento que actualice la vista de datos con el comando “Interfaz:Procesar” o “Interfaz: Recalcular”

El proceso Objeto1 de la vista de datos podria incluir el codigo:

Cargar lista(TABLA@proyecto_dat, INDICE, variablelocal)
Seleccionar ficha por posicion(1)
Anadior ficha a la salida

Hay que probar, porque no lo tengo implementado, teoricamente podria funcionar.
Un saludo.

Hola aguevara, justo voy en eso, tengo el
Cargar lista (…)
que me ubica, usando un indice único, directo el registro a buscar
Seleccionar ficha por posición(1)

y justo hasta ahí me quedé, ya teniendo seleccionada la ficha no supe que hacer con ella, voy a intentar con el “Añadir ficha a la salida” a ver que obtengo.
Gracias!!!

Muchas gracias aguevara, al ser un evento disparado por el botón “Buscar”, no esta disponible el comando “Añadir ficha a la salida” :cry:
Ya tengo ubicada y seleccionada la ficha ¿Ahora qué hago con ella para mandarla a la vista de datos donde tengo los formularios con la tabla asociada.
No entiendo cómo algo tan sencillo en escencia, sea tan “complicado” (complicado, ya que aquí estamos y hasta el momento nada de lo hecho funciona) y eso me frustra.
Sigo haciendo pruebas con lo que me dé mi sentido común, pero esto de los ambitos por el momento me sobrepasa.

Hola Marco,
Ya hice una prueba y parece que si funciona.
El manejador de evento del boton, solo necesita una linea de codigo:

Interfaz: Recalcular (VIS)

Y el proceso que debes colocar como Objeto1 en la vista de datos VIS es:

Cargar lista ( TBL@proyecto_dat, NAME,
$TXT_FCH@proyecto_dat.dat, , , )
Seleccionar ficha por posición ( 1 )
Leer ficha seleccionada
Añadir ficha a la salida

Lo que tuve que hacer es usar una variable global TXT_FCH que es la que enlazas al cuadro de texto donde escribes el texto, para que pueda usarse en el proceso, sin tener que agregar un comando Lanzar objeto etc.

A menos que sea otra cosa la que quieras hacer y yo no entendi, me parece que funciona.

Un saludo.

Lo dicho en el anterior post.
Saludos

Hola aguevara, creo que me has entendido bien, pero igual, te pongo en total contexto:
Tengo una tabla de artículos, en la cual cada artículo tiene un ID único (campo independiente del ID general de la tabla) por almacén. El ID del almacén ya lo tenía en una variable local.
La intención es hacer una pantalla para el movil, en la que usando un lector de código de barras, leer el ID del artículo y mostrar su información.
El campo de texto que tengo en el formulario principal (sin origen de datos) es el que se lee por el CB. Una vez leido mando este valor a una variable global (como me indicaste) y junto con la del almacén puedo identificar de manerá única al artículo en cuestión, de hecho en todas las pruebas que he hecho, hasta ahí no ha habido problema, como lo comenté, el problema es que tenía localizado el registro y no sabía que hacer con él.
Pues bien, el proceso que tenía como Objeto1 en la vista de datos VIS estaba vació, para que al abrir por primera vez la pantalla no me apareciera nada. Lo he modificado con el código que me pasas (que de hecho era lo que ya tenía) y he agregado el comando “Añadir ficha a la salida”.
En el evento que tengo con el botón de buscar (que también se lanza despues de la tecla ENTER para que sea instantaneo con el lector de CB) lo que hago es lanzar el

Interfaz: Recalcular (VIS)

Depurando, veo que el “Cargar lista” me devuelve un solo registro correctamente (el buscado) y pues solo eso… la pantalla sigue sin mostrarme nada :cry:, Ningún cuadro de dialogo enlazado a los campos que quiero mostrar muestra nada.

Pensé eliminar el mensaje anterior ya que encontré el error que tenía, pero creo que es mejor dejarlo para que quede documentado todo, incluso mi estúpido error, de los cuales también se aprende :sweat_smile:.
El problema es que tenía un juego de formularios asignados al origen de datos de la tabla, y otro juego de formularios asignados con variables, para hacer las pruebas tanto con uno como con otro.
Una vez que hice lo que me indicó aguevara, no había visto que estaba usando el juego de formulario con variables :joy: :joy:, por eso no me estaba mostrando nada. He puesto el juego de formularios con el origen de datos Y VOILA!!!

MIL GRACIAS @aguevara!!!
tambien muchas gracias a @fernando2903 !!!

Así como al principio me sentía perdido, ahora creo que he aprendido un montón!