ADODB连接到excel中的.mdb文件2013

问题描述:

我希望有人能帮忙。 我开发了一个通过连接字符串“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = \” 来更新.mdb访问数据库的excel包。该数据库是共享的。 我有一个Mitel电话系统每10秒检查一次数据库以检查一个新条目。 数据库与ADODB连接到excel中的.mdb文件2013

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并共享数据库。

我现在很绝望,因为这个包已经上线了。我在测试过程中没有任何问题,因为没有像很多人使用它,他们都不在办公室2013年

+0

您不应该打开和关闭数据库。但是,你应该确保关闭你打开的连接:'cn.close' – Rory

+0

非常感谢。非常感激。我真的希望这件事很容易。Set cn = Nothing – DezyK

+0

我的意思是说,不会设置cn-nothing做同样的事情。我已经尝试过了,但没有打开/关闭数据库,但数据库没有足够快地更新,当电话尝试读取新记录时,它看不到一个。 – DezyK

错误的驱动程序:假设一个参考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