Actualiz maestro-detalle

Soy novata en programación y me estoy iniciando en PB. Me encuentro con el problema de que no puedo actualizar dos tablas al mismo tiempo. O sea, me gustaría sabe alguna técnica para lograr esto. La version con la que trabajo es 7.0.

1 Respuesta

Respuesta
1
Se puede actualizar más de una tabla con una sola dw (usando la sentencia modify) o bien con dos dw. Yo te explico lo de 2 dw que es lo que interpreto que quieres por el titulo de la pregunta.
Maestro detalle es una tipo de trabajo que permite al usuario trabajar simultáneamente con tablas que están relacionadas por la clave primaria. Ej. zona - subzona.
Lo primero que hay que tener en cuenta son las restricciones de la base:
*no podes insertar registros en la tabla dependiente hasta que exista un registro en la master
*no podes borrar de la master sin borrar todos los relacionados en la detail
*podes borrar tranquila en la detail
*no podes modificar la clave de la master sin actualizar la detail
El principal problema es obtener los códigos de los registros de la Master y dependiendo de como sea tu modelo lo de la Detail, específicamente quien setea el código de la clave primaria, el dbms, el usuario o la aplicación.
Supongamos que haces una ventana que tenga 2, dws una para la master y una para la detail. Tienes que empezar a contemplar los distintos casos que se te pueden presentar. Supongamos que la dw master esta arriba de la dw detail
1. Cuando el usuario se mueve en la master tienes que ir mostrando los registros relacionados en la detail (podes ir haciendo retrieve en el rowfocuschanged de la master pero tienes que contemplar posibles modificaciones porque sino los cambios se pierden).
2. Si el usuario modifica registros en la detail no hay problemas
3. Si el usuario inserta registros en la detail tienes que setear manualmente el código de la master antes de guardar
4. Si el U borra registros de la DE no hay problema
5. Si el usuario modifica registros en la master no hay problemas
6. Si el usuario borra registros en la M tienes que borrar los de la detail
7. Si el U inserta registros en la M tienes que guardar antes de permitirle insertar en la DE ya que necesitas el código del registro de la M para setearlo a los registros de la D
Vas a tener que ir chequeando las acciones del usuario para guardar los datos cuando corresponda a fin de que no se pierda información. En esto influye como diseñaste la ventana, para ver donde tienes que poner las validaciones (por ej en botones de insertar, eliminar etc.).
Si quedan dudas escribí

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas