¿Cómo hago un formulario tabular...?

Tengo un formulario, en el cuál van a llenar además de los datos de ese registro, una bitácora de avances...
Pensaría en una tabla extra que vinclularía en relación de uno a muchos... Pero no se como hacerlo aquí...
Pensé en un subformulario, pero no lo puedo colocar así,...
Arriba aparece todo un formulario del proyecto...
Fecha Evento
11/02/2010   El proyecto ha avanzado un 10%....
¿Dónde puedo localizar información al respecto...?
¿O qué me puedes sugerir tu...?
Pd. Cree una vista editable, pero creo que solo modifica contenidos, pero no permite crear...

1 respuesta

Respuesta
1
A ver si comprendí bien.
¿Tienes un formulario con datos y a su vez ese formulario debería contener información que se va agregando en distintas oportunidades?
Yo sugiero un formulario por con sus datos y un botón "crear evento" que abra un formulario hijo y herede el ID del padre.
Formulario Padre
Campo 1: dato 1
Campo 2: dato 2
Y Aquí insertar una vista embebida que muestre solo los hijos de ese documento, para eso la vista tiene que estar categorizada por el ID, y en las propiedades de la vista embebida poner que solo muestre los documentos que estén categorizados por el ID del padre.
No se si me explico correctamente, si ma so menos tienes idea de lo que hablo espero haberte orientado, sino, avisame y te explico con más detalle como hacerlo.
Saludos.
Si más o mnooes es eso...
¿Un formulario hijo es un subformulario...?
¿Cómo se hace que el hijo herede el ID del padre?
Me gustaría entender como funciona este asunto de los subformularios... ¿Si le cuelgo un subformulario a una base de Lotus como quedan los registros de ese subformulario?
Por ejemplo:
ID_Registro Datos
Subformulario
Fecha Evento del Día
Lógicamente queda:
ID_Registro1 Datos1 Fecha 1 Evento del día 1
¿El 2o registro del subformulario como queda?
ID_Registro1 Campo1 hasta N Fecha 1 Evento del día 1
ID_Registro1 Campo1 hasta N Fecha 2 Evento del día 2 ( Almacena de nuevo todo el formulario en el registro...)
ID_Registro1  Fecha 2 Evento del día 2
Y ya no almacena los campos del 1 al N...
Esto no me queda claro...
Lo incluyo aquí porque es relacionado con el mismo tema... Tal ves esto me ayuda a aclarar más las cosas...
Gracias
Vamos por partes un subformulario es un subformulario, solo eso, NO ES UN HIJO.
El subformulario sirve para cuando tienes un grupo de campos que se repiten en distintos formularios, pones estos campos en un subformulario y después insertas el subformulario en todos los formularios que lo necesites. De esta forma evitas ingresar varias veces los campos.
Cuando insertas un subformulario en un form, no te lo va a permitir si se repitiera el nombre de algún campo.
Los formularios son por defecto del tipo Document, pero tambien existen los Response y los Response to Response.
Los Response son los que llamamos hijos, por que? Porque en realidad son formularios que responden a un document, no puede existir un documento del tipo respuesta si no existe un documento padre.
Voy a indicarte paso a paso un simple ejemplo para que veas como funciona y después puedas aplicarlo a tu caso en particular.
1) Crea un formulario llamado "Padre" del tipo document.
2) Crea un formulario llamado "Hijo" del tipo Response. En la segunda solapa de las propiedades del form marca la primera opción que dice "Fórmulas inherit values from selected document", esta opción sirve para heredar valores de otro documento.
Agrega un campo de texto también llamado texto.
3) En el formulario padre agrega un campo de texto del tipo Computed when composed que se llame ID y como valor calculado ponele @Text(@DocumentUniqueID)
El @Text(@DocumentUniqueID) devuelve una combinación automática de números y letras única para ese documento, sirve para identificarlo, seria una clave primaria.
También agrega otros campos como Nombre, Apellido, etc etc.
4) En el formulario hijo agrega un campo de texto que se llame IDPadre, que sea computed y tenga como valor calculado ID.
5) Crea una vista que se llame Hijos, donde la fórmula de selección sea SELECT form = "Hijo" y revisar que en las propiedades de la vista, en la segunda solapa, este DESMARCADA la opción Show response documents in hierarchy, esta opción permite ver los documentos del tipo response como si fueran document.
La primer columna debe hacer referencia al campo IDPadre y la segunda columna al campo texto.
6) Anda al formulario Padre y en el menu Create -> Embedded Element --> View, del cuadro que se despliega a continuación selecciona la vista Hijos. En el evento Show single category de la vista embebida pone ID.
7) Crea un botón dentro del Padre llamado Creer Hijo y ponele como fórmula lo siguiente:
@Command([FileCloseWindow]);@Command([Compose];"Hijo")
Siempre para que Lotus te permita crear un documento hijo, el documento padre debe haber sido guardado al menos una vez.
Y esto es todo, hace una vista para ver los documentos padre, crea un documento, empezá a crearle hijos y mira como va quedando
Perdón el punto 7 seria así:
7) Crea un botón dentro del Padre llamado Creer Hijo y ponele como fórmula lo siguiente:
@Command([Filesave]);@Command([Compose];"Hijo")
=)
Saludos Natalia,
He estado utilizando el código,
1.- Cuando se cierra la ventana después de crear al hijo, este no se ve en el formulario del padre...¿Qué me hace falta para poder ver el resultado?
2.- No he localizado donde deshabilitar que la vista del padre coloque a los hijos.. La intensión sería tener acceso a los hijo unicamente cuando el usuario ingrese en el formulario y no a través de las vistas...
Las pruebas la estoy realizando desde una base de datos completamente nueva...
Esto lo tengo que aplicar a una BD existente, es posible crear el campo de ID, según entendí ese ya existe, pero no se si haya alguna dificultad por base a un registro existente... Porque de todas formas sería un campo oculto...
Espero tus comentarios ...
Muchas gracias...
Todos los documentos tienen un único ID, como esto lo vas a aplicar a una base que ya tiene documentos creados, vamos a cambiar el campo llamado ID en el documento padre, lo pondremos como Computed (Calculado) y cambiamos su fórmula a esta:
@if(ID = ""; @Text(@DocumentUniqueID); ID);
De esta manera completamos el campo para aquellos documentos que ya hayan sido creados con anterioridad y para los nuevos se calcula el id.
La vista de los hijos las vas a acceder desde el formulario padre. ¿Pudiste hacer la vista?
Te envío el link a una imagen donde te muestro como insertar esta vista ene l formulario padre:
http://img176.imageshack.us/img176/8631/te1.jpg
En esta otra imagen te muestro como poner que solo muestre los hijos.
http://img716.imageshack.us/img716/5376/te2.jpg
Seleccionando la vista embebida y yendo al cuadro de abajo podes ingresar la condición que en este caso seria ID.
Saludos Natalia,
Fíjate que paso un dato curioso...
Estuve realizando pruebas, de utilizar diectamenre la barra de acceiones de la vista, en la cual coloque para crear el hijo, editarlo y borrarlo...
Estuvo trabajando ok... en las pruebas...
Me decidí a pasar lo a la base principal, cargue los ID conoforme a indicaciones y todo marchaba ok, pero no se que le moví o que paso y ahora ya no toma los comendos de la barra de acciones del hijo... sino que marca un error de registrso no seleccionado...
¿Tendrás alguna idea de como puedo pasarle el número de documento al formato hijo...?
Espero tus comentarios al respecto...
Gracias...
Saludos Natalia:
Lo anteiror lo resolví de la siguiente forma:
1.- En el formato Padre, coloque un botón que indica crear hijo,... Y conforme me indicaste este controla la creación del registro "
2.- En la vista de Hijos, cree las acciones de Eliminar, Editar y estas controlan los registros ya creados.
¿Qué opinas?
La vista del hijo aparece en desde luego en área ade todas las vistas.. he estado intentando ocultarla, pero si se oculta en est parte se oculta también en el formulario...
¿Esto es inevitable? ¿O se pude ocultar sin afectar el formulario...?
Gracias...
Perdón, no se si entendí bien la pregunta.
Para ocultar las vistas del listado de vistas tienes que poner todo el nombre entre paréntesis, por ejemplo, si la vista se llama "Hijos" para que no se vea en el listado de vistas deberías renombrarla como (Hijos) y en el formulario padre volver a incrustarla, ya que el padre quedara buscando la vista Hijos y esta ahora paso a llamarse (Hijos), de esta manera la ves en el formulario pero no en el listado.
Saludos Natalia,
Gracia... por tu respuesta ...
En la vista del hijo al ingresar en el formulario... aparecen también los hijos de otros registros...
Cambie la formula orginal de Select from = "Bitacora"
Bitacora = hijo...
He utilizado:
Select from = "Bitacora" | @children
Pero no jala...
QUE fórmula excluye y deja unicamente a los hijo de cada partida... Para colocarlo en el formulario...
En la vista deben verse todos los hijos, de todos los documentos.
La exclusión la haces desde el formulario donde insertas la vista.
Te vuelvo a enviar el link de la imagen que muestra de que forma: http://img716.imageshack.us/img716/5376/te2.jpg
Al estar la vista categorizada por ID del padre, cuando en el documento padre insertas la vista, en los métodos de la vista insertada tienes que ponerle que solo muestre los documentos que tienen como primera columna por valor, en este caso seria el campo ID (porque estamos dentro del padre).
Saludos Natalia,
Creo que comenti un error previamente, y la solución que le di no fue la más adecuada y ahora al tratar de hacer lo que me dices se complica...
En el formulario del hijo, se me esta presentando un problema:
Al crear el hijo uso un botón con el siguiente código:
@Command ([FileSave]);
@Command ([Compose] ;"Bitacoras") <-Bitacoras es el formulario hijo.
El campo de ID_Record que es donde se almacena la identificación del Registro del formulario general (Form_Gral)
Tiene valor por ejemplo: 32CC0156BD0249EA862576E1005ECA7E este valor lo veo en el formulario frm_gral ( padre )
En el titulo del formulario hijo ( Bitácoras ). Tiene la siguiente instrucción:
ID_Record_P <- Campo en el formulario hijo de tipo text, y Computed tiene como valor: ID_Record
El campo lo deja en blanco. Nunca toma el valor de ID_Record padre.
Al ver esto coloque la función: @Text(@InheritedDocumentUniqueID)
Y obtenía el valor de ID_Reciord.
¿Qué estoy haciendo mal?
Porque no pasa el valor del ID_Record al hijo.?
Espero tus comentarios al respecto...
Gracias..
Seguramente te falta marcar en las propiedades del formulario hijo, en la segunda solapa, el primer check.
El campo ID_Record_P debe ser calculado al crear "Compute when compose".
Si una vez modificada la opción del formulario hijo, al crear uno nuevo sigue sin heredar el valor, cambiar la fórmula del mismo por la siguiente:
@if(ID_Record_P = ""; ID_Record; ID_Record_P)
Para los documentos ya creados deberás correr una agente que actualice ID_Record_P.
Primero tratemos de que te herede el valor en los nuevos hijos que crees. La actualización de los ya creados la hacemos al final con un simple agente.
Saludos Natalia,
Ya realice los cambios... En ID_Record_P a "Compute when compose" y coloque la fórmula... En el campo ID_Record_P pero sigue sin recibir el valor del ID_Record...
A ver si lo estoy haciendo bien...
Seleccino crear en un documento que ya tiene el valor en ID_Record... y me aparece el formulario de bitácora, para cargar los valores del hijo.
Pero este no lo toma el ID_Record_P del formulario de bitácoras ( Hijo)...
Al ver la vista del hijo... Unicamente, desde el designer
En las columnas de ID_Record coloca no categoriado y en la seguinda que es el ID_Record_P lo deja vacío... Y si llena los campos de Fecha y de Evento...
Espero tus comentarios...
Gracias...
Lo más importante para que herede los datos es que tenga marcada la primera opción, de la segunda solapa, el formulario Bitácora. ¿Eso esta?
Te mando una imagen para que veas la opción a la que me refiero.
http://img510.imageshack.us/img510/4057/opcionl.jpg
Si esta opción no esta marcada en el formulario Bitácora, nunca va a heredar los datos
Otro punto importante es que el documento padre sea grabado antes de intentar crear el hijo. La fórmula del botón de crear reemplázala por:
@postedCommand([Filesave]);@postedCommand([Compose];"Bitacora")
Que los hijos se muestren en la vista insertada en el padre depende exclusivamente del campo ID_Record_P, por eso es muy importante que se herede el campo ID_Record a este campo.
La vista tiene que ser solo del formulario bitácora, donde la primer columna muestre el campo ID_Record_P. Cuando la insertas en el padre, en "Show Single Category" indicas ID_Record
No hay ninguna ciencia para heredar campos, simplemente tiene que estar marcada la opción que te indique anteriormente.
Revisa que eso esta marcado y si aun así no logras que herede el dato, voy a enviarte directamente una base con los 2 formularios y la vista funcionando así podes comparar o en su defecto, copiar y pegar los formularios a tu base.
Contame si funciona, sino, te envío la base.
Saludos,
Revise todo de nuevo, y localice la falla...
Ya localice el error en todo esto, ahora si fue como cuando programas en C y al final no eliminast un ";" ...
Sorry...
Al momento de abrir el formulario... debe estar en modo de edición para que tome el valor.
Ya modifique el botón para que si el usuario lo elige y no esta en modo de edición primero lo active y después permita la creación del hijo...
Muchas gracias..
Lo dejo abierto aún por si hubiese algún comentario...
Me alegro que hayas encontrado la falla.
¿Pudiste hacer la vista dentro del padre con los formularios de bitácora?
Saludos,
Si ya ingresamos en el formulario padre y unicamente aparecen los registros que le competen a él...
¿Alguna recomendación al respecto...?
Muchas gracias...
Por mi parte nada más.
Cualquier otra duda acá estoy.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas