CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  多媒体

vb报表打印问题

楼主whf_csdn(我不知有没有做程序员的天分)2002-04-15 08:35:37 在 VB / 多媒体 提问

1。出现报表宽度大于纸张宽度的问题怎么办?  
  2。哪有详细介绍报表打印,以及vb打印方面各资料?  
   
  非常感谢! 问题点数:20、回复次数:8Top

1 楼Fanks(铁面人)回复于 2002-04-15 08:38:46 得分 5

1.减小报表宽度或加大纸张宽度  
  2.有关编程的网站基本都会有关于打印的资料Top

2 楼whf_csdn(我不知有没有做程序员的天分)回复于 2002-04-15 09:15:20 得分 0

有关第一个还是不懂  
  我要打印的是A4横向,29CM  
  报表设计也是29  
  减小报表宽度又不满足要求了,希望得到你的答复!  
  Top

3 楼Pipi0714(老顽童)回复于 2002-04-15 09:20:14 得分 2

最灵活的打印方法用Pinter类来实现Top

4 楼nebular(星云)回复于 2002-04-15 09:21:06 得分 5

可以减少你的报表左右边距leftmargin,rightmarginTop

5 楼nebular(星云)回复于 2002-04-15 09:21:58 得分 3

减少报表的LEFTMARGIN、RIGHTMARGINTop

6 楼zhongminsheng(小生)回复于 2002-04-15 09:52:04 得分 3

如果用的是DATAREPORT   的话试试下面的:  
  Option   Explicit  
  Public   Enum   PrinterOrientationConstants  
          OrientPortrait   =   1  
          OrientLandscape   =   2  
  End   Enum  
  Private   Type   DEVMODE  
          dmDeviceName   As   String   *   32  
          dmSpecVersion   As   Integer  
          dmDriverVersion   As   Integer  
          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   As   Integer  
          dmPrintQuality   As   Integer  
          dmColor   As   Integer  
          dmDuplex   As   Integer  
          dmYResolution   As   Integer  
          dmTTOption   As   Integer  
          dmCollate   As   Integer  
          dmFormName   As   String   *   32  
          dmUnusedPadding   As   Integer  
          dmBitsPerPel   As   Integer  
          dmPelsWidth   As   Long  
          dmPelsHeight   As   Long  
          dmDisplayFlags   As   Long  
          dmDisplayFrequency   As   Long  
  End   Type  
  Private   Type   PRINTER_DEFAULTS  
          pDatatype   As   String  
          pDevMode   As   Long  
          DesiredAccess   As   Long  
  End   Type  
  Private   Type   PRINTER_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   As   Long  
          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   Const   DMPAPER_LETTER   =   1  
  Private   Const   DMPAPER_A3   =   8                                         '     A3   297   x   420   mm  
  Private   Const   DMPAPER_A4   =   9                                         '     A4   210   x   297   mm  
  Private   Const   DMPAPER_B4   =   12                                         '  
  Private   Const   DMPAPER_B5   =   13                                         '  
   
  Private   Const   DMPAPER_XS   =   256  
   
  Private   Const   DC_PAPERNAMES   =   16  
  Private   Const   DC_PAPERS   =   2  
  Private   Const   DC_PAPERSIZE   =   3  
   
  Private   Const   DM_IN_BUFFER   =   8  
  Private   Const   DM_OUT_BUFFER   =   2  
  Private   Const   DM_ORIENTATION   =   &H1  
  Private   Const   DM_PAPERSIZE   =   &H2&  
  Private   Const   DM_PaperLength   =   &H4  
  Private   Const   DM_PaperWidth   =   &H8&  
  Private   Const   Dm_DeviceName   =   &H9&  
   
   
  Private   Const   PRINTER_ACCESS_ADMINISTER   =   &H4  
  Private   Const   PRINTER_ACCESS_USE   =   &H8  
  Private   Const   STANDARD_RIGHTS_REQUIRED   =   &HF0000  
  Private   Const   PRINTER_ALL_ACCESS   =   (STANDARD_RIGHTS_REQUIRED   Or   PRINTER_ACCESS_ADMINISTER   Or   PRINTER_ACCESS_USE)  
   
  Private   Declare   Sub   CopyMemory   Lib   "kernel32"   Alias   "RtlMoveMemory"   (hpvDest   As   Any,   hpvSource   As   Any,   ByVal   cbCopy   As   Long)  
  Private   Declare   Function   OpenPrinter   Lib   "winspool.drv"   Alias   "OpenPrinterA"   (ByVal   pPrinterName   As   String,   phPrinter   As   Long,   pDefault   As   Any)   As   Long  
  Private   Declare   Function   ClosePrinter   Lib   "winspool.drv"   (ByVal   hPrinter   As   Long)   As   Long  
  Private   Declare   Function   DocumentProperties   Lib   "winspool.drv"   Alias   "DocumentPropertiesA"   (ByVal   hwnd   As   Long,   ByVal   hPrinter   As   Long,   ByVal   pDeviceName   As   String,   pDevModeOutput   As   Any,   pDevModeInput   As   Any,   ByVal   fMode   As   Long)   As   Long  
  Private   Declare   Function   GetPrinter   Lib   "winspool.drv"   Alias   "GetPrinterA"   (ByVal   hPrinter   As   Long,   ByVal   Level   As   Long,   pPrinter   As   Any,   ByVal   cbBuf   As   Long,   pcbNeeded   As   Long)   As   Long  
  Private   Declare   Function   SetPrinter   Lib   "winspool.drv"   Alias   "SetPrinterA"   (ByVal   hPrinter   As   Long,   ByVal   Level   As   Long,   pPrinter   As   Any,   ByVal   Command   As   Long)   As   Long  
  Private   Declare   Function   DeviceCapabilities   Lib   "winspool.drv"   Alias   "DeviceCapabilitiesA"   (ByVal   lpDeviceName   As   String,   ByVal   lpPort   As   String,   ByVal   iIndex   As   Long,   ByVal   lpOutput   As   String,   lpDevMode   As   DEVMODE)   As   Long  
  Function   SetDefaultPrinterOrientation(ByVal   eOrientation   As   PrinterOrientationConstants,   ByVal   strPaperSize   As   String)   As   Boolean  
          Dim   bDevMode()   As   Byte  
          Dim   bPrinterInfo2()   As   Byte  
          Dim   hPrinter   As   Long  
          Dim   lResult   As   Long  
          Dim   nSize   As   Long  
          Dim   sPrnName   As   String  
          Dim   dm   As   DEVMODE  
          Dim   pd   As   PRINTER_DEFAULTS  
          Dim   pi2   As   PRINTER_INFO_2  
   
          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.  
          If   OpenPrinter(sPrnName,   hPrinter,   pd)   Then  
                  '   Get   number   of   bytes   requires   for  
                  '   PRINTER_INFO_2   structure  
                  Call   GetPrinter(hPrinter,   2&,   0&,   0&,   nSize)  
                  '   Create   a   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   a   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  
                          Call   DocumentProperties(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  
                          .dmOrientation   =   eOrientation  
                          .dmFields   =   DM_ORIENTATION   +   DM_PAPERSIZE  
                          Select   Case   strPaperSize  
                                  Case   "A3"  
                                          .dmPaperSize   =   DMPAPER_A3  
                                  Case   "A4"  
                                          .dmPaperSize   =   DMPAPER_A4  
                                  Case   "B4"  
                                          .dmPaperSize   =   DMPAPER_B4  
                                  Case   "B5"  
                                          .dmPaperSize   =   DMPAPER_B5  
                                  Case   "LETTER"  
                                          .dmPaperSize   =   DMPAPER_LETTER  
                                  Case   "XS"  
                                          .dmPaperSize   =   256  
                                          .dmPaperLength   =   140  
                                          .dmPaperWidth   =   220  
                                          .dmFields   =   DM_ORIENTATION   +   DM_PAPERSIZE   +   DM_PaperLength   +   DM_PaperWidth  
                          End   Select  
                          '.dmOrientation   =   eOrientation  
                          '.dmFields   =   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  
          End   If  
   
  End   Function  
   
   
   
   
  Top

7 楼adafirst3219(难得聪明)回复于 2002-04-15 10:24:38 得分 2

printer对象很不错Top

8 楼whf_csdn(我不知有没有做程序员的天分)回复于 2002-04-16 09:04:43 得分 0

请各位给我介绍一本这方面的书吧  
  Top

相关问题

  • VB中报表及打印问题
  • 关于VB打印报表的问题!!
  • 报表打印
  • 打印报表
  • 报表打印
  • 报表打印?
  • 报表打印
  • VB使用水晶报表打印,能不能选择要打印的字段?
  • vb自带报表,点击打印按钮,打印完成后,报表窗体卸载。
  • vb中通用数据报表(data report)打印的实现

关键词

  • 报表
  • 打印
  • 宽度
  • as integer
  • long

得分解答快速导航

  • 帖主:whf_csdn
  • Fanks
  • Pipi0714
  • nebular
  • nebular
  • zhongminsheng
  • adafirst3219

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo