ActiveReports怎样设限定每页固定多少行?

qing7911 2005-06-06 11:10:56
我用ActiveReports打印一张表,
想要设定为20行(刚好打满一张纸),,但有时数据不够20行,如只有10行,打印出来的报表就只有一张纸的一半,现在我想将剩余的空白行10行,也能显示并打出来,要怎样做?
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2005-06-06
  • 打赏
  • 举报
回复
我是这样做的:

在ActiveReport的Detail上的text控件下加一line(用来显示空白的行)

Form上的代码:

Private Sub Command1_Click()
ActiveReport1.Show
End Sub

Private Sub Form_Load()
Dim i, j
With MSHFlexGrid1
.Rows = 11
.Cols = 6
For i = 1 To 10
For j = 1 To 5
.TextMatrix(i, j) = i + j
Next j
.TextMatrix(i, 0) = i
Next i
.TextMatrix(0, 1) = "a"
.TextMatrix(0, 2) = "b"
.TextMatrix(0, 3) = "c"
.TextMatrix(0, 4) = "d"
.TextMatrix(0, 5) = "e"
End With
End Sub


ActiveReport上的代码:

Private Sub ActiveReport_DataInitialize()
Me.Fields.Add "a"
Me.Fields.Add "b"
Me.Fields.Add "c"
Me.Fields.Add "d"
Me.Fields.Add "e"
End Sub

Private Sub ActiveReport_FetchData(eof As Boolean) '这儿就是你问题的解决方法
Static i, j As Integer
If frmMain.MSHFlexGrid1.TextMatrix(1, 1) <> "" Then
i = i + 1
If i > 20 Then
eof = True
Exit Sub
Else
eof = False
End If
j = i
If j <= frmMain.MSHFlexGrid1.Rows - 1 Then
Fields("a").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 1)
Fields("b").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 2)
Fields("c").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 3)
Fields("d").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 4)
Fields("e").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 5)
Else
Field1.Visible = False
Field2.Visible = False
Field3.Visible = False
Field4.Visible = False
Field5.Visible = False
End If
End If
End Sub
CatchWind 2005-06-06
  • 打赏
  • 举报
回复
是LXQ吧? 用存儲過程啊,先插入臨時表20條空記錄(內容可為空白字串,不可見就行),當有實際數據時,覆蓋空白記錄,如果不足20條, 空的記錄也可以占位.
qing7911 2005-06-06
  • 打赏
  • 举报
回复
晕,怎么没有人说话呀。
大家做单据的时候是怎么解决这个问题的呀?

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧