Access Runtine y Accde generan Error

Tengo una aplicacion que funciona perfectamente
Cuando la paso a Accde me sale el error
EN MI COMPUTADORA ( Donde funciona correctamente la version accdb) sale esto
La expresión al "hacer click" que ha especificado como valor de la propiedad de evento produjo el error el objeto o la clase no admite el conjunto de eventos.
La expresión no da como resultado el nombre de ubna macro, de una función definida por el usuario o [Procedimiento de evento].
Hubo un error al evaluar la función, evento o macro.
Y en el runtine de la computadora que lo instalo directamente me sale.
La ejecucion de esta aplicacion de ha detenido a causa de un error en tiempo de ejecucion.
Como les digo hace mas de 4 años que tengo la aplicacion sin errores en formato accdb. Con mucho codigo, macros, consultas etc y no me produce ninguna falla.
Me podran dar una mano para solucionarlo.
PD: No soy programador. He aprendido leyendo y pegando codigos de soluciones buscadas.

Al parecer llamo a colocar un valor del form que cierro y lo coloque en el form pricipal y eso daria el error

En este codigo esta el error en la computadora que funciona bien el accdb

Private Sub Ingresar_Click()

If IsNull(Me.Usuario) Then
MsgBox "Debe ingresar Codigo de usuario primero", , "Error de carga de Formulario"
Me.Codigo.SetFocus
Else
If IsNull(Me.Contraseña) Then
MsgBox "Debe ingresar Contraseña para el Usario", , "Error de carga de Formulario"
Me.Contraseña.SetFocus
Else
If Me.Codigo.Column(7) <> Me.Contraseña Then
MsgBox "Su contraseña no corresponde con su usuario registrado", vbDefaultButton1, "Aviso Importante"
'"Si Colaca tres veces mal la contraseña del usario, este sera dado de baja &_"

Me.In1.Visible = True
Me.In2.Visible = True
Me.In3.Visible = True
Me.In2.Value = Me.In2 + 1

DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
DoCmd.OpenQuery "Anexar_Log_de_Contraseñas_en_usuarios"
DoCmd.OpenQuery " Actualiza_Ultimo_error_logueo_Empleado"
DoCmd.OpenQuery " Actualiza_numero_errores_logueo_Empleado"
Me.Contraseña.SetFocus

Else
MsgBox "Usuario Registrado reconocido por sistema", , "Entrada Exitosa"
'Paso parametros a AA_PAnel
Forms!AA_PAnel![Codigo].Value = Me.Codigo
Forms!AA_PAnel![Puesto].Value = Me.Puesto
Forms!AA_PAnel![Empleado].Value = Me.Usuario
Forms!AA_PAnel![ID_PU].Value = Me.ID_PU
Forms!AA_PAnel![Administra].Value = Me.Administrador
Forms!AA_PAnel![activo].Value = Me.activo
DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
DoCmd.OpenQuery "Anexar_Log_de_Contraseñas_en_usuarios"

Me.In1.Visible = False
Me.In2.Visible = False
Me.In3.Visible = False
DoCmd.Close
End If
End If
End If

If Me.In2 = 2 Then
MsgBox "Usted a ingresado su contraseña por segunda vez mal. La proxima vez sera baneado", , "Intentos Fallidos"
End If

If Me.In2 = 3 Then
MsgBox "Su codigo a sido dado de baja, no podra se utilizado hasta que se comunique con el administrador", , "Intentos Fallidos"
DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
DoCmd.OpenQuery "Actualiza_A_Baneado_Empleado"
Me.Baneado = -1
DoCmd.Close
End If
End Sub

1 respuesta

Respuesta
2

Lo único que te puedo recomendar es que compiles el código VBA de tu BD antes de convertirla en accde, por si hubiera algún pequeño error no detectado que pueda causar ese problema. Para depurar el código, vete al editor de VBA, menú Depuración -> Compilar <nombre proyecto>

Si te sale algún error, corrígelo y repite la compilación hasta que no salga ninguno.

Prueba también a "compactar y reparar" la BD.

Luego convierte el archivo a accde.

Todo eso ya fue hecho. Me tiene loco este error. Funciona hace años y bien la aplicación. Quería compilar la. Y no hay caso

Pues es muy extraño, y en el código no veo nada raro.

Por lanzar una idea, cambia los DoCmd. Close por:

DoCmd. Close acform, Me. Name

Por si te está cerrando más de lo que debe

Es que funciona perfectamente. El tema es cuando lo paso a accde.  Ahí deja de funcionar. Y en ese botón genera el problema. Por lo que supongo que algún lenguaje no compatible 

La consulta de anexar que tienen hacen referencia al campo del formulario. Por ahí es el error. La verdad no se.

Si te funciona correctamente, problema de lenguaje VBA o SQL no va a ser, si no ya no te funcionaría..

Ya que intuyes que el problema está en las consultas, prueba a ejecutarlas desde VBA directamente:

En vez de poner "DoCmd.OpenQuery "Anexar_Log_de_Contraseñas_en_usuarios", abre esa consulta en vista SQL, cópiala y cambia esa linea (y borra la del Setwarnings) por esta otra:

CurrentDb. Execute "aquí la SQL que has copiado"

Y lo mismo con el resto de consultas.

Hola. Me podrías pasar un ejemplo del código. Como dije me doy muchísima maña pero no soy programador. 

Si me das una muestra de como debería poner el código te lo agradecería. Otro tema es que si es eso. Tengo muchos formularios con esa sentencia de anexar. Y va ser tedioso pero si non queda otra tendré que hacerlo. 

La sentencia sql es la que me da en diseño la consulta?

Efectivamente, la sentencia SQL te la da la Vista SQL de la consulta.

Supongamos que tu consulta "Anexar_Log_de_Contraseñas_en_usuarios" tiene esta SQL:

INSERT INTO Log_Contraseñas(Usuario,Fecha) VALUES(Forms!frmPrincipal!Usuario,Date)

en tu código, en vez de las líneas:

DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
DoCmd.OpenQuery "Anexar_Log_de_Contraseñas_en_usuarios"

Pon esto:

CurrentDb. Execute "INSERT INTO Log_Contraseñas(Usuario, Fecha) VALUES(Forms!frmPrincipal!Usuario, Date)"

O esto:

CurrentDb.Execute "INSERT INTO Log_Contraseñas(Usuario,Fecha) VALUES('" & Me.Usuario & "',Date)"

Y lo mismo con todas las consultas de acción que tienes.

Por otro lado, acabo de caer en un detalle. En t código pones varias veces "DoCmd.Setwarnings False" para evitar lso avisos de las consultas de acción, pero luego no lo vuelves a activar, lo que es "peligroso", porque si te salta algún error el sistema no te avisa y tu ni te enteras.

Antes de hacer el cambio de las consultas, haz la prueba, quita esas lineas del setwarnings de tu código y abre la bd de nuevo, a ver si te salta algún error. Quizás ahí esté el problema...

Ordene el codigo y agregue tatamiento de error

elimine todo la seccion si los datos son correctos y me da
Error # 2467 La expresion que ha especificado hace referencia a un objeto que esta cerrado o no existe
como veras elimine la linea completa por lo que solo deberia cerrar y listo
Asi deje el codigo ahora, y con el tratamiento de errores ahora si me sale un error en la accdb que antes no me salia y funcionaba bien.

 Con Todo activado del codigo me sale el error pero hace lo que tiene que hacer lo que es mas rara aun.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Ingresar_Click()
On Error GoTo Error_Ingresar
If IsNull(Me.Usuario) Then
MsgBox "Debe ingresar Codigo de usuario primero", , "Error de carga de Formulario"
Me.Codigo.SetFocus
Else
If IsNull(Me.Contraseña) Then
MsgBox "Debe ingresar Contraseña para el Usario", , "Error de carga de Formulario"
Me.Contraseña.SetFocus
Else
If Me.Codigo.Column(7) <> Me.Contraseña Then
MsgBox "Su contraseña no corresponde con su usuario registrado", vbDefaultButton1, "Aviso Importante"
'"Si Colaca tres veces mal la contraseña del usario, este sera dado de baja &_"
Me.In1.Visible = True
Me.In2.Visible = True
Me.In3.Visible = True
Me.In2.Value = Me.In2 + 1
DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
DoCmd.OpenQuery "Anexar_Log_de_Contraseñas_en_usuarios"
DoCmd.OpenQuery " Actualiza_Ultimo_error_logueo_Empleado"
DoCmd.OpenQuery " Actualiza_numero_errores_logueo_Empleado"
DoCmd.SetWarnings True
Me.Contraseña.SetFocus
Else
MsgBox "Usuario Registrado reconocido por sistema", , "Entrada Exitosa"
'Paso parametros a AA_PAnel
'Forms!AA_PAnel![Codigo].Value = Me.Codigo
'Forms!AA_PAnel![Puesto].Value = Me.Puesto
'Forms!AA_PAnel![Empleado].Value = Me.Usuario
'Forms!AA_PAnel![ID_PU].Value = Me.ID_PU
'Forms!AA_PAnel![Administra].Value = Me.Administrador
'Forms!AA_PAnel![activo].Value = Me.activo
' DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
' DoCmd.OpenQuery "Anexar_Log_de_Contraseñas_en_usuarios"
' DoCmd.SetWarnings True
'Me.In1.Visible = False
'Me.In2.Visible = False
'Me.In3.Visible = False
DoCmd.Close
End If
End If
End If
If Me.In2 = 2 Then
MsgBox "Usted a ingresado su contraseña por segunda vez mal. La proxima vez sera baneado", , "Intentos Fallidos"
End If
If Me.In2 = 3 Then
MsgBox "Su codigo a sido dado de baja, no podra se utilizado hasta que se comunique con el administrador", , "Intentos Fallidos"
DoCmd.SetWarnings False 'Probar elimana el cartel de Confirmacion
DoCmd.OpenQuery "Actualiza_A_Baneado_Empleado"
Me.Baneado = -1
DoCmd.SetWarnings True
DoCmd.Close
End If
Salir_Ingresar:
On Error GoTo 0
Exit Sub
Error_Ingresar:
MsgBox "Error #" & Err.Number & vbCrLf & Err.Source & vbCrlLf & Err.Description
Resume Salir_Ingresar
End Sub

Encontrado el error

Para otro que busque .

If Me.In2 = 2 then esta parte al estar oculo el comando ln2 produce el error.
No lo daba en accdb pero si en accde.

GRACIAS a la ayuda de tratamiento de errores que no ponía ahora solucionare todo problema con la creación de la accde.

Saludos

Me alegra ver que por fin has logrado solucionar el problema. Si te fueron de ayuda mis sugerencias, no dejes de valorar la respuesta.

¡Gracias! 

Agradecer está muy bien, pero si además, valoras la respuesta, ayudas a otros usuarios que puedan tener la misma duda a leer (o no) el hilo .

¿Qué debo hacer cuando alguien contesta a mi pregunta en Todoexpertos?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas