Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-报表

动态创建查询解决交叉表字段不确定的问题

时 间:2019-06-30 10:38:34
作 者:罗勇胜   ID:71482  城市:佛山
摘 要:报表数据源是交叉表,列标题无法确定而导致报表字段不可控的解决方案。
正 文:

一、问题描述:

      当报表的数据来源是一个交叉表时,由于字段名无法确定,就无法直接生成报表。


二、解决方案:

    先生成一个报表模板,对于无法确定的字段标题预定义一个,在报表中对字段不绑定,通过报表的open事件来解决字段绑定。

   下面是解决一个报表,最后两列最近的两个月份:

Private Sub Report_Open(cancel As Integer)
    
    Dim db As DAO.Database
    Dim q As QueryDef
           
    Set db = CurrentDb
    Set q = db.QueryDefs(Me.RecordSource)
   
    Dim i As Integer
    Dim thisMonth, preMonth As String
    Dim iStatus As Integer
        
    thisMonth = get本月年月字串()
    preMonth = get上月年月字串()
    
    iStatus = 0
    For i = q.Fields.Count - 1 To 0 Step -1
        If q.Fields(i).Name = thisMonth Then
            本月.ControlSource = thisMonth
            iStatus = iStatus + 1
            lb本月充气量.Caption = thisMonth & vbCrLf & "充气量"
        Else
            If q.Fields(i).Name = preMonth Then
                上月.ControlSource = preMonth
                iStatus = iStatus + 1
                lb上月充气量.Caption = preMonth & vbCrLf & "充气量"
            End If
        End If
        
        If iStatus >= 2 Then
           Exit For
        End If
    Next i
    Set q = Nothing   
End Sub

Public Function get本月年月字串()
    get本月年月字串 = get日期年月字串(Date)
End Function


Public Function get上月年月字串()
    get上月年月字串 = get日期年月字串(GetPreMonthFirstDay())
End Function


Public Function get日期年月字串(d As Date)
    get日期年月字串 = CStr(Year(d) * 100 + Month(d))
End Function


Public Function GetPreMonthFirstDay()
    GetPreMonthFirstDay = DateSerial(Year(Date), Month(Date) - 1, 1)
End Function


Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助