Problemas para relacionar dos formularios con el principal

Discute sobre las herramientas de la base de datos
Responder
jftejeiro
Mensajes: 15
Registrado: Mié Jul 15, 2020 6:39 pm

Problemas para relacionar dos formularios con el principal

Mensaje por jftejeiro »

Abusando nuevamente de vuestra generosidad y sabiduría pongo la base que estoy haciendo porque me está superando. Yo vengo de Access y sabía hacer alguna cosa pero aqui es todo totalmente diferente.
A ver si pueden ayudarme. No consigo relacionar los formularios, me explico.
Quiero que desde el formulario REGISTRO DE ENTRADA abrir los otros dos formularios Documentación Enviada y Documentación Recibida, para lo que puse dos botones.
En el formulario principal tengo un campo llamado CODIGO LABORATORIO (ID_LAB) que es el importante en todo esto, los datos que van a identificar cada ficha o caso como quieras llamarle 001,002,003 etc... los meto a mano porque no se como hacerlo para que se haga automático, el principal problema es que no borre un registro y que después los números no sean correlativos, por eso los introduzco a mano.

Bueno al grano, lo que pasa es que voy grabando y generando casos en el REGISTRO DE ENTRADA, en la ficha principal, pero cuando abro el Formulario e Documentación Enviada y Documentación Recibida para grabar ahí datos, no consigo que se abra el formulario correspondiente con el del formulario principal, 001 - 001, 002 -002 no se si me entendéis.
Estuve mirando otras bases pero no doy con el tema.
Después también en los subformularios debería verse solamente, los datos referentes al caso que esta abierto en ese momento en pantalla. No se si me explico bien.

Bueno, pues ese es mi problema y me gustaría que me pudiesen explicar como se hace o como se soluciona. Busqué por el foro pero no encuentro exactamente lo que busco y cuando lo encuentro es para se consulte un base echa y ya lo hago, pero no descubro como se hace.
Llevo tres días desengranado bases que me descargué de aquí, analizando macros etc... y ya me echa humo la cabeza, ya no doy mas de si, se que es una cosa facil, pero al final las cosas faciles son las que más quebraderos de cabeza dan.
Lo intenté haciendo una consulta y después el formulario con la consulta, pero hay algo que me dejo en el tintero y no se que es.
Cree la consulta y los formularios cientos de veces y no doy con la clave.

Otra duda que tengo, es como se resetea o pone a cero el campo clave principal. ya que estoy haciendo pruebas y metiendo datos y el contador va subiendo. Cuando borro los registros introducidos el contador no vuelve a cero.
Pues eso, cuando puedan ...
Gracias, Francisco
Adjuntos
BASE LABORATORIO LIBREOFFICE 2.rar
(56.24 KiB) Descargado 201 veces
Libre Office 6.5.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Problemas para relacionar dos formularios con el princip

Mensaje por RMG »

Hola,

Lo primero que te sugiero es que leas este tutorial, sobre todos el tema formularios avanzados, te aclarará muchas dudas sobre como vincular campos del formulario principal al subformulario. en el otro hilo donde pongo un control tabla lo puedes ver.

Para resetear un ID automático, en Herramientas->SQL, ejecutas esta instrucción.

ALTER TABLE "nombretabla" ALTER COLUMN "nombrecampo" RESTART WITH 1

Lo de abrir otro formulario con los datos de donde lo lanzas también lo tienes en el foro.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
jftejeiro
Mensajes: 15
Registrado: Mié Jul 15, 2020 6:39 pm

Re: Problemas para relacionar dos formularios con el princip

Mensaje por jftejeiro »

No me has puesto el enlace del tutorial :))
Libre Office 6.5.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Problemas para relacionar dos formularios con el princip

Mensaje por RMG »

OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Problemas para relacionar dos formularios con el princip

Mensaje por Longi »

Buenas!

Te dejo dos macros para abrir los formularios que necesitas.
He cambiado el origen de datos por un SQL que lo modulo en función del índice del formulario principal.
Solamente abre el formulario en el registro, no permite después navegar por otros registros.
Esa opción (abrir en el registro que quieres y poder navegar por otros) también es posible, pero quizá así te sirva.

Código: Seleccionar todo

Sub FormularioDocEnviada (Evento)

    ocontroller = Thisdatabasedocument.currentController                                        ' Controlador de la base de datos
    if not ocontroller.isconnected then ocontroller.connect                                     ' Mantenemos la conexión
    oForm = Evento.Source.Model.Parent	                                                        ' El formulario activo
    ID= oForm.getByName ("fmtID_REG").Text                                                ' ID del registro del formulario
   msgbox ID
    '-------------------------------------------------------
    ' Abrimos el formulario
    
    oDoc = Thisdatabasedocument.formdocuments.getbyname("frm_DocEnviada").open                  ' Abrimos el formulario
    oForm1= oDoc.Drawpage.Forms.getByName("MainForm") 
    Wait 500
    oForm1.CommandType=2                                                                          ' Tipo de origen de datos, pasa a ser una orden SQL                                                                  
    oForm1.Command="SELECT ""tbl_DOC_ENVIADA"".*, ""tbl_DOC_ENVIADA"".""ID_DOCU_ENVIADA"" FROM ""tbl_DOC_ENVIADA"" WHERE ""ID_DOCU_ENVIADA"" = "& ID &""
    oForm1.Reload
    
End  sub

Sub FormularioDocRecibida (Evento)

    ocontroller = Thisdatabasedocument.currentController                                        ' Controlador de la base de datos
    if not ocontroller.isconnected then ocontroller.connect                                     ' Mantenemos la conexión
    oForm = Evento.Source.Model.Parent	                                                        ' El formulario activo
    ID= oForm.getByName ("fmtID_REG").Text                                                ' ID del registro del formulario
    '-------------------------------------------------------
    ' Abrimos el formulario
    
    oDoc = Thisdatabasedocument.formdocuments.getbyname("frm_DocRecibida").open                  ' Abrimos el formulario
    oForm1= oDoc.Drawpage.Forms.getByName("MainForm") 
    Wait 500
    oForm1.CommandType=2                                                                          ' Tipo de origen de datos, pasa a ser una orden SQL                                                                  
    oForm1.Command="SELECT ""tbl_DOC_RECIBIDA"".*, ""tbl_DOC_RECIBIDA"".""ID_RECIBIDA"" FROM ""tbl_DOC_RECIBIDA"" WHERE ""ID_RECIBIDA""= "& ID &""
    oForm1.Reload
    
End  sub
Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
jftejeiro
Mensajes: 15
Registrado: Mié Jul 15, 2020 6:39 pm

Re: Problemas para relacionar dos formularios con el princip

Mensaje por jftejeiro »

Gracias, lo probé pero da un error de variable no definidas.
Sin tener mucha idea las fui definiendo yo, pero da igual error.
Obviamente no lo hago bien, o no las defino del tipo correcto.
Da error con "ocontroller, "oForm, "ID"

Las definí asi:
Dim ocontroller As Object
Dim oForm As Object
Dim ID As String

pero al final tampoco abre el formulario
Imagen
Libre Office 6.5.4 en Windows 10
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Problemas para relacionar dos formularios con el princip

Mensaje por Longi »

Veamos.....Varias modificaciones:
He puesto la macro para abrir el formulario de inicio al arrancar.
He puesto la macro del botón 'Subir documento' (macro copiar documento) que te pregunta si es un documento emitido o recibido, y genera carpeta con el número de registro de laboratorio extendido (seriado con ceros a la izquierda), pero también genera las subcarpetas de emitidos y de recibidos, guardando el documento en aquella que se haya elegido y con el nombre que se quiera asignar.
Esta misma macro introduce la ruta en la tabla correspondiente dentro del registro que le toca, aunque hay más datos para los que tendrás que afinar el SQL insert Into.
La macro de importación no la he modificado, pero serían los mismos pasos que en la de copiar los documentos.
Los botones de abrir el formulario de documentacion recibida o emitida funcionan correctamente.
En el formulario de documentación recibida (creo que es en ese) he puesto una macro en el control de tablas que hace que abra el documento que tiene la ruta en la fila que has seleccionado o clicado.
Puedes hacer lo mismo para el otro formulario (el de documentación emitida).
Espero que esté bien para ir empezando con la gestión de los documentos.
Si vas a seguir usando SQL te recomiendo que hagas un SPLIT, separando los datos de la estructura. La estabilidad alcanzada es muy superior.

Un saludo! ;)
Adjuntos
BASE LABORATORIO LIBREOFFICE2.0.7z
(58.65 KiB) Descargado 204 veces
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
jftejeiro
Mensajes: 15
Registrado: Mié Jul 15, 2020 6:39 pm

Re: Problemas para relacionar dos formularios con el princip

Mensaje por jftejeiro »

Ok, lo voy a mirar, os agradezco vuestro tiempo.
Estoy aquí peleando todas las tardes. Hasta que no finalice no paro. :))
Libre Office 6.5.4 en Windows 10
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Problemas para relacionar dos formularios con el princip

Mensaje por Longi »

Buenas!

Nueva versión(07/08/20), con mejoras en formulario principal

Un saludo! ;)
Adjuntos
BASE LABORATORIO LIBREOFFICE2.0.7z
(63.1 KiB) Descargado 214 veces
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Responder