Formulario principal para abrir formulario enlazado

Me pueden ayudar con ACCESS. Tengo una tabla donde se lleva el control de parámetros de tres equipos (Motor, Comp. Gas y Cooler). Cada equipo tiene su formulario por separado pero los equipos hacen parte de una Unidad de Compresión en general. Mi intención es crear un formulario principal que contenga un cuadro combinado para elegir la Unidad a tratar y se llenan automáticamente los datos en los cuadros de texto junto a ese cuadro combinado. Posteriormente, hay tres botones de comando de cada equipo. Los cuales, al abrir, ya lleven la Unidad de referencia a tratar y que está relacionada la información.

3 respuestas

Respuesta
2

Prueba con esto:

1. Configuración del Formulario Principal

Supongamos que tu cuadro combinado se llama cboUnidad. En sus propiedades, asegúrate de que la Columna Dependiente sea el ID único de la Unidad (por ejemplo, ID_Unidad).

Para que los cuadros de texto se llenen automáticamente al elegir una unidad:

En la consulta origen del cuadro combinado (RowSource), incluye las columnas que quieres mostrar (Nombre, Ubicación, etc.).

En los cuadros de texto, usa la propiedad Origen del control con la función Column:

=[cboUnidad].Column(1) (Esto mostrará la segunda columna de la lista seleccionada).

2. Código para los Botones de Comando
En el evento Al hacer clic de cada uno de los tres botones (Motor, Gas, Cooler), utilizaremos VBA para pasar el filtro.

Supongamos que el campo que relaciona las tablas se llama IdUnidad. El código sería el siguiente:

Private Sub btnAbrirMotor_Click()
    ' Verificamos que se haya seleccionado una unidad primero
    If IsNull(Me.cboUnidad) Then
        MsgBox "Por favor, seleccione una Unidad antes de continuar.", vbExclamation
        Exit Sub
    End If
    ' Abrimos el formulario filtrando por el ID de la unidad seleccionada
    ' Estructura: DoCmd.OpenForm "NombreFormulario", , , "CampoTabla = ValorControl"
    DoCmd.OpenForm "frmMotor", , , "IdUnidad = " & Me.cboUnidad
End Sub

3. Asegurar la Relación en Nuevos Registros

Si además de consultar, quieres que al abrir el formulario para un nuevo registro se asigne automáticamente la Unidad, debes pasar el valor mediante OpenArgs.

En el botón del formulario principal:

DoCmd.OpenForm "frmMotor", , , "IdUnidad = " & Me.cboUnidad, , , Me.cboUnidad

En el botón del formulario principal:

En el evento "Al activar" (On Load) del formulario de destino (ej. frmMotor):

Private Sub Form_Load()
    If Not IsNull(Me.OpenArgs) Then
        ' Si es un registro nuevo, asignamos la unidad por defecto
        If Me.NewRecord Then
            Me.IdUnidad = Me.OpenArgs
        End If
    End If
End Sub
Respuesta
2

Si se dispone de una tabla con los datos de los motores (los que se desean visualizar en los cuadros de texto), en base a ella se puede crear un combo con tantas columnas como datos para los cuadros de texto.

Seleccionado uno de los motores (uno de los elementos del cuadro de texto: su columna visible), los cuadros de texto se rellenarán automáticamente, las opciones:

Suponiendo que la columna cero (en VBA la primera coluna es la cero) y se desea que en un cuadro de texto aparezca uno de los datos (por ejemplo, el de la tercera columna)

1.- Asignándoselo directamente desde el evento del Combo:

Me.[nombre del cuadro de texto] = Me.[nombre del combo]. Colum(2)

2.- En la vista diseño del formulario y como origen de datos del cuadro de texto:

= [nombre del combo].Colum(3) (…fuera de VBA las columnas comienzan en la unidad…)

Para combinar cuadros combinados se puede localizar en la Web el documento “Combos en cascada todos”.

E el que están agrupadas y desglosadas las combinaciones/metodologías ya verificadas y con las dudas ya resueltas (útil para esta vez y con vistas al futuro).

Respuesta
1

I. Hola Julio César, por mi parte sólo conozco de oídas la función ''DoCmd. OpenForm'' que quisiera proponerle pero no sé si acaba de ceñirse a lo que necesita, ojalá que si.


https://www.codevba.com/es/access/docmd/openform.htm 

https://www.accessyexcel.com/como-usar-en-access-y-vba-el-comando-docmd-openform-para-abrir-un-formulario/ 

https://www.pcreview.co.uk/threads/opening-another-form-and-access-same-record-on-previous-form.3748893/ 


Quisiera trasladarle la información que vi a cerca de su consulta y esta posibilidad por si pudiese serle de alguna utilidad mientras le atiende un profesional o persona conocedora de primera mano. Le ruego me disculpe por las molestias de tanta lectura y la imprecisión. Ánimo.


https://stackoverflow.com/questions/4743702/ms-access-nested-subforms-link-to-main-parent-form 

https://www-access--programmers-co-uk.translate.goog/forums/threads/opening-a-pop-up-form-and-linking-them-via-a-field-on-the-main-form.325765/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.lawebdelprogramador.com/foros/Access/1758997-Abrir-Formulario-desde-otro-Formulario-en-el-mismo-registro.html 

https://microsoft.public.es.access.narkive.com/2ZFuTCjU/abrir-un-formulario-dentro-de-un-subformulario 

https://www.accessforums.net/showthread.php?t=83680 

https://el3um4s.medium.com/how-to-link-forms-in-access-7959ba29765c 

https://nolongerset-com.translate.goog/controlling-where-forms-open/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

http://www.mvp-access.com/foro/buscar-en-subform-y-abrir-su-formulario_topic85091.html 

Como poner un formulario de apertura en una aplicación de Access

https://www.youtube.com/watch?v=-BwUoQ58qUw 

https://www.youtube.com/shorts/0NN0lpvFkpc 

https://www.youtube.com/watch?v=zJC-r8Dy1fA  

 https://www.reddit.com/r/MSAccess/comments/h0or1i/refresh_main_form_when_closing_another_form/?tl=es-es 

https://www.access-programmers.co.uk/forums/threads/main-subform-correct-sequence-of-opening.225641/ 

https://proyectoa.com/abrir-formulario-modal-con-un-unico-registro-filtrado-en-access/ 

http://www.mvp-access.com/foro/mover-registro-de-formulario-desde-subformulario_topic84761.html 

https://es.linkedin.com/learning/access-formularios-e-informes-office-365-microsoft-365/abrir-un-formulario-al-abrir-la-base-de-datos-en-access-365

https://1-ms--access--tips-blogspot-com.translate.goog/2011/05/using-subform-link-to-open-form-at.html?_x_tr_sch=http&_x_tr_enc=1&_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.reddit.com/r/MSAccess/comments/qxkn5b/refresh_a_subform_after_event_in_main_form_list/?tl=es-es 

http://www.jggomez.eu/D%20Bdr_Erp/1%20Temas/H%20Formularios%20e%20Informes%20I%202013.pdf 

https://www.accessdemo.info/docs_articulos/como-empezar-con-vba.html 

https://es.comp.bd.ms-access.narkive.com/XCQMLS7f/como-abrir-un-formulario-con-los-datos-de-un-cliente-al-hacer-clic-sobre-su-nombre

https://download.nvaccess.org/releases/2024.3rc1/documentation/es/changes.html 

https://www.youtube.com/watch?v=fLBAKVev4uc 

https://www-experts--exchange-com.translate.goog/questions/29263110/How-to-add-link-new-form-onto-new-tab-of-existing-form.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc&_x_tr_hist=true 

https://stackoverflow.com/questions/36817959/open-a-form-with-the-correct-subform-in-ms-access 

https://www-ptr-co-uk.translate.goog/blog/microsoft-access-forms-set-database-open-form?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc&_x_tr_hist=true 

https://community.spiceworks.com/t/how-to-use-button-to-open-another-form-at-current-record-but-still-be-able-to-browse-through-other-records/836803

¡Gracias! Un millón de gracias. Acabo de leer la información que me enviaron y la pondré en práctica. Cuando sea grande, quiero ser como ustedes!!!. Yo les escribo si necesito más información. Bendiciones

I. Hola Compañero, muchas gracias por sus bellas palabras y su amabilidad :) en mi caso únicamente me limito a adjuntar los enlaces que veo al carecer de conocimiento, pero la intención es aportar algo, sin más :)

Ojalá pueda lograr pronto la operación :). Ánimo. Un abrazo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas