我希望有人可以提供帮助。 我开发了一个excel包,通过连接字符串来更新.mdb访问数据库" Provider = Microsoft.Jet.OLEDB.4.0; Data Source = \" 数据库是共享的。 我有一个Mitel电话系统,每隔10秒左右检查一次数据库以检查新条目。 数据库更新为
Dim q As New ADODB.Command
Dim cn As New ADODB.Connection
Dim SQL As String
SQL = "INSERT INTO tbl1LinkAuths (DateTimeAdded, DateEntered, AddedBy, REG, OrderNo,AccountNumber, CentreNumber, EmailAddress, Callback, "
SQL = SQL & "MakeText, "...............
cn.Open cnDB
q.ActiveConnection = cn
q.CommandText = SQL
'Excecute the above SQL to insert the new job record
q.Execute
Set rs = Nothing
Set cn = Nothing
Dim db As Access.Application
Set db = New Access.Application
db.Application.Visible = False
db.OpenCurrentDatabase "\\kffcis02\VWM Share\TelephonyDB.mdb", False
db.CloseCurrentDatabase
INSERT语句更新了数据库,但我发现必须打开和关闭数据库才能及时更新。
这个软件包大约每人约5人使用,每分钟约有2个条目。
它出现了错误"文件已经在使用",特别是在使用excel 2013时,很多时候。我想这是因为我每次更新时都必须打开/关闭数据库。
有没有人知道我可以更快地更新数据库的不同方式? 我已经获得了实际的数据库设置,每秒更新ADODB并共享数据库。
我现在绝望了,因为这个套餐已经上线了。我在测试期间没有遇到任何问题,因为没有多少人使用它,而且没有一个人在办公室工作。
答案 0 :(得分:1)
错误的驱动程序:假设引用了activex数据对象......
dim conn as adodb.connection 'module level variable
const DBNAME = "your name here"
const DBLOC = "Your dir here"
Sub UpdateDb()
dim sql as string
openconnectionroutine
sql = "INSERT INTO tbl1LinkAuths (DateTimeAdded, DateEntered, AddedBy, "
'etc
'if you want to check it worked : otherwise ditch numrecs
dim numrecs as long
conn.execute sql, numrecs
msgbox "You added " & numrecs & " records",vbokonly,"Done"
end sub
sub Openconnectionroutine()
if conn is nothing then set conn = new adodb.connection
if conn.connectionstring = "" then
conn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=" & DBNAME & ";" & _
"DefaultDir=" & DBLOC & ";" & _
"Uid=Admin;Pwd=;"
end if
if conn.state = adstateopen then
else
conn.Open
end if
End sub