表单中的组合框有问题,每当我输入它来选择值时,它都会显示"#Name?"错误。
我正在MS Access中创建一个表单(特别是在Microsoft Office Professional Plus 2010中),它是一个通用用户界面,这意味着表单本身不会链接到任何类型的记录集。在该表单中,我创建了一个组合框,将其链接到"TblSubsystem"表。这张桌子非常简单,设计成这样:
- ID(主键,自动编号)
- SysShortName,文本
- SysFullName,文本
当我试图在下拉列表中选择一个值时,组合框的测试框只显示"#Name?"(实际上,我一选择组合框,甚至在选择任何值之前)
组合框的相关(我认为)参数为:
- 控制源="=[TblSubsytem]![ID]">
- 行源=TblSubsystem
- 行源类型=表/查询
- 绑定列=2
- 列计数=2
- 列宽=0cm;1厘米(我试图选择并显示短代码,但要将ID作为组合框的值)
我在同一项目中有另一个表单,其中相同的设置(也在TblSubsystem上)运行良好,这些参数的值相同,但该表单链接到记录集(另一个表)。据我所知,这是唯一的区别,所以我想我一定错过了一些东西,一旦我看到它,这似乎很明显…
我在stackoverflow和更广泛的网络上寻找了"Ms Access combobox#Name?Error"的变体,但两天来,我没有看到任何回复我问题的帖子。有些是接近的,但指的是一个更复杂的设置,而我认为我的应该是非常直接的。试图根据我的情况调整解决方案(包括重新创建组合框或反编译数据库)没有帮助。
这是一个很长的问题,对此感到抱歉,但希望足够精确,让你们中的一些人能够在这方面提供帮助。我事先感谢你对我的帮助。
#Name
是一个绑定问题。试着将绑定列设置为1,这样它只记录主键,看看是否有效。
编辑:您已经得到了引用表主键作为控制源的组合框。请记住,控件源是应用程序用户正在更改的值。以下是使用组合框时需要考虑的一些关键事项:
- 控制源应该(通常)引用表的外键
- 行源应引用您希望在框中显示的文本
- 绑定列应设置为1,除非应用程序设计要求同时更新两个字段,这是一种不常见的做法
- 将列宽设置为0;1.这将隐藏行源中的第一个字段,该字段应该是外键
示例如下:控制源:EmployeeID-123456
行来源:EmployeeID,EmployeeName--123456 | John Doe
设置为1
的绑定列将记录值1234556
。设置为2的绑定列将记录123456, John Doe