Access專家課堂周年慶
網站公告
·Access快速平臺QQ群號:277422564    ·Access快速開發平臺下載地址及教程    ·歡迎添加微信交流賬號:AccessoftChu    ·如何快速搜索本站文章|示例|資料    
您的位置: 首頁 > 技術文章 > 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交流群 (群號:198347485)       access源碼網店

最新評論 查看更多評論(32)

發表評論您的評論將提升作者分享的動力!快來評論一下吧!

用戶名:
密 碼:
內 容:
 

常見問答

技術分類

相關資源

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助