打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB 报表页面设置
    1、如果提示页面宽度大于报表宽度 首先可以设置报表的左右Margin 边距如  .RightMargin = 0 (当然首选是调节右边距了,这样不会影响布局和美观)
2、如果还是不行就把左边距也设为 0 看看 下一步就是 调节内容的布局了 缩短宽度
3、如果不能满足需求,那没就让打印机得打印方向默认为 横向打印 或者 调节默认的纸张大小 
在vb 工程中添加模块 
然后 
  Option Explicit
    
  Public EnumPrinterOrientationConstants
        OrientPortrait = 2
        OrientLandscape = 1
  End Enum
  'Printer.PaperSize  =   vbPRPSA3
  Private Type DEVMODE
        dmDeviceName   As String *32
        dmSpecVersion   As Integer
        dmDriverVersion   AsInteger
         dmSize  As Integer
        dmDriverExtra   As Integer
         dmFields  As Long
        dmOrientation   As Integer
         dmPaperSize  As Integer
        dmPaperLength   As Integer
        dmPaperWidth   As Integer
         dmScale  As Integer
         dmCopies  As Integer
        dmDefaultSource   AsInteger
        dmPrintQuality   AsInteger
         dmColor  As Integer
         dmDuplex  As Integer
        dmYResolution   As Integer
         dmTTOption  As Integer
         dmCollate  As Integer
         dmFormName  As String * 32
        dmUnusedPadding   AsInteger
        dmBitsPerPel   As Integer
         dmPelsWidth  As Long
        dmPelsHeight   As Long
        dmDisplayFlags   As Long
        dmDisplayFrequency   AsLong
  End Type
  Private TypePRINTER_DEFAULTS
         pDataType  As String
         pDevMode  As Long
        DesiredAccess   As Long
  End Type
  Private TypePRINTER_INFO_2
         pServerName  As Long
        pPrinterName   As Long
         pShareName  As Long
         pPortName  As Long
         pDriverName  As Long
         pComment  As Long
         pLocation  As Long
         pDevMode  As Long
         pSepFile  As Long
        pPrintProcessor   As Long
         pDataType  As Long
         pParameters  As Long
        pSecurityDescriptor   AsLong
         Attributes  As Long
         Priority  As Long
        DefaultPriority   As Long
         StartTime  As Long
         UntilTime  As Long
         Status  As Long
         cJobs  As Long
         AveragePPM  As Long
  End Type
    
  Private ConstDC_PAPERNAMES = 16
  Private Const DC_PAPERS =2
  Private Const DC_PAPERSIZE= 3
    
  Private Const DM_IN_BUFFER= 8
  Private ConstDM_OUT_BUFFER = 2
  Private ConstDM_ORIENTATION = &H1
  Private Const DM_PAPERSIZE= &H2&
    
  Private Const DMPAPER_A3 =8                                            A3   297  x   420  mm
  Private Const DMPAPER_A4 =9                                            A4   210  x   297  mm
    
  Private ConstPRINTER_ACCESS_ADMINISTER = &H4
  Private ConstPRINTER_ACCESS_USE = &H8
  Private ConstSTANDARD_RIGHTS_REQUIRED = &HF0000
  Private ConstPRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _
        PRINTER_ACCESS_ADMINISTER OrPRINTER_ACCESS_USE)
    
  Private Declare SubCopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
         (hpvDest AsAny, hpvSource As Any, ByVal cbCopy As Long)
    
  Private Declare FunctionOpenPrinter Lib "winspool.drv" Alias _
        "OpenPrinterA" (ByVal pPrinterName As String,phPrinter As _
         Long,pDefault As Any) As Long
    
  Private Declare FunctionClosePrinter Lib "winspool.drv" _
         (ByValhPrinter As Long) As Long
    
  Private Declare FunctionDocumentProperties Lib "winspool.drv" _
         Alias"DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long,_
         ByValpDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any,_
         ByVal fModeAs Long) As Long
    
  Private Declare FunctionGetPrinter Lib "winspool.drv" _
         Alias"GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
         pPrinter AsAny, ByVal cbBuf As Long, pcbNeeded As Long) As Long
    
  Private Declare FunctionSetPrinter Lib "winspool.drv" _
         Alias"SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
         pPrinter AsAny, ByVal Command As Long) As Long
    
  Private Declare FunctionDeviceCapabilities Lib "winspool.drv" _
         Alias"DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPortAs String, _
         ByValiIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) AsLong
    
  FunctionSetDefaultPrinterOrientation(ByVal eOrientation As _
        PrinterOrientationConstants, ByVal strPaperSizeAs String) As Boolean
    
         DimbDevMode()     As Byte
         DimbPrinterInfo2()     As Byte
         DimhPrinter     As Long
         Dim lResult    As Long
         Dim nSize    As Long
         DimsPrnName     As String
         Dim dm    As DEVMODE
         Dim pd    As PRINTER_DEFAULTS
         Dim pi2    As PRINTER_INFO_2
    
          Get   device  name   of   default  printer
         sPrnName =Printer.DeviceName
          PRINTER_ALL_ACCESS   required  under
          NT,   because  we're   going  to   call
          SetPrinter
        pd.DesiredAccess = PRINTER_ALL_ACCESS
          
          Get   a  handle   to   the  printer.
         IfOpenPrinter(sPrnName, hPrinter, pd) Then
               '   Get  number   of   bytes  requires   for
               '   PRINTER_INFO_2  structure
               Call GetPrinter(hPrinter, 2&,0&, 0&, nSize)
               '   Create   buffer   of  the   required   size
               ReDim bPrinterInfo2(1 To nSize) As Byte
               '   Fill  buffer   with   structure
               lResult = GetPrinter(hPrinter, 2,bPrinterInfo2(1), _
                      nSize, nSize)
               '   Copy  fixed   portion   of  structure
               '   into   VB  Type   variable
               Call CopyMemory(pi2, bPrinterInfo2(1),Len(pi2))
    
               '   Get  number   of   bytes  requires   for
               '   DEVMODE  structure
               nSize = DocumentProperties(0&,hPrinter, sPrnName, _
                      0&,0&, 0)
               '   Create   buffer   of  the   required   size
               ReDim bDevMode(1 To nSize)
    
               '   If  PRINTER_INFO_2   points   to  a   DEVMODE
               '   structure,  copy   it  into   our   buffer
               If pi2.pDevMode Then
                      Call CopyMemory(bDevMode(1),ByVal pi2.pDevMode, Len(dm))
               Else
                      '  Otherwise,   call  DocumentProperties
                      '   to  get   a  DEVMODE   structure
                      CallDocumentProperties(0&, hPrinter, sPrnName, _
                            bDevMode(1), 0&,DM_OUT_BUFFER)
               End If
    
               '   Copy  fixed   portion   of  structure
               '   into   VB  Type   variable
               Call CopyMemory(dm, bDevMode(1), Len(dm))
               With dm
                      '   Set  new   orientation
                      Select Case strPaperSize
                             Case"A3"
                                   .dmPaperSize = DMPAPER_A3
                             Case"A4"
                                   .dmPaperSize = DMPAPER_A4
                      End Select
                      .dmOrientation =eOrientation
                      .dmFields = DM_ORIENTATION +DM_PAPERSIZE
               End With
               '   Copy   our  Type   back  into   buffer
               Call CopyMemory(bDevMode(1), dm, Len(dm))
               '   Set   new  orientation
               Call DocumentProperties(0&,hPrinter, sPrnName, _
                      bDevMode(1), bDevMode(1),DM_IN_BUFFER Or _
                      DM_OUT_BUFFER)
    
               '   Point  PRINTER_INFO_2   at   our
               '   modified  DEVMODE
               pi2.pDevMode = VarPtr(bDevMode(1))
               '   Set   new  orientation   system-wide
               lResult = SetPrinter(hPrinter, 2, pi2,0&)
    
               '   Clean   up  and   exit
               Call ClosePrinter(hPrinter)
               SetDefaultPrinterOrientation = True
         Else
               SetDefaultPrinterOrientation = False
         EndIf
    
  End Function
接着 在报表的设计器中  Initialize() 方法中添加调用方法       
       ''''----------------------------------
       ''''---njx:窗体调用的代码:打印纸选用:1:纵向2.横向
          SetDefaultPrinterOrientation 1, "A3"
      ''''-----------------------------------
        
3、如果还是不能满足 你可以重新设计你要绑定的数据库 处理换页显示 这样很麻烦 不赞成

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VB实用代码,收藏!!
VB获取网卡MAC地址代码
VB指针教程 (1, 2, 3)
如何通过VB获取网卡地址
防止Access 2000密码被破译的方法
VB编外挂的一些基础知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服