Forms MS访问组合框“#姓名;错误

Forms MS访问组合框“#姓名;错误,forms,ms-access,combobox,Forms,Ms Access,Combobox,我对表单中的组合框有一个问题,每当我输入它以选择值时,它都会显示一个“#Name?”错误 我正在MS Access(特别是Microsoft Office Professional Plus 2010)中创建一个通用用户界面表单,这意味着表单本身不链接到任何类型的记录集。 在这种形式下,我创建了一个组合框,并将其链接到一个“TblSubsystem”表。桌子非常简单,设计如下: ID(主键、自动编号) SysShortName,文本 系统全名,文本 当我尝试在下拉列表中选择一个值时,组合框的

我对表单中的组合框有一个问题,每当我输入它以选择值时,它都会显示一个“#Name?”错误

我正在MS Access(特别是Microsoft Office Professional Plus 2010)中创建一个通用用户界面表单,这意味着表单本身不链接到任何类型的记录集。 在这种形式下,我创建了一个组合框,并将其链接到一个“TblSubsystem”表。桌子非常简单,设计如下:

  • ID(主键、自动编号)
  • SysShortName,文本
  • 系统全名,文本
当我尝试在下拉列表中选择一个值时,组合框的测试框只显示“#Name?”(实际上是在我选择组合框时,甚至在我选择任何值之前)

组合框的相关(我认为)参数是:

  • 控制源=“=[TBLSubystem]![ID]”
  • 行源=TblSubsystem
  • 行源类型=表/查询
  • 绑定列=2
  • 列计数=2
  • 列宽=0cm;1厘米 (我试图选择并显示短代码,但要将ID作为组合框的值)
我在同一个项目中有另一个表单,其中一个相同的设置(也在TblSubsystem上)工作正常,这些参数的值相同,但该表单链接到一个记录集(另一个表)。据我所知,这是唯一的区别,所以我想我一定是错过了一些东西,一旦我看到它,这将是显而易见的

我在stackoverflow和更广泛的网络上寻找了“Ms Access combobox#Name?Error”的变体,但在两天内,我没有看到任何回复我问题的帖子。有些很接近,但指的是一个更复杂的设置,而我认为我的应该是相当直截了当的。尝试使解决方案适应我的情况(包括重新创建组合框或反编译数据库)没有帮助

这是一个很长的问题,很抱歉,但希望你们中的一些人能够帮助解决这个问题。我提前感谢您对我的帮助。

#姓名
是一个有约束力的问题。尝试将绑定列设置为1,这样它只记录主键,看看是否有效

编辑:您的组合框引用了表的主键作为控制源。请记住,控制源是应用程序用户正在更改的值。以下是使用组合框时需要考虑的一些关键事项:

  • 控制源应该(通常)引用表的外键
  • 行源应引用要在框中显示的文本
  • 绑定列应设置为1,除非应用程序设计要求同时更新两个字段,这是一种不常见的做法
  • 将列宽设置为0;1.这将隐藏行源中的第一个字段,它应该是外键
示例如下所示: 控制源:EmployeeID--
123456
行来源:EmployeeID,EmployeeName--
123456 | John Doe


将绑定列设置为
1
将记录值
1234556
。将绑定列设置为2将记录
123456,John Doe

Hi steve。谢谢你的回答。不幸的是,当我尝试时,错误没有出现,但是组合框保持空白,就像我没有选择任何东西一样。哦,它就像一列货运火车一样击中我!您已经将控制源作为主键字段。选择某个内容后,组合框将保持空白,因为应用程序认为您正在尝试更改自动生成的主键字段。这是不允许的,因此将其保留为空白。您需要回顾一下应用程序的设计,看看您应该更改的适当字段是什么。组合框通常很适合引用外键,这正是我想你在这里寻找的。嗨,史蒂夫。事实上,你是绝对正确的。这是一个新手设计错误:我的问题是我根本不想修改表,所以现在我只是在表单加载时发出一次请求,以获取值列表,我静态地将其设置为组合框列表的源。然后,当我更改组合框时,我使用另一个请求来隔离所选记录的主键值。问题解决了。谢谢。更准确地说,组合框的行源现在是请求“从TblSubsystem选择SysShortName”,而控制源是空的。它是这样工作的。