从组合框引用返回多个值

Returning multiple values from a combo box reference

我有一个组合框,它显示两位数据、一个名称和它的唯一 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 列,如下所示:

列数设置为 2:

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

当你使用.Value时,它只会获取绑定列的值。要获取不同列的值,可以使用 .ItemData(colNum),像这样:

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

这些列是从零开始的,因此要检索第一列,您使用 ItemData(0),第二列使用 ItemData(1),依此类推。这有点令人困惑,因为 "Column Count" 设置的 属性 页面是基于 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

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

Application.DoCmd.RunSQL (st_Sql)