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

0d036c7b3e59d7b5a28ee71472026695.png

报表数据源是交叉表,列标题无法确定而导致报表字段不可控的解决方案。

一、问题描述:

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

二、解决方案:

先生成一个报表模板,对于无法确定的字段标题预定义一个,在报表中对字段不绑定,通过报表的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值