SQL Server [MS-Access][ODBC]无法删除窗体上的行,ODBC删除链接表失败

kgsdhlau  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(205)

我有一个链接到ODBC(MS SQLServer)的表单,它显示VIEW的结果,当我尝试删除记录时,我调用VBA级别的函数

Form_BeforeDelConfirm(Cancel As Integer, Response As Integer){
     If (IsNull(Text104.value) = False) Then
         Dim deleteLabel As DAO.QueryDef
         Set deleteLabel = CurrentDb.CreateQueryDef("")
         deleteLabel.Connect = CurrentDb.TableDefs("KontrollWerte").Connect
         If (InStr(QuerySave, "KontrollWerteVIEW") <> 0) Then
             deleteLabel.sql = "delete from KontrollWerte_Label where Kontrolle_Label_ID = " & Text104.value
         End If
         Close
    End If 
}

显示错误:
[Microsoft][SQL Server Native Client 11.0][SQL Server]视图或函数"dbo. KontrollwerteVIEW"不可更新,因为所做的修改会影响多个基表。(#4450)
这个错误是正常的,因为视图是一个包含多个表的选择。
似乎根本没有调用该函数,并且MS Access的"默认"删除函数正在被调用,有一种方法可以告诉MS Access不要执行默认删除,而是在Form_BeforeDelConfirm函数内部执行我的sql语句?
谢谢!
我试图改变函数调用的时间,但没有成功。

js81xvg6

js81xvg61#

您必须确保视图允许更新。
当你链接一个表,而它是一个视图?
在创建表链接的过程中,您将看到以下提示:
首先,我们在链接"视图/表"时选择"视图"

请注意,我还选中了"保存密码"选项。
接下来,我们会看到:

不要跳过上面的提示。如果你没有为那个视图选择PK列,那么它将是只读的。
参考:
上面提示保存密码,链接到那个视图时上面提示选择主键?
它不会出现在重新链接,只有当添加一个新的链接!
所以,这就是为什么我声明删除到sql server的链接(不仅仅是重新链接,不仅仅是重新刷新表链接,而是第一次添加是这里的关键说明)。
所以,是的,视图是并且可以是可更新的,但是在Access中的链接过程中,您必须回答上面的提示,否则结果是一个只读表。

相关问题