我有一个组合框,显示两位数据,一个名称及其唯一的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)
答案 0 :(得分:2)
听起来您的组合框有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)
,依此类推。这有点令人困惑,因为“列计数”设置的属性页面是从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)