仅显示 Access 2010 数据透视表中选定行的详细值

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

我有一个数据库,我需要使用一个数据透视表(我已经创建了)。我试图做到这一点,以便当双击其中一行中的单元格时(我已经知道如何获取数据透视表中的哪个对象被双击,所以这不是问题),将显示详细信息。

因此,当我双击行对象时,我已经能够显示所有详细信息行,问题是它显示了所有详细信息行,而不仅仅是我需要的行。我只需要一行的原因是由于未来的数据量很大(即数百行)。

我尝试使用手表来跟踪详细信息字段,但这让我陷入循环。

我当前的访问表单代码如下:


Option Compare Database

Private Sub Form_Load()
    Me.PivotTable.activedata.hidedetails
End Sub
Private Sub Form_DblClick(Cancel As Integer)
    Dim PTO As Object
    Set PTO = Me.PivotTable
    Set PTO = PTO.ActiveObject

    If (LCase(TypeName(PTO)) <> "nothing") Then
    On Error GoTo endr: ' ignores errors
        Select Case UCase(PTO.Field.Basename)
            Case UCase("Category 1")
                MsgBox Me.PivotTable.ActiveObject.Value, vbOKOnly ' a test to prove double clicking works on category 1
            Case UCase("Category 2")
'            Me.PivotTable.activeobject.expanded = Not Me.PivotTable.activeobject
            
'                Me.PivotTable.activedata
'                PTO.Data.showdetails
'                PTO.axis.Data.DetailLeft =
'                Me.PivotTable.Selection.showdetails
'                PTO.axis.Data.currentcell.Data.showdetails
'                Me.PivotTable.selection.activedata.showdetails
            
                Me.Requery
                MsgBox Me.PivotTable.ActiveObject.Value, vbOKOnly ' a test to prove double clicking works on category 2
'                Me.PivotTable.activeObject.Field.DataField
'                Me.Detail.Visible = Not Me.Detail.Visible
            Case Else
        End Select
    End If

endr:
    Set PTO = Nothing

End Sub

表定义:

田野 类型
独特的钥匙 文字
类别1 文字
类别 2 文字
价值观1 数量
价值观2 数量

示例数据定义:

独特的钥匙 类别1 类别 2 价值观1 价值观2
测试1-1-1 c1 sc01 123 156
测试1-1-2 c1 sc01 156 3857
测试1-2-1 c1 sc02 6576 37357
测试1-2-3 c1 sc03 674698 9876
测试2-0-1 c2 sc10 6476 3753
测试2-1-1 c2 sc11 687 3738

数据透视表布局:

Pivot Table Layout

真实数据有更多具有不同值的列,有限值是作为示例的最低值的结果。

我没有使用具有多个分组部分的连续形式的主要原因是因为它不会折叠,并且会很大。最终,唯一能符合我的标准的是:

  • 按 2 个字段分组
  • 对行中的数据进行总计和汇总。
  • 按分组字段行折叠。

编辑:抱歉用词不好,但我真的想不出更好的方式来表达我的要求。

编辑 2:我知道较新的版本不支持数据透视表。不幸的是,access 2010 并不是我真正可以选择使用的东西。

编辑 3:更新了代码,并提供了带有示例数据的访问屏幕截图。

编辑 4:更新格式以包含表定义和示例数据作为降价表。

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

我必须使用 RunCommand 来取消隐藏。

Me.Filter = "Category2='" & Me.PivotTable.ActiveObject.Value & "'"
Me.FilterOn = True
DoCmd.RunCommand acCmdPivotTableShowDetails

枢轴表单可以是子表单,然后主表单上的按钮可以折叠和取消筛选枢轴表单。

Private Sub Command1_Click()
Me.Form1.Form.PivotTable.activedata.hidedetails
Me.Form1.Form.FilterOn = False
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.