Я использую несколько макросов, которые выполняют команды чтения и записи в MS Access, используя DAO
в Excel. Мой текущий тип файла - .MDB
. Я столкнулся с повреждением базы данных после 2 недель чтения и записи в MS Access. Ранее я ссылался на Microsoft DAO 3.6 Object Library
, но переключился на Microsoft Office 16.0 Access database engine Object Library
. Может ли моя база данных быть повреждена из-за типа файла и типа соединения, или из-за неправильной ссылки на библиотеку? Я предоставляю код, используемый для загрузки и извлечения данных из MS Access.
Загрузить таблицу из MS Access в Excel
Sub loadData()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Set db = OpenDatabase("Z:\UBPB CRM Project\pbsbackup.mdb")
Set qdf = db.QueryDefs("pbsload")
qdf!pbsbranch = initialLogin.ComboBox1
Set rst = qdf.OpenRecordset
If rst.EOF Then
rst.Close
End If
Do
Sheet3.Range("A8").CopyFromRecordset rst
Loop Until rst.EOF
rst.Close
Set rst = Nothing
End Sub
Добавление записи из пользовательской формы Excel в MS Access
Sub AddnewRecord()
Dim db As Database
Dim qdf As QueryDef
Application.StatusBar = "Connecting to PBS Database......"
Set db = OpenDatabase("Z:\UBPB CRM Project\pbsbackup.mdb")
Set qdf = db.QueryDefs("addclient")
Application.CalculateUntilAsyncQueriesDone
Application.StatusBar = "Uploading Client Data to PBS server...."
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
qdf!pbsbranch = Sheet4.Range("A2")
qdf!pbsclient = addnewClient.client
qdf!pbspriority = addnewClient.priority_
qdf!pbscontact = addnewClient.contact
qdf!pbsresult = addnewClient.result
qdf!pbsnextsteps = addnewClient.segmentType
qdf!pbsattempts = addnewClient.Label11
qdf!pbsnotes = addnewClient.notes
qdf.Execute dbFailOnError
qdf.Close
Application.StatusBar = "Upload Successful!"
Set qdf = Nothing
Set cdb = Nothing
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Обновление записи из пользовательской формы Excel в MS Access
Sub pbsupdate()
Dim db As Database
Dim qdf As QueryDef
Application.StatusBar = "Connecting to PBS Database......"
Set db = OpenDatabase("Z:\UBPB CRM Project\pbsbackup.mdb")
Set qdf = db.QueryDefs("pbsupdate")
Application.StatusBar = "Uploading Client Data to PBS server...."
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
qdf!pbskey = dialer.key
qdf!pbsclient = dialer.client
qdf!pbspriority = dialer.priority_
qdf!pbssource = dialer.priority
qdf!pbslastcontact = dialer.contact
qdf!pbsresult = dialer.result
qdf!pbsnextsteps = dialer.segmentType
qdf!pbsattempts = dialer.Label11 + dialer.Label11 + 1
qdf!pbsnotes = dialer.notes
Application.CalculateUntilAsyncQueriesDone
qdf.Execute dbFailOnError
qdf.Close
db.Close
Application.StatusBar = "Upload Successful!"
Set qdf = Nothing
Set cdb = Nothing
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub