Forms MS访问组合框“#姓名;错误
我对表单中的组合框有一个问题,每当我输入它以选择值时,它都会显示一个“#Name?”错误 我正在MS Access(特别是Microsoft Office Professional Plus 2010)中创建一个通用用户界面表单,这意味着表单本身不链接到任何类型的记录集。 在这种形式下,我创建了一个组合框,并将其链接到一个“TblSubsystem”表。桌子非常简单,设计如下:Forms MS访问组合框“#姓名;错误,forms,ms-access,combobox,Forms,Ms Access,Combobox,我对表单中的组合框有一个问题,每当我输入它以选择值时,它都会显示一个“#Name?”错误 我正在MS Access(特别是Microsoft Office Professional Plus 2010)中创建一个通用用户界面表单,这意味着表单本身不链接到任何类型的记录集。 在这种形式下,我创建了一个组合框,并将其链接到一个“TblSubsystem”表。桌子非常简单,设计如下: ID(主键、自动编号) SysShortName,文本 系统全名,文本 当我尝试在下拉列表中选择一个值时,组合框的
- ID(主键、自动编号)
- SysShortName,文本
- 系统全名,文本
- 控制源=“=[TBLSubystem]![ID]”
- 行源=TblSubsystem
- 行源类型=表/查询
- 绑定列=2
- 列计数=2
- 列宽=0cm;1厘米 (我试图选择并显示短代码,但要将ID作为组合框的值)
#姓名
是一个有约束力的问题。尝试将绑定列设置为1,这样它只记录主键,看看是否有效
编辑:您的组合框引用了表的主键作为控制源。请记住,控制源是应用程序用户正在更改的值。以下是使用组合框时需要考虑的一些关键事项:
- 控制源应该(通常)引用表的外键
- 行源应引用要在框中显示的文本
- 绑定列应设置为1,除非应用程序设计要求同时更新两个字段,这是一种不常见的做法
- 将列宽设置为0;1.这将隐藏行源中的第一个字段,它应该是外键
123456
行来源:EmployeeID,EmployeeName--123456 | John Doe
将绑定列设置为
1
将记录值1234556
。将绑定列设置为2将记录123456,John Doe
Hi steve。谢谢你的回答。不幸的是,当我尝试时,错误没有出现,但是组合框保持空白,就像我没有选择任何东西一样。哦,它就像一列货运火车一样击中我!您已经将控制源作为主键字段。选择某个内容后,组合框将保持空白,因为应用程序认为您正在尝试更改自动生成的主键字段。这是不允许的,因此将其保留为空白。您需要回顾一下应用程序的设计,看看您应该更改的适当字段是什么。组合框通常很适合引用外键,这正是我想你在这里寻找的。嗨,史蒂夫。事实上,你是绝对正确的。这是一个新手设计错误:我的问题是我根本不想修改表,所以现在我只是在表单加载时发出一次请求,以获取值列表,我静态地将其设置为组合框列表的源。然后,当我更改组合框时,我使用另一个请求来隔离所选记录的主键值。问题解决了。谢谢。更准确地说,组合框的行源现在是请求“从TblSubsystem选择SysShortName”,而控制源是空的。它是这样工作的。