a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 82|回复: 0

[Visual Basic] 如何在报表中使用自定义尺寸的纸张(2)

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
  '当该报表使用的是自定义纸张时,则显示自定义纸张的大小,
8 G3 m: }1 l% R4 ~4 T7 p  '并询问是否更改纸张的大小并进行设置;
% h( ^" Q/ {+ `# i+ `/ `  '当该报表使用的是标准纸张时,则询问是否使用自定义纸张,
* V$ e$ i+ ~( n7 U( n# V2 U7 L  '如果选择“是”,则要求输入纸张的大小并进行设置。
9 ]/ A* a0 d) T5 i  DimDevStringAsstr_DEVMODE8 }; ~  t, e: ]! `" o6 ^+ d
  DimDMAstype_DEVMODE9 O* Q3 N: \9 L
  DimstrDevModeExtraAsString
2 g+ P- [. o1 \' a  DimrptAsReport  X" X, A9 p7 R, _
  DimintResponseAsInteger
5 H8 z# B/ `* j8 k/ @4 S  '在设计视图下打开报表
! C( ~2 r2 k" L  DoCmd.OpenReportrptName,acDesign
0 t9 W- t* Y8 X) U4 [8 D  Setrpt=Reports(rptName)
! f5 I6 u' h7 l0 d- A6 J; P4 r  IfNotIsNull(rpt.PrtDevMode)Then: @; r. x1 ?0 r' v! T2 A  H" i$ H
  strDevModeExtra=rpt.PrtDevMode& b3 Y. t0 e8 e+ R- y1 Y% z3 v8 A
  '获取当前的DEVMODE结构
4 U5 m9 p$ r( C2 M1 |/ d& |* n! ~  DevString.RGB=strDevModeExtra( R3 p9 \. X, w( P  l
  LSetDM=DevString
9 S' c' }3 \; z, f7 R  IfDM.intPaperSize=256Then
; I9 c: X0 c3 e  h( Z  '显示用户自定义纸张的尺寸
5 ^$ q9 ?( m, S  intResponse=MsgBox("当前的自定义纸张为(mm):"&_
- P* s0 l4 l6 `: b. b  DM.intPaperWidth/10&"(宽)X"&_' A) L1 t( T3 {) U
  DM.intPaperLength/10&"(长)。你想改变吗?",_2 o$ E" l8 G% n# C
  vbYesNo+vbQuestion)
8 G2 Y/ x5 P) b* @  B9 u  Else
. C$ ~3 I/ d# `$ j  k, A  '非自定义纸张
; k& X6 P% ^. p  intResponse=MsgBox("报表没有使用自定义纸张。"&_0 |1 L7 p0 G5 q3 K5 `2 X
  "你想使用自定义纸张吗?",vbYesNo+vbQuestion)
% C* Y' _5 }, V  EndIf: j/ l1 W2 ?, q4 H
  IfintResponse=6Then& D6 k$ {, a* F1 G# G9 ?
  '用户要改变纸张设置,初始化DM的各个域
) i# J; I- h' @" U. H" J  DM.lngFields=DM.lngFieldsOrDM.intPaperSizeOrDM.intPaperLength_
6 D# ^% Z3 h0 C( Z, d3 e2 }  OrDM.intPaperWidth  [+ b: L& k6 y9 b5 G# A
  '设置为自定义纸张
0 J8 a: ]! Q- @3 m# t1 l  DM.intPaperSize=256
" A9 e5 B0 _0 k+ L* s' l+ B  '提示输入长度和宽度
) [/ n$ R* e1 ~2 q  DM.intPaperLength=InputBox("请输入纸张的长度(mm):")*10; e$ G6 z4 c$ Q) m, j5 Q  d+ Z
  DM.intPaperWidth=InputBox("请输入纸张的宽度(mm):")*10
6 P) X  j( q! K$ p/ g  '更新属性值
2 ~7 V1 R- Y5 O9 ]  LSetDevString=DM
; Z6 E8 `+ I1 u9 W  Mid(strDevModeExtra,1,94)=DevString.RGB6 ^( G% Q1 w1 [1 k
  rpt.PrtDevMode=strDevModeExtra
' H& {. ]" ~- s6 Z# n0 ~  EndIf2 l/ O! q9 A. n+ F
  EndIf& q  j5 S' J: X$ |, h. b+ b; }
  '关闭报表并保存% U& Z9 o$ \  }0 r. C2 V
  DoCmd.CloseacReport,rptName,acSaveYes7 U4 R! `# z, O! c- e8 L
  '预览报表; Z4 g9 y2 [4 g9 I+ d6 K3 q
  DoCmd.OpenReportrptName,acViewPreview9 i% i$ Y# }7 W: u. }0 A; M
  EndSub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 08:34 , Processed in 0.283795 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表