表单组合框显示错误的信息

问题描述 投票:0回答:1

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

我将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;

选择员工姓名后,表单应显示所选员工的姓名。相反,它显示了经理的第一个分配的员工姓名。

sql ms-access access-vba ms-access-2010
1个回答
0
投票

假设一个表结构,如:

enter image description here

所以我假设每个员工只能有一名经理。使用employees表作为记录源创建表单(因为您希望显示员工详细信息。) 将两个组合框添加到表单头(cboEmployees,cboManagers)。对于每个组合框,将控制源留空。 cboEmployee bound column = EmployeeId,cboManagers bound column = 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

© www.soinside.com 2019 - 2024. All rights reserved.