Datareport打印动态报表的问题续
哈哈,打印字段数动态变化的报表已经取得进展,继续问家人大哥及其他朋友一点问题。
1.代码中我照猫画虎似的添加section2部分的表头标签label,但未成功,如何改进?
2.如何将section1部分的textbox定位到该部分的居中位置?因为bt要求如果只有一个或很少几个字段必须居中。(这个我觉得挺难的)。
3.由于section1部分的某字段比较长,所以我设置其width长一些,但是这样必然造成其后的小竖线(line)位置不定。如何画竖线并给竖线定位?
如果可能,欢迎在代码上标注并修改一下。
Private Sub DataReport_Initialize()
Dim dTextCol As New Collection '声明一个控件集合
Dim Ctl As Object
'根据情况,预先在报表上添加多个相关控件
'下面以RptTextBox控件为例
'先将所有TextBox(RptTextBox) 控件绑定到随便某一字段
For Each Ctl In Rpt7.Sections.Item("Section1").Controls
If TypeName(Ctl) = "RptTextBox" Then
Ctl.DataField = rs.Fields.Item(0).Name
dTextCol.Add Ctl
Ctl.Visible = False
End If
Next
'设定特定字段长度
For i = 0 To rs.Fields.Count - 1
If (rs.Fields.Item(i).Name = "油品标号") Then
dTextCol.Item(i + 1).Width = 1200
End If
If (rs.Fields.Item(i).Name = "购油单位") Then
dTextCol.Item(i + 1).Width = 1500
End If
Next i
'循环记录集,重新绑定字段
For i = 0 To rs.Fields.Count - 1
With dTextCol.Item(i + 1)
.Visible = True
.DataField = rs.Fields.Item(i).Name
.Left = mLeft
mLeft = .Left + .Width
'控件定位。还有Width等等比较复杂,要根据具体情况写代码判断
End With
Next i
Rpt7.Sections.Item("Section1").Height = 400
'__________以下照猫画虎把sections2部分的页标头里面的label标签加上,但没有成功。
For Each Ctl In Rpt7.Sections.Item("Section2").Controls
If TypeName(Ctl) = "RptLabel" Then
Ctl.Caption = rs.Fields.Item(0).Name
'MsgBox (Ctl.Caption)
dTextCol.Add Ctl
Ctl.Visible = False
End If
Next
For i = 0 To rs.Fields.Count - 1
With dTextCol.Item(i + 1)
.Visible = True
.Caption = rs.Fields.Item(i).Name '_________就是这里开始出错,所以画虎失败
.Left = mLeft
mLeft = .Left + .Width
'控件定位。还有Width等等比较复杂,要根据具体情况写代码判断
End With
Next i
Rpt7.Orientation = rptOrientLandscape '横向打印
End Sub