Dudas sobre el uso de windows y datawindows en Power Builder para hacer un mantenedor de tablas

Hola master quería preguntarte como trabajas tu por ejemplo
tengo 10 tablas en mi base de datos a esas tablas tengo que hacerles un mantenedor
¿Cómo lo harías tu para cada tabla utilizarías una windows distinta con su respectiva datawindow o solo utilizarías una window con una datawindows y lo que harías seria cambiarle el objet a la datawindows? ''

3 Respuestas

Respuesta
1
La solución más interesante sería que armes una ventana "modelo" y la utilices cambiando el dataobject.
Podrías invocarla mandándole como parámetro que DW deseas usar.
Si necesitaras mejorar la funcionalidad de algún ABM deberías crear otra heredada de esta ventana "madre" y agregarle la funcionalidad.
Yo trabajo con el siguiente esquema:
Una ventana "ADMINISTRADORA" que tiene la funcionalidad de mostrar TODOS los registros de la tabla y/o borrarlos, exportarlos, etc. y una opción de Altas y/o Modificación que me da acceso a otra ventana de INPUT donde ingreso los datos del nuevo registro o modifico los de uno ya existente.
Estas ventanas son ventanas "base", cuando quiero ampliar la funcionalidad, las heredo en otras y les agrego dicha funcionalidad.
Por ejemplo:
Administración de Rubros:
Uso esquema básico
Administración de Artículos:
Uso una ventana heredada que me permite Crear Rubros.
Al trabajar con este esquema tienes una ventaja, al momento de mejorar las ventanas BÁSICAS mejoras TODO lo que de ellas dependa.
Pero tienes un problema, si "metes la pata" entonces estas "metiendo la pata" ent TODO lo que de ellas dependa.
Suerte!
Respuesta
1
Con respecto a tu pregunta, lo mejor y adecuado sería que diseñaras un formulario para cada tabla, pero si la tabla tiene alguna relación con otra podrías hacer en un solo formulario.
Cualquier otra duda, solo pregunta
¿Si las tablas están relacionadas como podría trabajarlas en un solo form'?
Simplemente utiliza un datawindow seleccionando los campos de las tablas que deseas visualizar.
Me refiero para gravar no para mostrar datos, o para actualizar datos
Si estas trabajando con datawindows, lo único que tienes que hacer para grabar las tablas es por ejemplo:
dw_1.Update();
dw_2.Update();
y si estas trabajando con código sql:
INSERT INTO(campos de la tabla) VALUES(los valores de la tabla);
Respuesta
1
La lógica apunta a que cada tabla debería contener un windows y un datawindow, puedes hacer una ventana genérica la cual permita un mantenimiento, (altas, bajas, cambios), y luego crear herencias para darle mantenimiento a tus tablas,
en el caso numero 2 que expones, el poner un mantenimiento y cambiar el datawindow object, no tiene sentido, pues tendrías que abrir una tabla para darle mantenimiento, y luego cerrar y volver a abrir, pues al ser una pantalla independiente, esta no puede ser abierta más de una vez, he allí por que el utilizar las herencias.
Amigos
Tengo estas 2 tablas
Región
- reg_cod
- reg_descripcion
ciudad
- ciu_cod
- ciu_reg_cod
- ciu_descripcion
los dos campos son drop dawn datawindows
region muestra reg_descripcion
y por debajo va reg_cod
ciudad muestra ciu_descripcion
y por debajo va ciu_cod
mi pregunta es como puedo filtrar las ciudades dependiendo de la region que elija o sea reg_cod = ciu_reg_cod
De antemano le digo que no puedo utilizar un retrieval argument por otro problema que se me genera quería saber si lo podía hacer de otra forma
De antemano gracias.
manuel.
Pues no entiendo porque no puedes usar un argumento en el datawindow, me imagino que es porque cuando la pantalla se pinta aparece un box, solicitando los argumentos de cada dropdowndatawindow
Sin embargo la solución es muy sencilla
Puedes construir un procedimiento para cargar los datos del dropdowndatawindow. En el propio datawindow control el cual por ejemplo podría llamarse ue_cargar_ciudades
Ej.
evento ue_cargar_ciudades( as_region STRING)
DATAWINDOWCHILD ldwc_local
IF (THIS.GetChild('ciudad', ldwc_local) = 1) THEN
ldwc_local.SetTransObject(SQLCA)
ldwc_local.retrieve(as_region)
END IF
Este evento puedes llamarlo cada vez que cambie el valor de región en el evento itemchanged, e igualmente para que no aparezca el box de solicitud de parámetros, en el evento CONSTRUCTOR en donde puedes poner un dato cualquiera para llamar dicho evento, por ejemplo el primer valor que tenga regiones.
Cuando cambie el valor de regiones, entonces envías este valor al procedimiento y este cargará en el dropdowndatawindow todos los registros relacionados con dicho valor (región)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas