我要打印一个数据表里的记录,记录的条数比较多,我的纸张是A4的,大概一页能打50条,怎样控制当一页打满50条后就换页接着打印。
   请大家帮帮小弟,谢谢!
   顺便请教一下,printer对象打印,可以实现预览吗?

解决方案 »

  1.   

    if n mod 50 then printer.newpage
      

  2.   

    if intLine mod 50=0 then printer.newpage
      

  3.   

    printer.newpage  不管当前页打印位置在何处,跳到下一页开头准备打印,并不向打印机发送作业,只有在endpage时才发送打印作业。
    你也可以用endpage,每次打印50行后,发一次作业,这样下一页的位置也就自动走到页的开头了。
      

  4.   

    To jtkk:
       请问有ENDPAGE这个方法吗,我怎么找不到,能说明一下用法吗,谢谢。TO lyllxfly(Iamunknown):
       这里的N指待是记录数吗
       假如我这里查询后的记录集为RST,我这样写:
        If rsT.AbsolutePosition > 50 Then
           Printer.NewPage
        End If这样可以吗,我这边试了不行!
      

  5.   

    我的代码是这样的,大家帮忙看看到底哪里有问题:Dim x, y, z As Integer
    Dim ngysdm, ngysmc As String
    sql = "select [供应商代码],[供应商名称] from [wxdw] order by [供应商代码]"
    Set rs = conn.Execute(sql) Printer.Orientation = vbPRORPortrait
     Printer.PaperSize = vbPRPSA4
     Printer.ScaleMode = vbMillimeters
     Printer.FontName = "宋体" rs.MoveFirst x = 40
     y = 49
     z = 1 Do While Not rs.EOF
     
     ngysdm = rs("供应商代码").Value
     ngysmc = rs("供应商名称").Value
     
     Printer.CurrentX = x
     Printer.CurrentY = y
     Printer.FontSize = 10
     Printer.Print ngysdm
     
     Printer.CurrentX = x + 40
     Printer.CurrentY = y
     Printer.FontSize = 10
     Printer.Print ngysmc
      
     rs.MoveNext
     
      y = y + 5
      z = z + 1
      
     If (z Mod 50) = 0 Then
        Printer.NewPage
     End If Loop
     
     Printer.EndDoc当我的记录数在50条以内就没问题,可以正常打印,可是一超过50条,就不行了,似乎Printer.NewPage的没有效果,有没有哪为仁兄指点一下啊!
      

  6.   

    不可以预览,如果要预览的话,可以自己用PICTUREBOX进行模拟,分页也要自己做处理,判断CurrentY的值是否达到页面的高度,然后用NewPage 方法分页,不过分页之后CurrentY要从新开始!!
      

  7.   

    但是我这里这里的printer.newpage好象没有效果,假如我一页能打50条,而我的记录数有52条,这时候就会从最后一条开始打起,打印一个字段,然后走一页纸,然后再打印一个字段,再走一页纸,一直这样到第50条记录,这又是什么原因,能指点一下吗?
      

  8.   

    你的CurrentY的位置!!!!
    换页后设成0了吗?