从组合框引用中返回多个值

时间:2015-04-29 08:28:50

标签: access-vba ms-access-2010

我有一个组合框,显示两位数据,一个名称及其唯一的ID号。我已经设置好了,所以当用户在选择记录之前点击它时会显示两列。我试图在组合框中获取值以用于更新查询。下面的字符串工作正常,以获取名称(文本)并进行更新,但我无法有效地做的是获取唯一的ID号。我试过把'.value放在前面,因为id没有帮助。

这可以很好地更新控件的文本值' cboTeams':

st_Sql = "UPDATE tblStaticDataDepartments01 SET tblStaticDataDepartments01.MacroProcesso = [Forms]![frmStaticDataDepartments01]![cboTeams] WHERE (((tblStaticDataDepartments01.MacroProcesso)is null))"

Application.DoCmd.RunSQL(st_Sql)

尝试检索数值时,这不起作用:

st_Sql = "UPDATE tblStaticDataDepartments01 SET tblStaticDataDepartments01.IDMacroProcesso = [Forms]![frmStaticDataDepartments01]![cboTeams].[Value] WHERE (((tblStaticDataDepartments01.MacroProcesso)is null))"

Application.DoCmd.RunSQL(st_Sql)

2 个答案:

答案 0 :(得分:2)

听起来您的组合框有2列,如下所示: enter image description here

列数设置为2:

enter image description here

并将绑定列设置为第二列(或任何列具有文本值):

enter image description here

使用.Value时,它只会获取绑定列的值。要获取其他列的值,您可以使用.ItemData(colNum),如下所示:

st_Sql = "UPDATE tblStaticDataDepartments01 SET tblStaticDataDepartments01.IDMacroProcesso = " & Forms("frmStaticDataDepartments01").cboTeams.ItemData(0) & " WHERE (((tblStaticDataDepartments01.MacroProcesso) is null))"

列是从零开始的,因此要检索您使用的第一列ItemData(0),第二列使用ItemData(1),依此类推。这有点令人困惑,因为“列计数”设置的属性页面是从1开始的。

Microsoft的示例使得看起来您可以使用类似这样的表达式语法来使用ItemData函数,但这在我的Access 2003副本中对我不起作用。但是,我给你的代码应该可以正常工作。

st_Sql = "UPDATE tblStaticDataDepartments01 SET tblStaticDataDepartments01.IDMacroProcesso = [Forms]![frmStaticDataDepartments01]![cboTeams].[ItemData](0) WHERE (((tblStaticDataDepartments01.MacroProcesso) is null))"

如果您有需要,可以使用Column函数检索任何列和行(而不仅仅是所选行)的值。见https://msdn.microsoft.com/en-us/library/office/ff192660.aspx

答案 1 :(得分:0)

st_Sql = "UPDATE tblStaticDataDepartments01 SET tblStaticDataDepartments01.IDMacroProcesso = '" & Form_frmStaticDataDepartments01.cboTeams.Column(1) & "' WHERE (((tblStaticDataDepartments01.MacroProcesso) is null))"

Application.DoCmd.RunSQL(st_Sql)