Error al agregar registros y no estar en la lista. 2147467259
Tras adaptar un ejemplo en el evento NotInList me surge el siguiente error
(Idmc es un campo Id autonumérico de la tabla donde se está agreganto el registro "Insuficiencia Respiratoria" junto con otros registros que estoy pegando.)
(Sfrm nexopatolmc es un subformulario donde pego los registros y surge el cartel)
Si bien se terminan pegando sin problemas, surge ese mensaje.
También me sucedió en otro suformulario donde adapté el ejemplo.
-------------------------------------------------
Esto es adaptado el ejemplo 2 que me facilitó Jacinto TrillovJareño de J. Miralles.
-------------------------------------------------
Private Sub idmc_NotInList(NewData As String, Response As Integer)
On Error GoTo idmc_NotInList_Error
''para este ejercio tenemos que tener activada la referencia ADO, para eso vais
''al menu Herramientas>>Referencias y buscáis la referencia Microsoft Activex Data Objects x.x Library
''la versión más nueva que tengais( 2.7,2.8, 6.0, en mi caso es la 6.0)
Dim conexion As ADODB.Connection
Dim Nuevo As String 'asignaremos el nuevo elemento que introduzcamos en el combo
Dim SQL As String 'instruccón SQL para insertar en la tabla
Dim ctl As Control ''declaramos una variable de tipo control
Set ctl = Me.IdMC ''creamos el objeto y le asignamos el combo.
Set conexion = CurrentProject.Connection ''creamos el objeto de tipo Connection
''quitamos cualquier apostrofe, con la función Replace, antes de insertar en la tabla
''y de esta forma evitaremos errores.
Nuevo = Replace(NewData, "'", "''")
''al no estar en la lista nos saltará este mensaje, y si le pulsamos vbYes agregaremos el nuevo valor a la tabla.
''también evitaremos que nos salte el mensaje predefinido de access
If MsgBox("Esta Manifestación no esta en la lista, ¿la añadimos?", vbYesNo, "Añadir..") = vbYes Then
Response = acDataErrAdded 'acDataErrAdded no muestra ningún mensaje al usuario de access pero permite agregar
'la entrada a la lista del cuadro combinado.
'con esta instrucción sql introducimos en el campo Nombres de la tabla tblNombres el nuevo valor que haya en el combobox.
SQL = "INSERT INTO manifestacionesclinicas(manifestacionclinica) Values('" & Nuevo & "')"
conexion.Execute SQL ''ejecutamos la sentencia sql
Else
Response = acDataErrContinue ''evitara que salga el mensaje predefinido de access
''y continuará el código
ctl.Undo ''deshacemos lo que hemos escrito
End If
On Error GoTo 0
Exit Sub
idmc_NotInList_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure idmc_NotInList of Documento VBA Form_Sfrm nexopatolmc"
End Sub
-------------------------------------------------
*Cabe aclarar que estoy trabajando con tablas vinculadas en Mysql y Localhost.