Hola. Tengo una consulta. En un formulario tengo un cuadro combinado con evento notinlist programado. Si entro en el cuadro combinado y en la primera acción introduzco un elemento que no está en la lista, me responde conforme a lo programado. Si por el contrario, consulto algún elemento que sí está en la lista y luego regreso al cuadro combinado e introduzco un elemento que no esté, Access me responde en este caso con la respuesta estándar (su elemento no está en la lista, introduzca un elemento de la lista...) en vez de conforme al código que yo he programado. Uso un único formulario para todo (selección y edición), cuyos datos tienen origen en una tabla. El código es el siguiente: Private Sub SeleccionarDesignación_BeforeUpdate(Cancel As Integer) If IsNull([SeleccionarDesignación]) Then MsgBox "Debe seleccionar una designación." Cancel = True End If End Sub Private Sub SeleccionarDesignación_AfterUpdate() ' Buscar el registro de la designaci?n seleccionada en el cuadro combinado SeleccionarDesignación. ' Activar los controles de la sección Detalle. ' Ir al cuadro APELLIDO1. DoCmd.ApplyFilter , "NUMEROA = Forms!Designaciones!SeleccionarDesignación" OcultarControles Me, acDetail, True Me.SeleccionarDesignación.Undo Me!APELLIDO1.SetFocus Me.NUMEROA.Visible = False Me.NUMEROL.Visible = False Me.ACTIVADO.Visible = False Me.PERSONADO.Visible = False Me.F_PERSONADO.Visible = False Me.DatosLetrado.Enabled = True If Me.ACTIVADO = True Then Me.GenerarFicha.Enabled = False Me.AbrirFicha.Enabled = True End If If Me.PERSONADO = True Then Me.Personación.Enabled = False End If Me!APELLIDO1.SetFocus End Sub Private Sub SeleccionarDesignación_NotInList(DatosNuevos As String, Respuesta As Integer) ' Permitir al usuario agregar una designación nueva, escribiendo el nombre del cliente ' en el cuadro combinado SeleccionarDesignación. Dim miDb As Database, miTabla As Recordset Dim entDesignaNuevo As Integer, cadTítulo As String Dim entMensajeDiálogo As Integer, cadMensaje As String Const conColorBlanco = 16777215 Const conNormal = 1 ' Comprobar que el usuario ya ha seleccionado una desinación. If IsNull(SeleccionarDesignación) Then ' Mostrar un cuadro de mensaje preguntando al usuario si desea agregar una designación nueva. cadT?tulo = "La designación no está en la lista" cadMensaje = "?Desea agregar una designación nueva?" entMensajeDi?logo = vbYesNo + vbExclamation entDesignaNuevo = MsgBox(cadMensaje, entMensajeDiálogo, cadTítulo) If entDesignaNuevo = vbYes Then ' Si el usuario desea dar de alta una designación quitar el texto que introdujo el usuario ' en el cuadro combinado y asignarlo al control Apellido1. ' Continuar sin mostrar el mensaje de error predeterminado Me!SeleccionarDesignación.Undo APELLIDO1.Enabled = True APELLIDO1 = DatosNuevos ' Generar el número de Asunto (Designación) desde el Contador y asignarlo Set miDb = CurrentDb Set miTabla = miDb.OpenRecordset("CONTADOR", dbOpenDynaset) miTabla.Edit miTabla!NUMEROA = miTabla!NUMEROA + 1 miTabla.Update Me!NUMEROA = miTabla!NUMEROA miTabla.Close ' Generar un registro en la tabla CLIENTE para recoger los datos de dirección y teléfono Set miTabla = miDb.OpenRecordset("CLIENTE", dbOpenDynaset) miTabla.AddNew miTabla!NUMEROA = Me!NUMEROA miTabla.Update miTabla.Close ' Activar controles para la edición OcultarControles Me, acDetail, True Me.APELLIDO1.SetFocus Me.NUMEROA.Visible = False Me.NUMEROL.Visible = False Me.ACTIVADO.Visible = False Me.PERSONADO.Visible = False Me.F_PERSONADO.Visible = False Me.DatosLetrado.Enabled = True Me.GenerarFicha.Enabled = True Me.Personación.Enabled = True Me.SeleccionarDesignaciónEtiqueta_.Visible = False Me.SeleccionarDesignación.Visible = False Respuesta = acDataErrAdded MsgBox "Introduzca los datos de la nueva designación" Else ' En caso contrario continuar sin mostrar el error predeterminado Me!SeleccionarDesignación.Undo Respuesta = acDataErrContinue End If End If End Sub
Gracias por cualquier opinión. Un saludo
|