¿Qué hacer si aparece el error Run-time error 3146 ODBC--cal failed?
1) Creamos una función como la siguiente:
Function TestODBCErr()
If Errors.Count > 1 Then
For Each errX In DAO.Errors
Debug.Print "ODBC Error"
Debug.Print errX.Number
Debug.Print errX.Description
Next errX
Else
Debug.Print "VBA Error"
Debug.Print Err.Number
Debug.Print Err.Description
End If
End Function
Fuente: http://www.utteraccess.com/forum/Runtime-Error-3146-t1993453.html&p=2285193
2) Insertamos esa función desde el menú Insert / Module del editor de VBA
3) Ejecutamos el programa hasta que aparezca el error y presionamos DEBUG
4) Abrimos una ventana Immediate Window con Ctrl+G o desde el menú View
5) Insertamos el código ? TestODBCErr() y presionamos enter
6) Luego obtenemos un mensaje detallado que varía de acuerdo a nuestro problema específico. Un ejemplo es:
ODBC Error
2601
[Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert duplicate key row in object 'dbo.Contactos' with unique index 'IX_Contactos'.
ODBC Error
3621
[Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.
ODBC Error
3146
ODBC--call failed.
Espero les resulte útil!
martes, 11 de junio de 2013
martes, 30 de abril de 2013
No current record
Repentinamente aparece en una base de datos Access el siguiente error:
Buscando posibles causas en Internet, no encontré una solución a este problema. Revisando las tareas que había realizado en forma previa a que el error apareciera, encontré que:
No current record
Buscando posibles causas en Internet, no encontré una solución a este problema. Revisando las tareas que había realizado en forma previa a que el error apareciera, encontré que:
- Había creado varias columnas nuevas en una tabla existente en SQL Server
- Luego había utilizado Link Table Manager para refrescar este cambio
- Y luego había eliminado en SQL Server una de esas columnas
Aparentemente el paso tres fue la causa del problema, a pesar de que la columna no la estaba usando dentro de Access, con lo cual el problema se resolvió de la siguiente forma:
- Utilicé nuevamente Link Table Manager
- Luego reparé la base Access
Y todo volvió a la normalidad. Espero que a alguien le sirva.
Hasta la próxima!
viernes, 19 de abril de 2013
Access 2010 se cae al usar VBA - Código 1033
Problema:
Access se cae al procesar código VBA arrojando un mensaje de error como el siguiente:
Access se cae al procesar código VBA arrojando un mensaje de error como el siguiente:
Problem signature: Problem Event Name: APPCRASH
Application Name: MSACCESS.EXE
Application Version: 14.0.6024.1000
Application Timestamp: 4d83e4fc
Fault Module Name: VBE7.DLL
Fault Module Version: 7.0.16.27
Fault Module Timestamp: 4f86f5aa
Exception Code: c0000005
Exception Offset: 00013a05
OS Version: 6.0.6002.2.2.0.272.7
Locale ID: 11274
Additional information about the problem: LCID: 1033
skulcid: 1033
Read our privacy statement: http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0409
Solución:
Utilizar el comando "decompile" tal como se explica en: http://notasaccess.blogspot.com.ar/2013/02/the-expression-on-click-you-entered-as.html
martes, 19 de marzo de 2013
¿Cómo reemplazar un string en Access con VBA?
Con la función Replace:
WORD_C_CABECERA = Replace(WORD_C_CABECERA, "IMAGEN", WORD_C_IMAGEN)
jueves, 14 de marzo de 2013
¿Cómo hacer consultas SQL desde VBA en Access?
Ejemplo 1: lectura secuencial
Dim db_m As Database Dim rs_m As DAO.Recordset Dim strSQL_m As String Dim strResult_m As String Set db_m = CurrentDb strSQL_m = "SELECT ..." Set rs_m = db_m.OpenRecordset(strSQL_m, dbOpenForwardOnly) If rs_m.RecordCount <> 0 Then While Not rs_m.EOF strResult = strResult & rs_m![Modelo] rs_m.MoveNext Wend End If
Ejemplo 2: lectura de un dato en particular
Dim db As Database Dim rs As DAO.Recordset Dim strSQL As String Dim strResult As String Dim VarRecords As Variant Set db = CurrentDb strSQL = "SELECT Snippet FROM dbo_Snippets WHERE ID = '" & Id_Snippet & "'" Set rs = db.OpenRecordset(strSQL) VarRecords = rs.GetRows(1)
Más información
miércoles, 6 de marzo de 2013
Error #type al pasar valores nulos en una función de VBA
Si se obtiene un error de tipo (#type) al pasar un valor nulo a una función en VBA, es posible que el problema sea haber definido los parámetros como String. En su lugar, podemos usar Variant que soporta:
Más información en http://msdn.microsoft.com/en-us/library/aa716185(v=vs.60).aspx
- Empty
- Null
- Error
Más información en http://msdn.microsoft.com/en-us/library/aa716185(v=vs.60).aspx
martes, 26 de febrero de 2013
¿Cómo saber si un archivo existe?
El siguiente código nos puede ayudar a saber desde Access si un archivo existe:
Más información en:
If Dir("C:\Prueba\Prueba.doc") = "" Then Msgbox "El archivo no existe" Else Msgbox "El archivo existe" End If
Más información en:
Suscribirse a:
Entradas (Atom)