【高分】求分页方法

dangsz 2006-08-15 05:06:23
求分页方法,因为代码较长,所以就只写重要部分.
如果用FOR循环出来的页面文字,我可以来正确分页,但这里是读取数据库的.
用While Rs.Read来循环出来的页面文字,我不会分页了.

private Pages as inter = 1
Private Sub PrintPage_DD(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs)
**************省略读取数据库代码****************
Dim CH = 20 '行高
While Rs.Read
e.Graphics.DrawString("*******, BFont, Brushes.Black, 50, CH)
e.Graphics.DrawString("*******, BFont, Brushes.Black, 100, CH)
'************省略读取子数据库代码*************
CH=CH+20
While ARs.Read
e.Graphics.DrawString("*******, BFont, Brushes.Black, 50, CH)
e.Graphics.DrawString("*******, BFont, Brushes.Black, 100, CH)
'************************************************************** End While
CH=CH+50

'请问此入的分页代码应该怎么写 ,这是这样写的,但是不对
If CH> e.MarginBounds.Bottom Then
e.HasMorePages = True
CH = CT
Pages = Pages + 1
Rs.Read()
'End While
Exit Sub
Else
e.HasMorePages = False
End If
'请问此入的分页代码应该怎么写 ,这是这样写的,但是不对

End While
end sub
...全文
251 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sz_lgp 2006-08-19
  • 打赏
  • 举报
回复
If CH> e.MarginBounds.Bottom Then
e.HasMorePages = True
CH = CT
Pages = Pages + 1
Rs.Read()
'End While
Exit Sub
Else
e.HasMorePages = False
End If


中e.HasMorePages = True会使程序重新调用过程本身,因此e.HasMorePages = True之前要初始有关的变量和RS.读取位置。
dangsz 2006-08-18
  • 打赏
  • 举报
回复
dangsz 2006-08-17
  • 打赏
  • 举报
回复
再问个问题.
我现在是用PrintDocument来设置要打印的页面.用PrintPreviewDialog进行打印预览.

现在预览和打印报表都没有问题.

不过我想做个报表 导出 的功能.导出成图片格式(图片格式暂先不计,只要能导出一种,就可以举一翻三).

请问我应该怎么做?给个思路也好

(我现在是下载了一个虚拟打印软件,可以通过这个打印软件来导出图片,完全可以实现我要的功能,不过我还是不想用第三方工具).
iland9876543210 2006-08-16
  • 打赏
  • 举报
回复
帮你顶
长江支流 2006-08-16
  • 打赏
  • 举报
回复
楼主提问可能有歧义

标题“求分页方法”

不进来贴子以为是数据库 显示分页方法,进来才知道是要打印分页
长江支流 2006-08-16
  • 打赏
  • 举报
回复
自己找到方法不好吗?这是最爽的事情

------------------
唉,郁闷,每次问题一提出就自己找到解决方法了.
dangsz 2006-08-15
  • 打赏
  • 举报
回复
唉,郁闷,每次问题一提出就自己找到解决方法了.

我自己找到的解决方法是:

If Pages > 1 Then
Dim TempCount As Integer
For TempCount = 1 To Count - 1
Rs.Read()
Next
End If

While Rs.Read
Count = Count + 1
If CH + 60 > e.MarginBounds.Bottom Then
e.HasMorePages = True
Pages = Pages + 1
Exit Sub
Else
e.HasMorePages = False
End If
**********************
end while
netboygg 2006-08-15
  • 打赏
  • 举报
回复
学习...
  • 打赏
  • 举报
回复
还有叫分页存储过程的东东
Radar2006 2006-08-15
  • 打赏
  • 举报
回复
up
Knight94 2006-08-15
  • 打赏
  • 举报
回复
如果数据不是很多的话,用DataSet来操作的话就比较方便了。
Knight94 2006-08-15
  • 打赏
  • 举报
回复
用DataReader来说,进行操作不是很方便,因为不能显示的知道写了多少条记录,但是要做的话,思路如下。

Dim i As Integer
Dim RecordCount As Integer
RecordCount = 30 'Print 30 records every page

For i := 1 To RecordCount
If Rs.Read() Then
Begin
'Draw record here at position using "i" to compute
End
Else
Exit For 'Goto end of records
End If
Next i

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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