Como abrir un formulario y que este muestre información de una tabla.

Tengo tres tablas, una donde están ciertos datos filiatorios de pacientes (pacientes) . Otra donde se carga información de salud de los mismos (evolución) y otra con información sobre otros parámetros (cultivos) . Toda la información se carga a través de sus respectivos formularios. Para ingresar datos de salud, que van ingresados a la tabla Evolucion, uso un combobox que devuelve los datos de ese paciente y a continuación se llenan los datos de ese día en el formulario Evolución. Como si hubiese un encabezado que saca los datos del paciente de la tabla paciente. La información que se agrega en la tabla de cultivos se agrega entrando por un botón en el formulario Evolución. Yo quisiera que al entrar al formulario de cultivos, este ya presente el encabezado con los datos del paciente en el cual se abrió el formulario. ¿Se entiende?

1 respuesta

Respuesta
2

Esteban: Te cito el Procedimiento que has de usar adaptando los nombres a los que tu uses,

Private Sub BtnCultivos_Click()
Dim StrSQL As String,NombreForm As String
Dim Frm As Form
Dim Rst As DAO.Recordset
On Error GoTo BtnCultivos_Click_TratamientoErrores
'Aquí se ha de poner el Nombre que tenga el Formulario.
NombreForm = "FCultivos"
'Para evitar Errores miro si el formulario que voy a abrir tiene Datos detrás
'Apunte JTJ >> Aquí se ha de sustituir si no coinciden IdPaciente y TblCultivos
StrSQL = "SELECT IdPaciente FROM TblCultivos WHERE IdPaciente = " & Me.IdPaciente
Set Rst = CurrentDb.OpenRecordset(StrSQL, dbOpenSnapshot)
If Not (Rst.BOF And Rst.EOF) Then ' Si el Recordset tiene datos
        'Si el Formulario está abierto lo cierro, antes de abrirlo
        If CurrentProject.AllForms(NombreForm).IsLoaded Then DoCmd.Close acForm, NombreForm
        'Abro el formulario NombreForm, pasandole como parámetro el Id del registro seleccionado
        DoCmd.OpenForm FormName:=NombreForm, WindowMode:=acWindowNormal, WhereCondition:="IdPaciente = " & Me.IdPaciente
Else
        MsgBox "Este Paciente no tiene datos de Cultivos Registrados" & vbCrLf & "Se abrirá el Formulario para añadirlos", vbInformation, "FALTAN DATOS DE CULTIVOS"
        'Abro el Formulario con el Equivalente de NewRec.
        DoCmd.OpenForm NombreForm, acNormal, , , acFormAdd, acWindowNormal
        'Aquí se ha de sustituir FCultivos si no coincide el Nombre del Formulario
        Set Frm = Forms!FCultivos.Form
        With Frm
                'Pongo todos los valores que le quiero adjudicar
                .IdPaciente = Me.IdPaciente
               .Campox = Me.CampoElQueSea
               …..
        End With
        'Frm.Recalc
        Set Frm = Nothing
End If
NombreForm = ""
Rst.Close
Set Rst = Nothing
BtnCultivos_Click_Salir:
On Error GoTo 0
Exit Sub
BtnCultivos_Click_TratamientoErrores:
MsgBox "Error " & Err.Number & " en Procedimiento.: BtnCultivos_Click de Documento VBA: Form_Evolucion (" & Err.Description & ")"
Resume BtnCultivos_Click_Salir
End Sub

Creo no olvidar nada fundamental. Un saludo >> Jacinto

¡Gracias! Jacinto mañana mismo pruebo y te comento. Cada día voy aprendiendo más de este lenguaje y se pone interesante.

Bueno probé todo y no hay caso, me sale el error en cuestión. ¿Creo qué el problema esta en que las partes donde escribo los campos que se relacionan entre ambas tablas no? En mi caso la manera de relacionar la tabla Evolución con la de Cultivos, es por medio del DNI. Es el único campo en común, ya que los cultivos se identifican por el DNI y las Evoluciones también. Son en ambas tablas campos de tipo texto, con indexado que permite duplicados (porque puede haber varias evoluciones por cada paciente y más de un cultivo también) y la clave principal de ambas tablas es un Id autonumérico (corresponde a una evolución, y a un cultivo, esos si no se repiten). No entiendo mucho eso de las relaciones. ¿Puede ser eso? Aclaro que en ambos formularios, tanto el de F_Cultivos como F_Evolucion, están los textbox DNI con su origen de datos. Ambos formularios se basan en sus respectivas consultas, que a su vez extraen los datos filiatorios de la tabla Paciente, como por ejemplo nombre, apellido, etc. O sea que yo cuando ingreso el DNI en el campo DNI del formulario F_Evolucion o F_Cultivo, automáticamente se rellenan los campos Nombre, Apellido, etc.

Esteban: Mira si cambiando la SQL a la siguiente funciona:

StrSQL = "SELECT DNI FROM Cultivos WHERE DNI = '" & Me.DNI & "'"

Un saludo >> Jacinto

¡Gracias! Excelente funciona al pelo, claro cambie eso que me pusiste, porque era campo texto, y anduvo bárbaro. Sos un grande Jacinto

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas