Palabras clave:
al no estar en lista, NotInList, cuadro combinado, combo, comboboxAutor:
AutoresExtraído de:
La web del BúhoObjetivo: Controlar un valor inexistente en un cuadro combinado para que se almacene en la tabla.
Descarga el ejemplo de la web del BúhoMejora de Happy para controlar cuando debe insertarse más de un campo.
Tengo un formulario Cuentas, en el cual tengo un comboCliente (basado en la tabla Clientes, con dos columnas IdCliente, NombreCompañia, solo la segunda columna es visible). Cuando creo una nueva cuenta debo asignársela a algún cliente mediante ese combo, pero cuando el cliente todavía no lo he creado se activa el evento NotInList (el cliente inexistente no está en la lista del combo).
Entonces tengo éste código:
Private Sub Cliente_NotInList(NewData As String, Response As Integer)
Dim Nuevocli As Integer, entTruncarNombre As Integer, txtTítulo As String,entMsjDiálogo As Integer
Dim nuevo As String
Nuevocli = msgbox("¿Desea agregar un nuevo cliente?", vbOKCancel)
If Nuevocli = vbOK Then
nuevo = "nuevo"
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.OpenForm "clientes", acNormal, , , acAdd, , [nuevo]
Forms!clientes!NombreCompañia = NewData
Response = acDataErrContinue
End If
End Sub
Así abro el formulario Clientes, en el cual ingreso todos los datos del cliente nuevo, al abrirse el campo NombreCompañia ya estará lleno con el dato que ingresé en el combo, al terminar de escribir los datos cierro el formulario y en evento Unload tengo éste código:
Private Sub Form_Unload(Cancel As Integer)
Dim ctl As Control
If Me.OpenArgs = "nuevo" Then
Set ctl = Forms!cuentas!Cliente
DoCmd.SelectObject acForm, "cuentas"
ctl = Me!IdCliente
ctl.Requery
ctl.SetFocus
End If
End Sub