2013-06-18 3 views
2

Я пытаюсь вывести имя всех связанных таблиц, включая их поля, которые являются Date/Time, и значения этих полей.Ошибки со связанными таблицами и доступ к Ms (ошибка времени выполнения '3622': столбец dbSeeChanges/Identity)

Следующий код может выводить первую таблицу, имя поля и их первое значение, а не все значения, хотя, когда он попадает в следующий присоединенной таблицы, я получаю эту ошибку

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

Вы можете продолжать использовать существующий код DAO, просто измените

Set rst = CurrentDb.OpenRecordset(tdf.Name) 

в

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

Это открывает статический только для чтения Recordset, поэтому dbSeeChanges не требуется.

+0

Вот и все! Спасибо, добрый сэр! –

Смежные вопросы