控件无法编辑;它绑定到自动编号字段[FieldName]

时间:2017-11-27 02:13:13

标签: ms-access-2010

我有一个Microsoft Access ADP类型的数据库,链接到最近从Office XP(2002)升级到Office 2010的SQL Server 2012数据库。升级大部分都是成功的,除了组合框上的问题具有可更新数据源的表单 - 在Access XP / 2002中,用户可以从下拉列表中选择值,并且值将在表中更新。但是,当用户尝试使用Access 2010中的“tblL.LMID”组合框修改记录时,屏幕底部的状态栏中会短暂闪烁(并且记录未更新):

“无法编辑控件;它已绑定到自动编号字段'LMID'”

我理解这是正常的功能,如果有问题的字段是SQL Server中的Identity列,但这不是这里的情况。但是,'tblL.LMID'字段确实在幕后的SQL查询中用作连接。

表单上的数据源如下:

SELECT dbo.tblLM.OpID, dbo.tblL.*, dbo.tblLM.DR 
FROM dbo.tblL INNER JOIN dbo.tblLM ON dbo.tblL.LMID = dbo.tblLM.LMID 
WHERE (dbo.tblLM.DR = 1) 
ORDER BY dbo.tblL.DS

查询中涉及的表如下:

CREATE TABLE [dbo].[tblL](
    [LID] [int] IDENTITY(1,1) NOT NULL,
    [LMID] [int] NOT NULL,
    [DS] [nvarchar](10) NOT NULL)

CREATE TABLE [dbo].[tblLM](
    [LMID] [int] IDENTITY(1,1) NOT NULL,
    [OpID] [int] NULL,
    [DR] [bit] NULL DEFAULT ((1)))

根据表结构,tblL.LMID是一个简单的列(不是Autonumber / Identity),我们应该像在应用程序的Access XP / 2002版本中那样修改它。

我很乐意接受有关此问题的任何帮助,非常感谢! :)

2 个答案:

答案 0 :(得分:0)

将表单放入设计视图;删除当前的组合框。创建一个新的组合框并按照向导进行操作。

答案 1 :(得分:0)

问题在于查询本身。要解决这个问题,我们必须用特定的列名替换“dbo.tblL。*”select,并为有问题的列添加别名:

SELECT dbo.tblLM.OpID, dbo.tblL.LMID as l_MID, dbo.tblLM.DR 
FROM dbo.tblL INNER JOIN dbo.tblLM ON dbo.tblL.LMID = dbo.tblLM.LMID 
WHERE (dbo.tblLM.DR = 1) 
ORDER BY dbo.tblL.DS

然后我们更新了组合框以使用新别名(“l_MID”),然后它开始正常工作。