【问题标题】:Feeding function arguments into crosstab query将函数参数输入交叉表查询
【发布时间】:2016-03-23 01:41:18
【问题描述】:

我有一个子表单,我正在尝试根据多个复选框选择进行更改。对于每个复选框,我编写了一个更新后事件,该事件根据选中了哪些框/选择了多少个框来调用公共函数。函数的第一部分如下,其中Home为主窗体,“ALLProgressTracking”为子窗体:

Public Function ProgressDisplay(argNoFields As Integer, Optional argField1 As String, Optional argField2 As String, Optional argField3 As String)

Dim strSQL As String

If argNoFields = 1 Then
strSQL = "TRANSFORM Sum([StatusTracking Query].CountofProjectID) AS CountOfProjects " & _
            "SELECT [StatusTracking Query]." & argField1 & " " & _
            "FROM [StatusTracking Query] " & _
            "GROUP BY [StatusTracking Query]." & argField1 & " " & _
            "PIVOT [StatusTracking Query].ValueDate;"

Forms!Home![ALLProgressTracking].SourceObject = "Form.IndProgressTracking"
Forms!Home![ALLProgressTracking].Form.RecordSource = strSQL

问题是我已经构建了表单,其中三个可能的字段之一绑定为行标题之一(它是交叉表表单/查询),因此当我尝试使用上面的代码更改 SQL 时备用字段我得到#Name 而不是正确的行标题。 我猜这是一个更改 SQL 语句以引用我作为源对象调用的子表单的函数的问题,但我不知道如何完成此操作。

例如,对于 IndProgressTracking 表单,我对该表单有以下 SQL:

TRANSFORM Sum([StatusTracking Query].CountOfProjectID) AS SumOfCountOfProjectID
SELECT [StatusTracking Query].Category
FROM [StatusTracking Query]
GROUP BY [StatusTracking Query].Category
PIVOT [StatusTracking Query].ValueDate;

当我将“状态”输入函数时,表单将加载正确的项目计数数字,但 #Name 作为所有行标题。

希望这一切都有意义,并且有人能够提供帮助!

【问题讨论】:

  • 真的需要交叉表查询吗?
  • 是的,我需要查询/表单来显示一年左右每个月每个状态/类别/阶段的项目数,因此我认为交叉表是最好的选择.
  • 也许看看您是否可以使用带有计数和组总数的SELECT 查询获得相同的查询结果。我没有太多使用交叉表,但我猜你的问题是由于使用交叉表查询作为表单的记录源然后尝试更新它。

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


【解决方案1】:

您可以将字段名称别名为静态:

TRANSFORM Sum([StatusTracking Query].CountOfProjectID) AS SumOfCountOfProjectID
SELECT [StatusTracking Query].Category As ArgField1
FROM [StatusTracking Query]
GROUP BY [StatusTracking Query].Category
PIVOT [StatusTracking Query].ValueDate;

【讨论】:

    【解决方案2】:

    我能够通过在函数末尾添加这一行来解决问题,在记录源行之后:

    Forms!Home![ALLProgressTracking].Form.[TrackingMetric].ControlSource = argField1
    

    [TrackingMetric] 是先前显示 #Name? 的绑定文本框的名称。

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2021-07-23
      相关资源
      最近更新 更多