组合框值自动更新

时间:2010-03-30 18:03:12

标签: ms-access ms-access-2007

希望有人可以提供帮助

表结构如下:

tblCompany:   
compID
compName

tblOffice:  
offID,
compID,   
add1, add2, add3 etc...

tblEmployee:   
empID
Name, telNo, etc...   
offID

我有一个包含员工联系方式的表单,所有工作都可以在更新后使用。 级联组合框cmbComp允许我选择公司,并选择适当的办公室cboOff,并正确更新相应的tblEmployee.offID字段。字段也会自动更新为地址

cmbComp:RowSource

SELECT DISTINCT tblOffice.compID, tblCompany.compID 
FROM tblCompany 
INNER JOIN AdjusterCompanyOffice 
ON tblCompany.compID=tblOffice.compID 
ORDER BY tblCompany.compName; 

cboOff:RowSource

SELECT tblCompany.offID, tblCompany.Address1, 
tblCompany.Address2, tblCompany.Address3, tblCompany.Address4, 
tblCompany.Address5 
FROM tblCompany 
ORDER BY tblCompany.Address1; 

我遇到的问题是,当我加载新记录时如何检索数据并自动加载cmbComp和文本字段。

cboOff组合框正确加载,因为此控制源是offID

我想必须有一种方法来设置打开记录的价值?不知道怎么样。我不认为我可以设置controlsource cmbComp或文本字段,或者我可以吗?

正确方向的任何帮助/观点,一直在寻找一种方法,但无法到达任何地方!

-edit

我尝试添加以下内容来控制文本字段

=[Forms]![frmAdjPersonalDetails]![cboAdjOff].[Column](2)

这适用于获取值但导致错误,后更新用于创建级联组合框并更新文本字段。

Private Sub cmbComp_AfterUpdate()
Me.cboOff.RowSource = "SELECT ID, Address1, Address2, Address3, Address4, Address5        FROM" & _
 " tblOffice WHERE CompID = " & Me.cmbComp & _
" ORDER BY Address1"
 Me.cboAdjOff = Me.cboAdjOff.ItemData(0)
Me.txtAdd2 = Me.cboOff.Column(2)
Me.txtAdd3 = Me.cboOff.Column(3)
Me.txtAdd4 = Me.cboOff.Column(4)
Me.txtAdd5 = Me.cboOff.Column(5)
End Sub

不确定是做什么的?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在寻找“Requery”声明。 这将“刷新”组合框或表单中的数据。 你可以放一个

 Me.Requery 

在相关的事件处理程序中。如果我没记错的话,可能是“AfterUpdate”。

答案 1 :(得分:0)

组合框中的行源=

“SELECT DISTINCT table.field FROM table;”

找到表格中的所有唯一值,然后对它们进行修改,然后将它们放入长下拉菜单中。