窗体组合框显示错误信息

时间:2019-02-15 17:37:54

标签: sql ms-access access-vba ms-access-2010

我有一个未绑定的组合框,允许用户选择员工名称(请求者)。选择该雇员后,它将更新下一个框,以显示该特定雇员的经理的姓名(所有者)。

我将ManagerID作为查找查询中的绑定列,并且选择该雇员时,该雇员的姓名应该显示在表单中。而是,在用户选择员工之后,该框将显示分配给该经理的第一位员工的姓名。例如,我单击组合框,然后看到一个雇员列表(该部分正确显示)。我选择了Sally Sue。当我选择Sally Sue时,框中的文本将显示Bob Bath,这是Sally经理在数据库中列出的第一位员工。

这是最大的问题...当我检查此表格更新的表时,Sally Sue在正确的位置。我所有的数据都放在正确的位置。唯一错误的是,在用户选择雇员之后,雇员在表单上显示了错误。它不会影响我的数据的准确性,只是令人讨厌。

我的绑定列为1,但是我尝试将其移动到2并将列宽设置为0,并将我的员工姓名移动到查询的第一位。

以下是为我的查询显示的SQL代码:

SELECT tbl_Owner.Owner_ID, 
    tbl_Requester.RequesterName, 
    tbl_Owner.ownerName 
    AS RequestOwner
FROM tbl_Owner INNER JOIN tbl_Requester ON 
    tbl_Owner.Owner_ID = 
    tbl_Requester.RequestOwner
ORDER BY tbl_Requester.RequesterName;

选择雇员姓名后,该表格应显示所选雇员的姓名。而是显示经理的第一个分配的员工姓名。

1 个答案:

答案 0 :(得分:0)

假设表结构如下:

enter image description here

所以我假设每个员工只能有一个经理。创建一个表以employees表作为记录源(因为您想显示雇员的详细信息。)
将两个组合框添加到窗体标题(cboEmployees,cboManagers)。对于每个组合框,将控制源留为空白。 cboEmployee绑定列= EmployeeId,cboManagers绑定列= ManagerID。

cboEmployees.recordsource = SELECT Employees.EmployeeID, Employees.EmployeeName, Employees.ManagerFK
FROM Employees;
cboManagers.recordsource = SELECT Managers.ManagerID, Managers.ManagerName
FROM Managers;

隐藏不想看到的组合框列,然后将cboEmployees afterupdate事件设置为:

Private Sub cmbEmployee_AfterUpdate()
cmbManager.Value = cmbEmployee.Column(2) 'set cmbManager to employees manager
Me.Filter = "EmployeeID = " & cmbEmployee.Value 'filter form to just the employees data
Me.FilterOn = True
End Sub

现在,当您在左上方的组合框中更改员工姓名时,右上方的组合框中将显示经理姓名。该表格的详细信息中仅包含员工姓名,但也会发生变化。

之前:

enter image description here

之后:

enter image description here