2015-08-14 177 views
0

我有几个组合框(CB)从我的访问数据库填充。它们都从同一张桌子上拉出来,并使用表格中相同的隐藏主键。当我从其中一个CB中选择一个值时,我希望其他人根据匹配的主键更新相关值。通过查询更新基于另一个组合框的组合框

这可能吗?

我一直在努力,现在使用下面的变化了一段时间,但没有成功:

Dim strSQL As String 
strSQL = "SELECT gsr_id FROM task WHERE task_wid = " & Me.cboTask.Column(0) 
Me.cboGSRTask.Section = CurrentDb.OpenRecordset(strSQL) 

Debug.Print "SELECT gsr_id FROM task WHERE task_wid = " & Me.cboTask.Column(0) 

谢谢。

+0

是的,对不起。我得到以下错误:类型不匹配 我试图用str,int,variant转换数据类型,但没有任何成功。 – user3661576

+0

是的,它是一个组合框。我想更新所有组合框,只要其中一个更改。它们更新的值应该来自数据库上的相同记录(使用主键)。我可能会错误地解决这个问题,但这正是我希望能够完成的。 – user3661576

+0

这只是我试过的最后一个。在此之前,我看了其他几个人,但没有得到正确的工作。 – user3661576

回答

1

如果您打开一个记录集,则需要从中读取一个值,但不能将该记录集用作值。 我猜你正在寻找的是:

Dim strSQL As String 
Dim RS As Recordset 

strSQL = "SELECT gsr_id FROM task WHERE task_wid = " & Me.cboTask.Column(0) 
Set RS = CurrentDb.OpenRecordset(strSQL) 

' This assumes that gsr_id is the bound column of cboGSRTask 
Me.cboGSRTask = RS!gsr_id 
RS.Close 

或替代上述所有的,使用使用DLookup():

Me.cboGSRTask = DLookup("gsr_id", "task", "task_wid = " & Me.cboTask.Column(0)) 

或添加gsr_id到的行来源可能是更容易cboTask(作为宽度= 0的列)并使用该列分配给cboGSRTask。

+0

我玩过一些你提供的解决方案,并且觉得DLookup对我的需求最有用。真的很感谢你的回答,谢谢! – user3661576

相关问题