MS Access Combobox“#Name?”错误

时间:2017-01-17 11:05:59

标签: forms ms-access combobox

表单中的组合框有问题,显示“#Name?”每当我输入它以选择值时出错。

我正在MS Access中创建一个表单(特别是在Microsoft Office Professional Plus 2010中),它是一般用户界面,这意味着表单本身没有链接到任何类型的RecordSet。 在那种形式中,我创建了一个Combobox,它链接到“TblSubsystem”表。该表非常简单,设计如下:

  • ID(主键,自动编号)
  • SysShortName,text
  • SysFullName,text

当我尝试在下拉列表中选择一个值时,组合框的测试框只显示“#Name?” (实际上只要我选择组合框,甚至在我选择任何值之前)

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

  • Control Source =“= [TblSubsytem]![ID]”
  • 行来源= TblSubsystem
  • 行来源类型=表/查询
  • 绑定列= 2
  • 列数= 2
  • 列宽= 0厘米; 1厘米 (我正在尝试选择并显示短代码,但要将ID作为组合框的值)

我在同一个项目中有另一个表单,其中相同的设置(也在TblSubsystem上)工作得很好,这些参数的值相同,但是Form链接到RecordSet(另一个表)。据我所知,这是唯一的区别,所以我想我一定会遗漏一些东西,一旦看到它就会显而易见......

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

这是一个很长的问题,对此感到抱歉,但希望你们中的一些人能够提供足够的准确帮助。我提前感谢你提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

  • 控件源应该(通常)引用表的外键
  • 行来源应引用您希望在框中显示的文字
  • 绑定列应设置为1,除非您的应用程序设计要求您同时更新两个字段,这是一种不常见的做法。
  • 将列宽设置为0; 1。这将隐藏行源中的第一个字段,该字段应该是您的外键

示例如下所示: 控制来源:EmployeeID - 123456 行来源:EmployeeID,EmployeeName - 123456 | John Doe

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