Como hacer que en un combobox me habrá un formulario si el dato no esta en la lista?

Soy nuevo en lo de programación.

Estoy haciendo un programa en aceces 2016.

En un formulario tengo un combobox que recibe un a lista de una tabla, lo que deseo es que cuando se escribe un nombre que no esta en la lista, me abra el formulario con el que se registran los nombres en esa tabla y que al cerrar ese formulario la lista del combobox se actualice sin tener que cerrar el formulario en el que esta el combobox.

Gracias por su ayuda . Espero que haber explicado mi inquietud de un aforma clara.

2 Respuestas

Respuesta
2

Benjamin: Parto de que ya tienes como origen de fila del Combo la Tabla en la que quieres añadir un nuevo dato. Has de programar el Evento al no estar en la lista.

El Nombre del Combo le voy a poner >> CboSelectDato

Private Sub CboSelectDatos_NotInList(NewData As String, Response As Integer)
On Error GoTo CboSelectDatos_NotInList_Error
Dim NuevoItem As String     
Dim StrSQL As String 
Dim Ctrl As Access.Control 
Set Ctrl = Me.CboSelectDatos 
'Quitamos apostrofes si es que los hay.
NuevoItem = Replace(NewData, "'", "''")
If MsgBox("Este Dato no está en la lista, ¿Quieres añadirlo?", vbYesNo, "Añadir..") = vbYes Then
        Response = acDataErrAdded.
        ‘Insertamos el Dato en la Tabla. Aquí solo pongo 1 Columna >> Puede haber varias. Mira INSERT INTO
        StrSQL = "INSERT INTO NombreDeTuTabla(Dato) Values('" & NuevoItem & "')"
        CurrentDB.Execute StrSQL, dbFailOnError 
Else
        Response = acDataErrContinue 
        Ctrl.Undo  
End If
On Error GoTo 0
Exit Sub
CboSelectDatos_NotInList_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") en el Procedimiento.:  CboSelectDatos_NotInList del Documento VBA NombreDelFormulario"
End Sub

Lo he ido escribiendo sobre la marcha, por lo que si tienes problemas, me comentas. Jacinto

Respuesta
2

Si lo que quieres es que te abra el formulario Clientes para dar de alta sus datos, en el evento Al no estar en lista del cuadro combinado, que llamaremos Cliente del formulario Ventas

Private Sub Cliente_NotInList(NewData As String, Response As Integer)
Dim Clientenuevo As Integer, título As String, mensaje As Integer

título = "El Cliente que ha escrito no está en la lista"
mensaje = vbYesNo + vbDefaultButton1
Clientenuevo = MsgBox("¿Desea agregar este cliente a la lista ?", mensaje, título)
    If Clientenuevo = vbYes Then
    DoCmd.RunCommand acCmdUndo

DoCmd.OpenForm "Clientes", acNormal, "", "", acAdd, acDialog

Response = acDataErrAdded
End If

Así, cuando escribas un cliente que no esta en el combinado te aparece el mensaje. Si le dices que sí, se abr en forma diálogo, para que des de ata sus datos y una vez que cierres el formulario, en el combinado ya te aparece ese nuevo cliente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas