Noticias:

Ya hay algunas cosas colgadas en la web así que ya vuelve a estar disponible.

Menú Principal

Controlar cuando un valor no está en lista

Iniciado por xavi, Noviembre 20, 2012, 01:42:39 PM

Tema anterior - Siguiente tema

xavi

Palabras clave: al no estar en lista, NotInList, cuadro combinado, combo, combobox
Autor: Autores
Extraído de: La web del Búho

Objetivo:
Controlar un valor inexistente en un cuadro combinado para que se almacene en la tabla.

Descarga el ejemplo de la web del Búho

Mejora de Happy para controlar cuando debe insertarse más de un campo.

Cita de: Happy
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