我不得不将一个 MS Access 2003/2010 ADP 项目(该项目使用 SQL Server 视图作为其RecordSource
所有形式)重新开发为一个 MS Access 2016 ACCDB。
我尝试使用传递查询来获取数据,这对于只读列很好,但是当我想更改其中一个绑定列中的值时,它会说 ,RecordSet is not updateable
如果使用视图,这是您可能期望的。
但我现在已经读到,如果你SCHEMABINDING
这样定义视图:
ALTER VIEW [dbo].[vwQuote_MinibusesDetails]
WITH SCHEMABINDING
AS
SELECT ...
并添加UNIQUE CLUSTERED INDEX
这样的:
CREATE UNIQUE CLUSTERED INDEX CIX_vwQuote_MinibusesDetails
ON vwQuote_MinibusesDetails (txtQuoteNo, txtVersion, txtVehicleNo);
然后TableDef
像这样将视图作为无 DSN 的方式添加到您的项目中
stConnect = "ODBC;Driver=SQL Server;Server=" & SERVER_NAME & ";Database=" & APP_DATABASE & ";Trusted_Connection=Yes"
Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
CurrentDb.TableDefs.Append td
它变得像表格一样可编辑。
但是,当我TableDef
在 Access 中打开它时,它会显示所有行和列,就好像它是可编辑的一样,但是如果我尝试编辑一个列,它会说有Write Conflict
另一个用户的更改,当我 100% 确定没有不是因为我是唯一使用它的人。
有任何想法吗?(我目前正在使用 Access 2010)