Una nueva en lo del Access...

Tengo en un formulario un cuadro combinado asociado a una lista importada de una tabla, mi intención es que cuando yo introduzca un dato en dicho campo y no se encuentre en la lista salga un aviso y si se desea aparezca otro formulario. Para el aviso utilice el evento NotInList, y ahora me salen dos mensajes de error, el mio y el de access, ¿Puedo interceptar el del access y cambiarlo por el mio? Supongo que si se puede sera mediante una rutina de errores, pero es que no se exactamente como ni donde puedo interceptar el aviso del access. No se si me he explicado bien.

1 respuesta

Respuesta
1
Prueba el evento nonlist de esta manera y te funcionara, mi rutina sirve para cuando nif (código de proveedor) no existe, el ese caso abre el mantenimiento de proveedores.
Un saludo.
Jose Antonio
Private Sub nif_NotInList(dato As String, Respuesta As Integer)
' Agregar un tipocliente nueva escribiendo un nombre en el cuadro combinado IdCategoría.
Dim entNueva As Integer, cadTítulo As String, entCuadroMensaje As Integer
' Mostrar un cuadro de mensaje preguntado al usuario si desea agregar una nueva tipocliente.
cadTítulo = "El proveedor no existe en la lista"
entCuadroMensaje = vbYesNo + vbQuestion + vbDefaultButton1
entNueva = MsgBox("¿Desea agregar el proveedor -" & dato & "- ?", entCuadroMensaje, cadTítulo)
If entNueva = vbYes Then
' Quitar el nombre nuevo del cuadro combinado IdCategoría para que el usuario
' Pueda volver a consultar el control al volver al formulario.
DoCmd. RunCommand acCmdUndo
' Abrir el formulario AgregarCategoría.
DoCmd. Openform "verproveedores", acNormal,,,, acDialog, dato
' Continuar sin mostrar el mensaje de error predeterminado.
Respuesta = acDataErrAdded
End If
End Sub
Perdona por haber tardado tanto en responderte, ademas de nueva en el access también soy nueva en todoexpertos (por si no lo habías notado ;-)), y pensé que si me respondían, me enviarían un correo electrónico.
Y no me llego ninguno, pero como me pase por aquí, vi tu respuesta que me ha sido de gran utilidad. Quería aclararte que el mensaje predeterminado de access me seguía apareciendo aun cuando añadí tu código modificado, cambie la constante acDataErrAdded por acDataErrContinue y ya me funciona. Te transcribo mi modificación de tu código:
Private Sub Autor_Musical_NotInList(NewData As String, Response As Integer)
Dim entNueva As Integer, cadTítulo As String, entCuadroMensaje As Integer
' Mostrar un cuadro de mensaje preguntado al usuario si desea agregar una nueva tipocliente.
cadTítulo = "El autor no existe en la lista"
entCuadroMensaje = vbYesNo + vbQuestion + vbDefaultButton1
entNueva = MsgBox("¿Desea agregar el autor -" & NewData & "- ?", entCuadroMensaje, cadTítulo)
If entNueva = vbYes Then
' Quitar el nombre nuevo del cuadro combinado IdCategoría para que el usuario
' pueda volver a consultar el control al volver al formulario.
DoCmd.RunCommand acCmdUndo
' Abrir el formulario AgregarCategoría.
DoCmd.OpenForm "AUTORES_MUSICALES", acNormal, , , acFormAdd, acDialog, NewData
' Continuar sin mostrar el mensaje de error predeterminado.
End If
Response = acDataErrContinue
End Sub
No se si fue un despiste o algo que tenemos diferente...
Ahora me falta averiguar como hago para que se añada el autor nuevo a la lista del cuadro combinado sin tener que cerrar el formulario de origen y volverlo a abrir. Muchas gracias, repito.
Saludos
SARA
If entNueva = vbYes Then
' Quitar el nombre nuevo del cuadro combinado IdCategoría para que el usuario
' pueda volver a consultar el control al volver al formulario.
DoCmd.RunCommand acCmdUndo
' Abrir el formulario AgregarCategoría.
DoCmd.OpenForm "AUTORES_MUSICALES", acNormal, , , acFormAdd, acDialog, NewData
' Continuar sin mostrar el mensaje de error predeterminado.
Response = acDataErradded
End If
El código debería de ser así, ya que si no colocas el added no adicionara el nuevo código
Y deberías ponerlo dentro del if ya que si no quieren adicionarlo, debe de salir el mensaje de error.
Si, tienes razón, no se como lo puse anoche pero no me salia bien, hoy lo he probado y funcionaba a la perfección. Muchas gracias por tu tiempo.
Saludos
SARA

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas