DezyK
DezyK

Reputation: 65

ADODB connection to .mdb file from excel 2013

I hope someone can help. I've developed an excel package that updates a .mdb access database through the connection string "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" The database is shared. I have a Mitel telephony system that checks the database every 10 seconds or so to check for a new entry. The database is updated with

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

The INSERT statement updates the database fine, but I find I have to open and close the database to get it to update in time.

This package is used heavily by around 5 people at a time, making about 2 entries per minute.

It comes up with the error "file already in use", especially when using excel 2013, a lot of the time. I think this is because I have to open/close the database every time I update.

Does anybody know of a different way I can get the database to update quicker? I've got the actual database setting to update ADODB every second and the database is shared.

I'm now desperate, as this package has went live. I didn't have any problems during testing because there wasn't as many people using it and none of them were on office 2013.

Upvotes: 0

Views: 2087

Answers (1)

Andy Brazil
Andy Brazil

Reputation: 11

Wrong driver: Assuming a reference to activex data objects...

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

Upvotes: 1

Related Questions