Ayuda en un cuadro combinado

Este es mi caso: Tengo una base de datos en access 2003, la cual es utilizada para agendar citas médicas en una clínica. Actualmente para agendar la cita debo digitar en un formulario la especialidad el cual al actualizar ese campo me abre otro formulario que carga los médicos de esa "especialidad" en un cuadro combinado donde puedo elegir el médico, asignar el día de la cita y en un subformulario ver que pacientes tiene para ese día.
Lo que necesito hacer es que, tanto la opción de digitar la especialidad como la de elegir el médico, estén en el mismo formulario, sin necesidad de abrir un segundo para únicamente actualizar el valor que lo tengo condicionado al campo "especialidad". Lo he intentado colocando los dos campos combinados en el mismo formulario, pero si coloco una especiliadad, por ejemplo: elijo medicima general y me muestra los médicos generales, pero si luego la cambio por GINECOLOGÍA, no me muestra los ginecólogos, sino los médicos generales, no se actualiza el campo combinado "médicos". Lo que quiero es que cuando yo elija una especialidad, se actualice los datos que me va a mostrar en el campo médicos. Espero que me entienda. Muchas gracias.
Cabe aclarar que el cuadro combinado "medicos" esta condicionado con el campo "Especialdiad".
Jorge rosero

1 respuesta

Respuesta
1
Para dar solución a tu inquietud debemos utilizar un poco de código VBA.
Vamos a tener dos combos, cmbEspe y cmbMedico, y lo que vamos a hacer es que al perder el foco del primer combo el combo de médicos se cargue con los médicos de la especialidad seleccionada así:
Private Sub cmbEspe_LostFocus()
    On Error GoTo fin
    Dim dbs As Database
    Dim rst1 As Recordset
    Set dbs = CurrentDb()
        strSQL1 = "SELECT * FROM medicos WHERE idEspecialidad='" & Me.cmbEspe.Value & "'"
        Set rst1 = dbs.OpenRecordset(strSQL1)
        Do Until rst1.EOF
        CmbMedico. AddItem (rst1("Nom_Medico"))
        Rst1. MoveNext
        Loop
        Rst1. Close
        Dbs. Close
Fin:
    End Sub
Suponiendo que: idEspecialidad, es el campo en la tabla médicos que indica la especialidad de este. Y Nom_medico es el campo que almacena el nombre del medico.
Y para finalizar cuando seleccionas una nueva especialidad te limpie el listado de médicos (cmbMedico)
Private Sub cmbEspe_GotFocus()
    Me.cmbMedico.RowSource = ""
End Sub
Si tienes dudas pregunta de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas