Autor Tema: Controlar cuando un valor no está en lista  (Leído 435 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 184
Controlar cuando un valor no está en lista
« en: Noviembre 20, 2012, 01:42:39 pm »
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:

Código: [Seleccionar]
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:
Código: [Seleccionar]
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