Fehler 3622 - Sie müssen die Option dbSeeChanges mit OpenRecordset verwenden, wenn Sie auf eine SQL Server-Tabelle mit einer IDENTITY-Spalte zugreifen

Ich verwende MS Access 2007 und verbinde mich mit einem MS SQL 2008 R2-Server. Ich habe ein Formular mit einem Mehrfachauswahlfeld, mit dem ich den Status für mehrere Felder für die ausgewählten Server aktualisiere. Zur Zeit verwende ich das Feld Servername im Mehrfachauswahlfeld. Das Problem ist, dass es mehrere Datensätze mit demselben Servernamen geben kann. Um dies zu umgehen, möchte ich es von ServerName in Datensatznummer (ID) ändern. Wenn ich dies tue, obwohl VB den Fehler "Fehler 3622 - Sie müssen die Option dbSeeChanges mit OpenRecordset verwenden, wenn Sie auf eine SQL Server-Tabelle mit einer IDENTITY-Spalte zugreifen". Ich habe mir viele verschiedene Posts auf verschiedenen Websites angesehen, kann aber nicht herausfinden, wie ich das in meinen Code implementieren kann. Das Skript funktioniert einwandfrei, wenn ich ServerName verwende. Es funktioniert auch einwandfrei, wenn ich zum SQL-Server gehe und das Feld in Identity = False ändere. Das Problem dabei ist, dass ich mit der automatischen Nummerierung keine neuen Datensätze erstellen kann. Es funktioniert auch perfekt, wenn ich die Zeilennummern in einer Update-Abfrage fest codiere. Das Problem dabei ist, dass ich die Zeilennummern nicht für alle Benutzer der Datenbank fest codieren kann. Das Problem scheint nur im Zusammenhang mit VB zu stehen. Unten ist was ich aktuell habe. Wie Sie sehen, habe ich versucht, die dbSeeChanges zur Execute-Zeile hinzuzufügen.

Private Sub btnRoarsStatus_Click()
Dim strSQL As String
Dim Criteria As String
Dim Itm As Variant

With Me.lstServerNames

    If .ItemsSelected.Count > 0 Then
          For Each Itm In .ItemsSelected
              Criteria = Criteria & "," & .ItemData(Itm)
           Next Itm

          ' remove leading comma
           Criteria = Mid(Criteria, 2)

           ' execute the SQL statement
            strSQL = "UPDATE buildsheet SET [Roars Status] = " & Chr(34) & _
            Me.cboRoarsStatus & Chr(34) & " WHERE ID IN(" & Criteria & ")"

            Debug.Print strSQL
         CurrentDb().Execute strSQL, dbSeeChanges

      Else
          MsgBox "You must select one or more items in the  list box!", _
                  vbExclamation, "No Selection Made"
                  Exit Sub
      End If
  End With
 MsgBox "Completed", vbExclamation, "Completed"
End Sub

Antworten auf die Frage(3)

Ihre Antwort auf die Frage