DAO记录集设置以供读取

时间:2019-05-14 15:21:12

标签: vba ms-access access-vba dao recordset

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

我要做的是查询表的不同部分并将查询到的部分放到Excel文件中。只读记录集。

所以,RecordsetTypeEnumdbOpenSnapshot,很清楚。

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

0 个答案:

没有答案