2013-11-15 4 views
0

Я пытаюсь создать функцию, которая будет проверять все флажки в форме с помощью подформы . Поскольку мы переехали в Office 2013, этот код перестает работать, и кажется, что переход к ADO - единственный способ.Преобразование DAO в ADO

Private Sub Toggle_Click() 
    Dim sfrm 
    Dim cn As ADODB.Connection 
    Dim rs As ADODB.Recordset 
    sfrm = Me.Subform 
    Set cn = CurrentProject.Connection 
    'Dim rs As DAO.Recordset 
    'Set rs = Me.Subform.Form.RecordsetClone 
    rs.Open Me.Recordset 
    If (theTop = 0) Then 
    Else 
     Me.Subform.Form.AllowAdditions = False 
     Dim i As Integer 
     If (theHeight = 0) Then 
      If (sfrm![Ready?] = -1) Then 
       sfrm![Ready?] = 0 
       sfrm![Timestamp] = Null 
      Else 
       sfrm![Ready?] = -1 
       sfrm![Timestamp] = Date 
      End If 
     Else 
      On Error Resume Next 
      For i = theTop To rs.RecordCount 
       'If (i = 1) Then 
       'Else 

       'End If 
       'rs.MoveLast 
      'Do While Not rs.BOF 
       If (sfrm![Ready?] = -1) Then 
        sfrm![Ready?] = 0 
        sfrm![Timestamp] = Null 
       Else 
        sfrm![Ready?] = -1 
        sfrm![Timestamp] = Date 
       End If 

       'Me.Subform.Form.Recordset.MoveNext 
       rs.MoveNext 
       'Debug.Print sfrm![Routing Number] 
       'Loop 
      Next 
     End If 
     Me.Subform.Form.AllowAdditions = True 
    End If 

End Sub 
+0

Что происходит с этим кодом? Если он вызывает ошибку, сообщите нам полное сообщение об ошибке и укажите, какая строка запускает его. В противном случае, помогите нам понять, что делает код и что вам нужно, чтобы сделать по-другому. – HansUp

ответ

1

, кажется, что переход к ADO является единственным способом

С Access 2013, DAO остается предпочтительным способом взаимодействовать с объектами базы данных Access из самого приложения Access. На мой взгляд, было бы разумно исследовать , почему не удалось выполнить предыдущий код DAO (и как вы могли его исправить), прежде чем приступать к оптовой конвертации кода DAO в ADO.

Я просто сделал тест в Access 2013. С [ParentTable}

ParentTable.png

[ChildTable]

ChildTable.png

и форма, как этот

enter image description here

я мог бы переключить состояние текущей подчиненной записи с помощью следующего кода [Selected?]:

Option Compare Database 
Option Explicit 

Private Sub cmdToggleChildren_Click() 
    Dim rst As DAO.Recordset 
    Set rst = Me.ChildSubform.Form.Recordset 
    If Not (rst.BOF And rst.EOF) Then 
     rst.MoveFirst 
     Do Until rst.EOF 
      rst.Edit 
      rst![Selected?] = Not rst![Selected?] 
      rst.Update 
      rst.MoveNext 
     Loop 
    End If 
    Set rst = Nothing 
End Sub 
+0

Привет, Горд, Спасибо за совет и совет. :) – user2997911

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