选择其他 data/values 以在查询或表单中显示为列

Selecting additional data/values to display as column in query or in form

我有一个员工索引,我需要 运行 查询每个员工,并将该输出与原始员工一起显示。

假设员工索引有 ID、批次、状态和多个其他列。我有一个 table 用于跟踪每次员工索引中的列发生变化。我想在原始员工行旁边显示并稍后导出某些列用于等于其他值的日期。

当然,我尝试创建一个表单来显示多个值,添加一个文本框来保存我的额外信息,并为 VBA 中的每个 Form_Current 事件更改文本框的值。

Private Sub Form_Current()
    Me.txtPhaseOne = SimpleLookup("SELECT TOP 1 ChangeDate FROM EmployeeVariables WHERE VariableName = ""Batch"" AND EmployeeID = " & Me.Recordset("ID Number") & " ORDER BY ChangeDate ASC", "ChangeDate")
End Sub

一开始似乎有效...

直到我意识到日期被设置为当前记录日期应该是什么 [

然后我尝试加入:

SELECT
  EmployeeIndex.[ID Number],
  EmployeeIndex.Batch,
  EmployeeIndex.Status,
  EmployeeIndex.[First name],
  EmployeeIndex.[Last name],
  EVA.ChangeDate as Phase1
FROM
  EmployeeIndex
  (SELECT TOP 1 ChangeDate FROM EmployeeVariables WHERE EmployeeID = EmployeeIndex.[ID Number] ORDER BY CHangeDate) EVA

如果我能知道如何预取 EmployeeIndex.[ID Number],这会起作用。 (我没有为这些专栏命名)除了我没有得到丝毫线索而且我运行正在冒烟。

SELECT
  EmployeeIndex.[ID Number],
  EmployeeIndex.Batch,
  EmployeeIndex.Status,
  EmployeeIndex.[First name],
  EmployeeIndex.[Last name],
  EVA.ChangeDate as Phase1
FROM
  EmployeeIndex
INNER JOIN
  (SELECT TOP 1 EmployeeID, ChangeDate FROM EmployeeVariables WHERE ORDER BY ChangeDate) EVA
    ON EmployeeIndex.[ID Number] = EVA.EmployeeID

Cross Apply 非常适合您的 TOP 1 案例,因为它会 运行 每个 employeeID 而不是仅加入 1

尝试使用子查询:

SELECT
    EmployeeIndex.[ID Number],
    EmployeeIndex.Batch,
    EmployeeIndex.Status,
    EmployeeIndex.[First name],
    EmployeeIndex.[Last name],
        (SELECT Max(EVA.ChangeDate)
        FROM EmployeeVariables AS EVA
        WHERE EVA.EmployeeID = EmployeeIndex.[ID Number]) AS Phase1
FROM
    EmployeeIndex