我最近在继承的数据库中重新编写了VBA代码,以包含连接到数据库的IN语句,而不是一直保持链接表的连接(接近400个用户将在任何一个用户处打开前端时间,因此它使得尝试访问数据库以使设计变更几乎不可能)。
但是,使用IN子句从数据库中读取数据效果很好,但是在write语句上使用它们似乎可以在VBA中执行,但实际上并没有对数据库进行任何更改。
此处未写声明:
CurrentDb.Execute " UPDATE [PS_DB] " & _
" IN '' [MS Access;PWD=*passwd string here*;DATABASE=I:\*filepath here*\PM_DB_testenvironment.accdb] " & _
" SET [PS_DeleteTS]= '" & Format(Now, "dd/mm/yy hh:mm") & " - " & usernm & "'" & _
" WHERE PS_DB.PS_TeamName = '" & tm & "' AND [PS_Delete]= TRUE; "
删除IN子句并执行该语句,就可以将其写入数据库。
是否可能需要在此处设置数据库的读/写状态?
答案 0 :(得分:3)
使用CurrentDb
在另一个Access数据库上执行查询是一种错误的做法。
相反,打开与该数据库的连接:
Dim db As DAO.Database
Set db = DBEngine(0).OpenDatabase("I:\*filepath here*\PM_DB_testenvironment.accdb", False, False, "MS Access;PWD=*passwd string here*")
db.Execute "your query", dbFailOnError
db.Close