У меня есть база данных, из которой я создаю множество файлов Excel через набор записей DAO + CopyFromRecordset. Есть странная ошибка, когда команда CopyFromRecordset иногда выдает ошибку, но если я просто нажимаю «Продолжить» в отладчике, она продолжается без проблем. Это напомнило мне, что мне нужно настроить параметры для OpenRecordset - но как?
Что я делаю, это запрашиваю различные части таблицы и помещаю запрашиваемую часть в файл Excel. Набор записей только для чтения.
Итак, RecordsetTypeEnum
- это dbOpenSnapshot
, это ясно.
RecordsetOptionEnum
? Я использую dbFailOnError, когда хочу читать / писать, но в этом случае нет смысла. Имеет ли смысл dbRunAsync, поскольку я запрашиваю одну и ту же таблицу несколько раз в относительно быстрой последовательности? Любой другой параметр, который полезен?
LockTypeEnum
? Есть ли разница при использовании снимка?
Я не смог найти хорошее исчерпывающее описание этих настроек.
Мой код ниже, не слишком уместен:
Set MyDb = CurrentDb
Set rsGLAP = MyDb.OpenRecordset("SELECT DISTINCT GL_Account FROM APCommentedData WHERE CoCode = """ & CoCd & """;", dbOpenSnapshot)
If Not (rsGLAP.BOF And rsGLAP.EOF) Then
rsGLAP.MoveFirst
Do Until rsGLAP.EOF
Set wsAccount = wb.worksheets.Add
wsAccount.Name = rsGLAP.Fields(0).Value
Set rs1 = MyDb.OpenRecordset("SELECT * FROM APCommentedData WHERE CoCode = """ & CoCd & """ AND GL_Account = """ & rsGLAP.Fields(0).Value & """;",dbOpenSnapshot)
'headers
For i = 0 To rs1.Fields.Count - 1
wsAccount.cells(33, i + 1).Value = rs1.Fields(i).Name
Next
'data
wsAccount.cells(34, 1).copyfromrecordset rs1
rs1.Close
Set rs1 = Nothing
rsGLAP.MoveNext
Loop