首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误3622 -访问包含IDENTITY列的SQL Server表时,必须将dbSeeChanges选项与OpenRecordset一起使用

错误3622 -访问包含IDENTITY列的SQL Server表时,必须将dbSeeChanges选项与OpenRecordset一起使用
EN

Stack Overflow用户
提问于 2013-11-15 23:46:18
回答 3查看 14.4K关注 0票数 4

我正在运行MS Access 2007,正在连接到MS SQL2008 R2服务器。我有一个带有多选框的表单,用于更新所选服务器的多个字段的状态。目前,我在多选框中使用ServerName字段。问题是可能有多个记录具有相同的服务器名称。所以为了解决这个问题,我想把它从ServerName改为record number (ID)。当我这样做时,尽管VB给出了错误“error3622-当访问有标识列的SQL Server表时,您必须将dbSeeChanges选项与OpenRecordset一起使用”。我在不同的网站上看过许多不同的帖子,但不知道如何在我的代码中实现这一点。当我使用ServerName时,该脚本运行得很好,如果我转到SQL server并将字段更改为Identity = False,它也会运行得很好。这样做的问题是我不能用自动编号创建新记录。如果我在Update查询中硬编码行号,它也能很好地工作。这样做的问题是,我不能为使用数据库的每个人硬编码行号。这个问题似乎只与VB有关。下面是我目前所拥有的。如您所见,我尝试将dbSeeChanges添加到Execute行。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-01-21 05:18:47

对我来说是这样的:

代码语言:javascript
复制
CurrentDb.Execute strSQL, **dbFailOnError +** dbSeeChanges

dbFailOnError是关键。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20004932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档