我的一位同事正在尝试使用excel工具从访问数据库中提取数据。该工具在我的计算机上运行良好,但他遇到的问题是该工具无法与Access数据库连接。
我已经尝试通过检查excel选项是否正确来解决问题,即确保宏已启用等等但我仍然遇到问题。
问题必须是我的同事设置中尚未配置的内容,因为该工具对我没有任何问题。以下是读取Access DB的代码的一些部分:
Public Const pActuarialPWD = "password2"
Public Const QuoteDB = "N:\DWH\Commercial Ins\Fleet\Databases\Quote DB.accdb"
If bDBOpen = False Then
'Connect to database
If openQuotedb() = False Then
MsgBox "Connection to database failed - contact Actuarial"
Exit Sub
End If
End If
Function openQuotedb()
On Error GoTo ErrorHandler
openQuotedb = False
Set db = OpenDatabase(QuoteDB, False, False, "MS Access;PWD=" & pActuarialPWD)
openQuotedb = True
Exit Function
ErrorHandler:
MsgBox "Couldn't connect to database. Please contact actuarial. Tool should not be used, as quote information will be lost", vbCritical
End Function
我已经多次在我的计算机和同事中完成了该程序,但我无法看到问题所在。当我走过代码行时," db = ..."在我的同事PC上并将鼠标悬停在db上,它读取" db = Nothing"而在我的网站上它成功连接到数据库。
您有什么想法可能会出错吗?在我的同事PC上连接到Access时,似乎没有正确设置exces。
我唯一能想到的是我使用Excel 2013而我的同事是在2010年。
答案 0 :(得分:0)
以下功能给我带来了很多麻烦。我不知道它是否能解决你的问题,但总的来说会有所帮助。
我已经在许多应用程序中测试过它,并且有各种各样的变化和变量,它每次都有效,并且从未让我失望过。也许会帮助你。
CSSettings.Item.set("id", Wfm_AccNumber);
value = CSSettings.Item.get("id"); // or CSSettings.Item("id")
要调用该函数,请执行以下操作:
Public Function db_connect(Optional sel_db As Variant = "", Optional pass_be As Variant = ";PWD=<password>") As DAO.Database
Dim db As DAO.Database
If sel_db = "" Then
sel_db = "<database_path>"
End If
On Error GoTo db_locked:
Set db = DBEngine.OpenDatabase(sel_db, True, False, pass_be)
GoTo DBclose:
db_locked:
Sleep 100
Set db = DB_Connection.db_connect(sel_db, pass_be)
DBclose:
Set db_connect = db
End Function
警告-声明!!! 强> 小心。该函数具有等待机制并尝试连接而不会永远停止。如果您有错误的参数或数据库不存在,那么它将陷入无限循环。我从不打扰修复它,因为我知道问题并避免它。但是,如果需要,可以进行改进。