Otra pregunta ya tipica de cuadros combinados:
Había por allí un ejemplo sencillito pero no lo encuentro. ¡A consultar!
Cuando en un cuadro combinado (ccClientes) el dato ingresado (CódigoCliente)
no está registrado en la tabla (tbClientes), ¿Cual es el código para que,
cuando se active el evento NotInList, me dé opción de abrir el formulario
correspondiente (frmClientes) para el ingreso de dicho dato?
El siguiente código funciona de la siguiente manera:
se tienen dos combos: uno codigo de material el otro nombre del material. Al
ingresar un código inexistente en la tabla materiales, aparece un mensaje el
cual le indica al usuario que debe ingresar el nombre del material que
obviamente no existe tampoco y allí si lo dirige al formulario de creacion
de materiales colocando el nombre del material en su campo correspondiente y
sólamente el usuario tiene que ingresar el código correspondiente. Al cerrar
la ventana de creación de materiales el programa continúa en la ventana
inicial con los demás datos.
Cabe señalar que en la ventana de creación de materiales se debe colocar en
el evento al cargar el siguiente código.
Espero corresponder con esto en algo de lo que yo he usufructuado de esta
news, no sin antes agradecerles sus comentarios al código aquí expuesto.
VíctorJ
Bogotá, Colombia
Private Sub Form_Load()
If Me.OpenArgs <> "" Then
Me!DescripcionConcepto = Me.OpenArgs
Me!idgruporecurso.SetFocus
SendKeys "{F4}"
End If
End Sub
Private Sub CodMaterial_NotInList(NewData As String, Response As Integer)
Dim ctl As Control
Set ctl = Me![CodMaterial]
' Pide al usuario que compruebe que desea agregar un nuevo valor.
If MsgBox("No existe el Código digitado, ¿Agregarlo?. Si desea agregar oprima Aceptar el programa seguirá al campo nombre del recurso, ingrese elnombre del recurso.", vbOKCancel) = vbOK Then
' Establece el argumento Response para indicar que se han agregado los datos.
Response = acDataErrAdded
On Error GoTo Err_CodMaterial_NotInList
SendKeys "{esc}"
ctl.Undo
Me!NomMaterial.SetFocus
Response = acDataErrAdded
Exit_CodMaterial_NotInList:
Exit Sub
Err_CodMaterial_NotInList:
MsgBox Err.Description
Resume Exit_CodMaterial_NotInList
Else
' Si el usuario elige Cancel, suprimir el mensaje de error y deshacerlos cambios.
Response = acDataErrContinue
ctl.Undo
End If
End Sub
Private Sub NomMaterial_NotInList(NewData As String, Response As Integer)
Dim ctl As Control
Set ctl = Me![NomMaterial]
' Pide al usuario que compruebe que desea agregar un nuevo valor.
If MsgBox("El valor no está en la lista ¿Agregarlo?. Si desea agregar oprima Aceptar o Enter, de lo contrario oprima cancelar. Le debe aparecer la ventana de creación. A este nuevo recurso debe seleccionarle un grupo de recurso y luego asignarle el consecutivo según el número que aparece al lado derecho.", vbOKCancel) = vbOK Then
' Establece el argumento Response para indicar que se han agregado los datos.
Response = acDataErrAdded
' Agrega la cadena del argumento NewData al origen de las filas.
On Error GoTo Err_NomMaterial_NotInList
DoCmd.OpenForm "Recursos", acNormal, , , acAdd, acDialog, NewData
Response = acDataErrAdded
Exit_NomMaterial_NotInList:
Exit Sub
Err_NomMaterial_NotInList:
MsgBox Err.Description
Resume Exit_NomMaterial_NotInList
Else
' Si el usuario elige Cancel, suprimir el mensaje de error y deshacer los cambios.
Response = acDataErrContinue
ctl.Undo
End If
End Sub
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)