我有一个数据库,可以通过DAO记录集+ CopyFromRecordset从中创建许多Excel文件。 CopyFromRecordset命令有时会产生错误,这是一个奇怪的错误,但是如果我只是简单地在调试器中按Continue,它将继续进行而不会出现问题。这使我想起了我需要为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