a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 113|回复: 0

[Access] 实例编程:用Access打印带相片的证件

[复制链接]
发表于 2012-7-31 22:26:35 | 显示全部楼层 |阅读模式
 最近笔者接到一个任务,要将学生的证书信息及相片打印到3+1技能证书模板上,并且还要传到网上供用人单位查询。原始数据分两部分,一部分是包含学生姓名、身份证号、认证项目、证书编号等信息的Excel表;另一部分是按认证项目分类、以学生姓名为名的相片,图片大小均为90×120像素,图片格式均为JPG。
; }; u4 n- Q3 N. W" j  考虑到时间上的紧迫性,还有用户操作的易用性,以后上网查询所需数据库的兼容性,因此决定选用Access来开发。Access具有强大的窗体创建、报表打印、VBA编程功能,足以胜任大部分小型数据库应用系统的开发。1 [% _) J( v" c/ \4 `/ c' U+ j1 q  B# o
  创建数据库和表
: L! ^" a' V5 I; L3 e  1. 打开Microsoft Office Access,创建一个空数据库,与相片的分类目录放在同一个文件夹下。5 J- S- a+ H5 z! L2 a9 R& z
  2. 使用“文件→获取外部数据→导入”功能将Excel表直接导入Access中,保存为“证书信息”表。
4 c( [3 Q, _9 d  n0 F5 b  创建证书信息报表
- }4 g  y* F: C5 m* S: W  1. 创建“证书信息”报表,先插入一个“图像”控件,设置其图片属性为证书模板图片,设置其大小为证书模板的大小,设置其可见性为否,这样有利于证书信息的排版,且不会打印出来;再依次插入要打印的字段列表,设置好字体和字号;最后再插入一个“图像”控件,放置于打印相片的地方,设置其大小为相片的大小,设置其名称为“stuimg”。
: }! v% C7 {  h  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:
* S1 |# n$ s$ `2 t2 c) L  Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
% d% w. E  |; D# r: I& B# [  Dim imgpath As String
6 Q) K0 i, H# `+ t: S, R  w  ' 依据应用程序路径、认证项目名称、姓名得到相片路径
9 b: O' U- b" ?: A1 `  imgpath = Application.CurrentProject.Path +"\" +认证项目.text +"\"+ 姓名.Text+".jpg"4 M; k, {* ]- G) y* ?& k" C
  ' 判断照片是否存在,如果不存在则显示一张空白的图片。
7 w5 m8 f- J. t8 F# Q9 r7 ]  If Dir(imgpath) = "" Then imgpath = Application.CurrentProject.Path + "\noimg.bmp"
, W& R; X4 x% O5 W3 o4 a  Stuimg.Picture = imgpath# b% g' ?5 X/ l) C( q0 c: b
  End Sub
1 E" g2 g2 e$ ~, }6 N+ }  创建打印预览面板窗体) h0 r* a2 ~# l4 i
  1. 创建“打印预览面板”,依次放置一个用于查询的文本框,并命名为“inputname”;两个命令按钮“预览”、“关闭”。
# B9 x4 Z) ]* O, G: k  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:( T% Q+ Q$ F9 c+ a! w/ _
  Public stuname As String '定义全局变量stuname, c6 L" a7 B" T7 e) R, V) l
  Sub PrintReports(PrintMode As Integer): F7 P" J' }; x+ L/ D2 r
  ' 创建打印预览子程序
) S; K4 A2 G  c! K/ o0 ~7 s  Dim strWhereCategory As String
. X) _, ]- c/ r( {# {  If stuname  Empty Then2 q! T. F. U. P5 A# U: D
  strWhereCategory = "姓名= '" + stuname + "'"7 k/ a" S3 r5 T# D3 N
  End If6 K. J& y6 u* J
  DoCmd.OpenReport "证书信息", PrintMode, , strWhereCategory
, m# K' I! B. e% |, ~  DoCmd.Close acForm, "打印预览面板"
! X# \: c, t' A1 z9 }  End Sub$ A7 p% I* t& T% B8 u/ i* G
  Private Sub inputname_Change()
  p+ [+ B; G6 ~* s3 D  G; Q  ' 将文本框输入的字符赋给全局变量sname,用于给打印预览限定条件
7 H+ O: X" [+ c4 M' C  stuname = inputname.Text; g. K, o, v6 U" O5 l; S
  End Sub  d8 y8 h# U9 F& h/ d0 h9 K; j
  Private Sub 预览_Click()
8 b9 M9 R' ?# ^9 [* H7 e) X+ X# b  ' 预览报表,本过程使用自定义的 PrintReports 子程序
5 n% r5 X! D' ~% {9 `: V/ z  PrintReports acPreview
9 O$ U( L9 w1 E  End Sub
4 g: m& V0 [6 x% w9 ?  Private Sub 关闭_Click()
; Q( h- q' X: D9 g, [+ c/ b- B  }0 s  ' 关闭窗体
( b- p& |  V4 I3 k  DoCmd.Close+ Y- ^" x- @' \( ?  R& a2 @* X8 D+ a
  End Sub
4 y" i, h6 G4 A4 C6 @  创建主切换面板窗体
$ B+ c6 I4 }7 g, b; @, r  1. 创建“主切换面板”,放置三个命令按钮“打印学生证书”、“返回数据窗口”、“退出管理系统”。+ C. R& ]9 E4 v$ e) g
  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:
9 D# u* x) v8 K: w1 I9 X  Private Sub 打印学生证书_Click()
+ e0 k, Q5 u. L  Dim strFormName As String5 ?. R9 u1 \$ f/ @0 y" E, F
  strFormName="打印预览面板"
, w! o; D' K& W1 q3 c  G4 w  ' 打开打印预览面板
5 [" z7 T  v  r; o2 y$ ?  DoCmd.OpenForm strFormName, , , , , acDialog
' G1 K$ E! O3 n: \2 H, F  End Sub
  ^' t% B8 g: M: K4 D  Private Sub 关闭当前窗口_Click()
* T  y3 s. \1 r4 C2 c  Dim strDocName As String! Y# t/ i8 Z& f3 ~5 p! X! F
  strDocName = "证书信息"
7 ]9 G( G5 P3 u$ `, P  ' 关闭“主切换面板”窗体。$ H4 D2 \5 C' T
  DoCmd.Close
2 B# j) ~/ n9 S  ' 设置焦点到数据库窗口;选择“证书信息”表。
7 k: t0 n7 u3 C  DoCmd.SelectObject acTable, strDocName, True
" n: J6 e6 d" V: A- q" |0 ^6 u/ O  End Sub
% e( P3 {. P( V1 A. r' K. T, Q2 E  Private Sub 退出管理系统_Click()4 t6 y7 t4 ]; Z0 e/ P: l; b& J
  ' 退出 Microsoft Access.9 e" {" k- t( i( F( ~5 ~
  DoCmd.Quit3 F  X! ?6 i/ ^2 i! Q1 _
  End Sub2 h4 `3 ^: Y. j  x; h7 G- l; [& f
  设置启动时显示主切换面板
4 i) U4 N# C6 ~" X  依次点击菜单栏“工具→启动”命令,打开“启动”设置窗口,在“显示窗体→页”选项下选择主切换面板,并取消“显示数据库窗口”,这样在下一次打开此Access数据库时,就会自动显示主切换面板窗体。读者也可根据自己的需要决定是否取消菜单栏和快捷菜单栏,如果取消以后又要显示它们,可以在打开Access数据库时按住Shift键。) {. _( G% ~0 Y
  至此,技能证书打印系统开发完毕。本系统在Windows 2000 Server SP4、Microsoft Office Access 2003下调试通过
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 16:16 , Processed in 0.188027 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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