3

日付/時刻のフィールドとそのフィールド値を含む、すべてのリンクされたテーブルの名前を出力しようとしています。

次のコードは、すべての値ではなく、最初のテーブル、フィールド名、およびそれらの最初の値を出力できますが、次のリンクされたテーブルに到達すると、このエラーが発生します

Run-time Error '3622' 
You must use the dbSeeChanges option with OpenRecordSet when accessing a SQL Server table that has an IDENTITY column.

これが私のコードです

Private Sub btnGetFields_Click()

   Dim db As DAO.Database
   Dim tdf As DAO.TableDef
   Dim f As Field
   Dim rst As DAO.Recordset
   Dim numField As Integer

   Set db = CurrentDb

   For Each tdf In db.TableDefs

        If Left$(tdf.Connect, 9) = "ODBC;DSN=" Then

            Set rst = CurrentDb.OpenRecordset(tdf.Name)
            numField = rst.Fields.Count

            Debug.Print "Table: " & tdf.Name
            For index = 0 To numField - 1
                 If rst.Fields(index).Type = dbDate Then

                     Debug.Print "Field: " & rst.Fields(index).Name; "   Value : "; rst.Fields(index).Value
                 End If
            Next



        End If

   Next

   Set tdf = Nothing
   Set db = Nothing

End Sub

SQLテーブルを使用している場合、ADOを使用する必要があるということを読みましたか? 何か案は?

4

1 に答える 1

5

変更するだけで、既存の DAO コードを引き続き使用できます

Set rst = CurrentDb.OpenRecordset(tdf.Name)

Set rst = CurrentDb.OpenRecordset(tdf.Name, dbOpenSnapshot)

これにより、静的な読み取り専用の Recordset が開かれるため、dbSeeChanges必須ではありません。

于 2013-06-18T11:07:10.557 に答える