Relaciones padre-hijo Autor: Fecha de creación: Fecha de últ. modificación: Versión de VDF: Pepe Guimarães 29/08/2.006 21/09/2.006 11.1 Asunto Se trata de crear una vista tipo cabecera-detalle, en la que se rompe la relación de algunos tablas y se crean unas nuevas para esos campos. Hemos partido del ejemplo order de la versión 11.1 de VDF. Someramente, y antes de pasar a los detalles, lo que se ha hecho en este workspace es crear una tabla nueva (tstrelat), crear campos nuevo en Customer relacionado con tstrelat y en OrderHead un campo nuevo referente al "id" de tstrelat pero que no está relacionado. Se crearon los views, selection list correspondientes a tstrelat Se modificó customer para que se pueda introducir los datos de tstrelat. Partiendo de order.vw se creó un order_patron.vw en donde se realizaron las modificaciones que servirán para explicar lo que se hizo. Para agilizar las explicaciones junto al ejemplo se puede encontrar los ficheros necesarios para adjuntar a las carpetas que se mencionan: Carpeta Appsrc -TestRelate.vw : view de testrelat. -tstrelat.sl : selection list de tstrelat -Customer.vw: customer modificado para introducir datos de tstrelat -Order_patron.vw : típico cabecera-detalle con las modificaciones pertinentes Carpeta ddsrc - ".fd" y ".dd" de customer, orderhea y tstrelat Carpeta dat © Moose Software SL www.moose-software.com - ".dat", ".k*", ".hdr" , ".tag" de customer, orderhea, orderdetal y tstrelat - Filelist.cfg Modificaciones en el View Las modificaciones importantes referentes a order_patron.vw se muestran a continuacion y se explican con imagenes: • • En Entering_scope se rompe la relacion customer-tstrelat y se crea la relacion orderhea-tstrelat. En Exiting_scope se re-establecen las relaciones a su estado original. • Se muestra el Data Dictionary Object Structure (DDOS). Fijarse que tanto customer_dd como orderhea_dd tienen como DDO_server a tstrelat_dd. © Moose Software SL www.moose-software.com En el objeto customer_dd hemos definido que cada vez que se salga del campo customer.number se ejecute una "procedure" que se llama CustomerData. En esta comprobamos si ha habido variacion de cliente en el pedido o si es un pedido nuevo en cuyo caso obtenemos el valor del campo testId del cliente y lo enviamos al DD de testrelat para que ejecute "showvalues" © Moose Software SL www.moose-software.com Nos muestra la procedure ShowVAlues de testrelat. En ella buscamos el registro de tstrelat y hacemos que se muestren todos los valores de tstrelat con "request_assign" Finalmente compilar, probar y estudiar ! Mejoras que se pueden hacer o bugs encontrados - Si se abre order_patron se introduce un cliente, se abre el view de clientes en la pestaña "other" se puede ver que el campo de id de testrelat está en blanco. Si se refresca la información ya aparece/muestra todos los datos Comandos a estudiar/ver - Entering_scope - Exiting_scope - Set_relate - Request_assign - Field_exit_msg - Field_Changed_State - Field_current_value © Moose Software SL www.moose-software.com