【问题标题】:Selecting additional data/values to display as column in query or in form选择要在查询或表单中显示为列的附加数据/值
【发布时间】:2021-01-14 16:14:57
【问题描述】:

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

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

当然,我尝试创建一个显示多个值的表单,添加一个文本框来保存我的额外信息,并为 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

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 那将是最简单的解决方案,我曾经尝试过。我想知道为什么它不起作用。我收到一条消息“此子查询最多只能返回一条记录”。 i.stack.imgur.com/V5Lxz.png
    • 那是因为 ChangeDate 不是唯一的。请查看使用 MAX 编辑的答案。
    【解决方案2】:

    Cross Apply 非常适合您的 TOP 1 案例,因为它将针对每个员工 ID 运行,而不仅仅是加入 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 2014-08-27
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多