Página 1 de 1

Problemas para relacionar dos formularios con el principal

NotaPublicado: Mar Ago 04, 2020 9:02 am
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

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mar Ago 04, 2020 9:39 am
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

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mar Ago 04, 2020 1:05 pm
por jftejeiro
No me has puesto el enlace del tutorial :))

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mar Ago 04, 2020 4:33 pm
por RMG

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mar Ago 04, 2020 4:53 pm
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   Expandir vistaContraer vista
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! ;)

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mar Ago 04, 2020 10:59 pm
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

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mié Ago 05, 2020 5:36 pm
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! ;)

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Mié Ago 05, 2020 5:45 pm
por jftejeiro
Ok, lo voy a mirar, os agradezco vuestro tiempo.
Estoy aquí peleando todas las tardes. Hasta que no finalice no paro. :))

Re: Problemas para relacionar dos formularios con el princip

NotaPublicado: Jue Ago 06, 2020 6:50 pm
por Longi
Buenas!

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

Un saludo! ;)