vb,datareport打印报表,想一张纸打两页报表。
想把纸张大小设为1/2 A4纸。在系统打印机设置中选择纸张为自定义的1/2 A4大小,可是不管用。
现象:
1.如果设置为210(宽)*148(长),就报错:报表宽度大于纸的宽度。
2.如果再在系统中设置纸张为横印,datareport预览的时候,显示蛮正常是1/2A4纸张。可是打印的时候,还是按A4纸横印打印。
3.在程序里加入以前帖子上李洪根等人的代码
Option Explicit
Public Enum PrinterOrientationConstants
    OrientPortrait = 1
    OrientLandscape = 2
End Enum
Private Type DEVMODE
    dmDeviceName As String * 32
    dmSpecVersion As Integer
    dmDriverVersion 
………………
可是也没有用。用水晶报表可是打包问题我还没解决。而且怀疑也不能解决一张纸打两页的问题。datareport的这个老问题究竟怎么解决呀?

解决方案 »

  1.   

    搜搜,有好些帖子。
    要用到API函数。
      

  2.   

    就是
    http://expert.csdn.net/Expert/topic/1660/1660222.xml?temp=.7556269中李洪根说的一段模块吧?其中主要一段如下:
    With dm
         ' 设置新的走向
         .dmOrientation = eOrientation
         .dmFields = DM_ORIENTATION
         .dmPaperSize = iDmpaper   '将纸张大小设为iDmpaper,请自行更改所需大小
         '   .dmPaperLength = iDmpaperLength
         '   .dmPaperWidth = iDmpaperWidth
         .dmFields = DM_PAPERSIZE  '必须,否则无法设置纸张大小
    End With
    我试了根本没有!难道你们作成功了吗?
    如果谁成了,能把小段程序发给我吗?[email protected]
    我新建一个工程,把这段代码贴上去,在一个command里加了自定义函数SetDefaultPrinterOrientation,run后按command按钮,再打印,一点效果都没有。
    一句话,行不通!
      

  3.   

    如果要同时设置纸张大小和对齐方式:dmFields = DM_ORIENTATION or DM_PAPERSIZE
      

  4.   

    参考:
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;282474