我是MS Access的新手,并且一直在开发基本的CRM系统。到目前为止,一切都进展顺利,但是我正在抨击我认为这是一个非常简单的问题......我可以理解VBS并且总体上可以解决Access问题,但绝不是任何一个领域的专家。
如何使未绑定的组合框根据表中的其他值自动将自身设置为某个值?
我有一个供用户编辑员工信息的表单,其中包括用于输入员工的部门和分部的组合框。大约有10个部门,每个部门有5个分支机构。
Branch组合框将BranchID保存到tblEmployee表,此表用作tblBranch表的键。 tblBranch表还有BranchName和DivisionID,DivisionID作为tblDivision表的键,它基本上只有Division ID和DivisionName。
现在,分组组合框是未绑定的,因为这仅仅是允许用户缩小分支组合框的范围。像这样级联菜单一旦你点击分区组合框就可以了,但是当我打开表格时,分区组合框显示空白(因此分支组合框也显示空白,因为它有一个标准参考分组组合框)。
如何让Division combobox查看BranchID对于特定员工的含义,然后使用相关部门预先设置?
我尝试通过设置绑定和事件来做到这一点,但我无法正常工作......(可能只是我的新手)。
谢谢!
谢谢!很高兴看到我一般都在正确的道路上。但是,它仍然不起作用,我认为这是因为我不了解YourEmployeeIDField。
我的代码如下:
Private Sub cboDivision_Enter()
Dim sql_ As String
sql_ = "SELECT d.Division " & _
"FROM tblDivision d INNER JOIN (tblBranch b INNER JOIN tblEmployee e ON b.BranchID = e.BranchID) ON d.DivisionID = b.DivisionID " & _
"WHERE e.EmployeeID=" & Me.txtEmployeeID
Me.cboDivision.RowSource = sql_
End Sub
我删除了组合框中的选择标准,以确保事情不会被意外过滤掉。
我尝试使用EmployeeID,e.EmployeeID,txtEmployeeID(表单上的字段)和Me.txtEmployeeID,没有太多运气。
在仔细研究了RowSource方法之后,我想知道我是否可能没有解释我到底想要什么? (或者我只是误解)组合框cboDivision中填充了tblDivision.Division,这是我想要的。但是,因为它是未绑定的,当在我的表单中加载记录时,cboDivision为空。我希望它显示与绑定的cboBranch组合框关联的分区(但是当你点击cboDivision时,它仍然有可供选择的完整分区列表)。
我使用的按钮代码如下(它是简化的SQL,但代码中会出现相同的结果):
Private Sub Command240_Click()
'Me.cboDivision.Value = 8
Dim sqlStr As String
sqlStr = "SELECT d.DivisionID" & _
"FROM tblDivision d INNER JOIN tblBranch b ON b.DivisionID = d.DivisionID)" & _
"WHERE b.BranchID=" & BranchID
Me.cboDivision.Value = sqlStr
MsgBox ("You clicked me.")
End Sub
注释掉了&#34; Me.cboDivision.Value = 8&#34;使cboDivision组合框显示与DivisionID 8相关的分区,这实际上是我想要的;但是,如果我单击当前代码的按钮,组合框将更新为:&#34; SELECT d.DivisionIDFROM tblDivision d INNER JOIN tblBranch b ON b.DivisionID = d.DivisionID)WHERE b.BranchID = 45&#34; < / p>
(最后的45是记录的正确BranchID,因此该部分至少正在工作)。
答案 0 :(得分:0)
您需要更改组合框的 RowSource 属性,以根据所选的EmployeeID填充正确的分部信息。
您可以在控件的 Enter 事件中执行此操作:
Private Sub YourComboBoxName_Enter()
Dim sql_ As String
sql_ = "SELECT d.DivisionName " & _
"FROM tblDivision d INNER JOIN (tblBranch b INNER JOIN tblEmployee e ON b.BranchID = e.BranchID) ON d.DivisionID = b.DivisionID " & _
"WHERE e.EmployeeID=" & YourEmployeeIDField
Me.YourComboBoxName.RowSource = sql_
End Sub
组合框控件的RowSourceType必须设置为Table/Query
。
答案 1 :(得分:0)
我弄清楚我想做什么......可能是我没有正确解释。我需要的代码如下:
Private Sub Form_Current()
Me.cboDivision.Value = DLookup("DivisionID", "tblBranch", "BranchID=" & BranchID)
Me.cboMinistry.Value = DLookup("MinistryID", "tblDivision", "DivisionID=" & Me.cboDivision)
End Sub
因此,当我更改当前记录时,它会根据BranchID的绑定值更新未绑定的组合框。
感谢您的帮助,响应者!