动态创建查询解决交叉表字段不确定的问题-罗勇胜
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-报表


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

发表时间:2019/6/30 10:38:34 评论(32) 浏览(6579)  评论 | 加入收藏 | 复制
   
摘 要:报表数据源是交叉表,列标题无法确定而导致报表字段不可控的解决方案。
正 文:

一、问题描述:

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


二、解决方案:

    先生成一个报表模板,对于无法确定的字段标题预定义一个,在报表中对字段不绑定,通过报表的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群(群号:198465573)
 
 相关文章
交叉表查询实现生成的表中null变0  【蒋元根  2013/3/7】
多个交叉表做子窗体示例(动态图表)  【林岚  2013/7/3】
【Access示例】利用交叉表实现行列的转换,使列变成yyyymm...  【缪炜  2013/7/5】
【Access交叉表查询】交叉表查询让空值转换成0显示的示例  【麥田  2014/7/26】
交叉表查询作动态报表  【半夜罗  2015/5/14】
常见问答
技术分类
相关资源
文章搜索
关于作者

罗勇胜

文章分类

文章存档

友情链接