none
Formulario en Access 2003 con Cuadro combinado RRS feed

  • Pregunta

  • Hola Buenas tardes, Agradecería me echaseis una mano:
    Tengo un formulario en Access con un cuadro combinado, funciona correctamente AlNotInList, abre un nuevo formulario donde ingtroduzco los datos, lo cierro y veo que el cuadro combinado contiene el  nuevo dato pero el formulario no lo reconoce y cuando hago click sobre el nuevo dato muestra el primer registro, ¿que puedo hacer?
     Saludos
    José JFG
    domingo, 27 de junio de 2010 17:27

Respuestas

  • Ya te respondi en otro foro, pero ampliando la respuesta puedes poner:

     

    ...

        Msg = Msg & "¿quieres añadirlo?"
        If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "AltaPilotos", , , , acAdd, acDialog, HayNuevoDato

           me.PilotCB.rowsource = me.PilotCB.rowsource 'refrescamos la lista

           me.pilotCB = HaNuevoDato 'asignamos el valor
        End If

    ...


    Salu2/Regards Ju@nK www.juank.es
    • Marcado como respuesta José JFG miércoles, 7 de julio de 2010 12:16
    lunes, 28 de junio de 2010 13:11

Todas las respuestas

  • Para aclarar un poco más el tema:

    El fomunlario que tiene el Cuadro combinado (Cb) tiene el siguiente código:

    En el evento después de actualizar:

    Private Sub PilotoCb_AfterUpdate()
        ' Buscar el registro que coincida con el control.
        Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[Id_Piloto] = " & Str(Nz(Me![PilotoCb], 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub

    En el evento al no estar en la lista:

    Private Sub PilotoCb_NotInList(HayNuevoDato As String, Response As Integer)

    Dim Result
    Dim Msg As String
    Dim CR As String
       
        CR = Chr$(13)

          If HayNuevoDato = "" Then Exit Sub

        Msg = " El piloto '" & HayNuevoDato & "' no está en la base de datos." & CR & CR
        Msg = Msg & "¿quieres añadirlo?"
        If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "AltaPilotos", , , , acAdd, acDialog, HayNuevoDato
        End If

        Result = DLookup("[Piloto]", "DatosPiloto", "[Piloto]='" & HayNuevoDato & "'")
        If IsNull(Result) Then
           Response = acDataErrContinue
           MsgBox "El campo no puede estar vacío; inténtalo de nuevo"
        Else
           Response = acDataErrAdded
        End If
    End Sub

    En el formulario que se abre al no estar en la lista:

    En el evento al cargar:

    Private Sub Form_Load()
        If Not IsNull(Me.OpenArgs) Then
          Me![Piloto] = Me.OpenArgs
          DoCmd.GoToControl "NºSocio"
        End If
    End Sub

    A ver si alguien me puede ayudar para que cuando cierre este segundo formulario el rimero (el que contiene el Cuadro combinado) actualice los datos y reconozca y muestre en nuevo dato que hay en el Cb.

    Gracias


    José JFG
    domingo, 27 de junio de 2010 19:31
  • Ya te respondi en otro foro, pero ampliando la respuesta puedes poner:

     

    ...

        Msg = Msg & "¿quieres añadirlo?"
        If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "AltaPilotos", , , , acAdd, acDialog, HayNuevoDato

           me.PilotCB.rowsource = me.PilotCB.rowsource 'refrescamos la lista

           me.pilotCB = HaNuevoDato 'asignamos el valor
        End If

    ...


    Salu2/Regards Ju@nK www.juank.es
    • Marcado como respuesta José JFG miércoles, 7 de julio de 2010 12:16
    lunes, 28 de junio de 2010 13:11