a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 109|回复: 0

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

[复制链接]
发表于 2012-7-31 22:26:35 | 显示全部楼层 |阅读模式
 最近笔者接到一个任务,要将学生的证书信息及相片打印到3+1技能证书模板上,并且还要传到网上供用人单位查询。原始数据分两部分,一部分是包含学生姓名、身份证号、认证项目、证书编号等信息的Excel表;另一部分是按认证项目分类、以学生姓名为名的相片,图片大小均为90×120像素,图片格式均为JPG。
( s) L! y3 R/ [) ]2 |2 Y1 r  考虑到时间上的紧迫性,还有用户操作的易用性,以后上网查询所需数据库的兼容性,因此决定选用Access来开发。Access具有强大的窗体创建、报表打印、VBA编程功能,足以胜任大部分小型数据库应用系统的开发。: M1 G! o1 N$ y8 v( q0 ]! x  {
  创建数据库和表  J2 B1 S1 q4 }, l* R" M
  1. 打开Microsoft Office Access,创建一个空数据库,与相片的分类目录放在同一个文件夹下。
0 ~( p! ?$ t6 \2 r; v  2. 使用“文件→获取外部数据→导入”功能将Excel表直接导入Access中,保存为“证书信息”表。
* \) v+ k, ?6 S8 \  创建证书信息报表7 \% q2 [- w, w5 O9 a8 W
  1. 创建“证书信息”报表,先插入一个“图像”控件,设置其图片属性为证书模板图片,设置其大小为证书模板的大小,设置其可见性为否,这样有利于证书信息的排版,且不会打印出来;再依次插入要打印的字段列表,设置好字体和字号;最后再插入一个“图像”控件,放置于打印相片的地方,设置其大小为相片的大小,设置其名称为“stuimg”。
/ l2 r' R* ?- \5 ?# v  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:
' y- ?/ h. x8 P. q6 t  Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
# E1 e* z9 }5 m! A: X& p1 F' K! ]  Dim imgpath As String
+ G6 P6 y8 S; W, o: q  ' 依据应用程序路径、认证项目名称、姓名得到相片路径$ T7 I) f( Q# _0 ^
  imgpath = Application.CurrentProject.Path +"\" +认证项目.text +"\"+ 姓名.Text+".jpg"
5 ^" H6 \6 f7 h4 L2 k9 D  ' 判断照片是否存在,如果不存在则显示一张空白的图片。
2 K* \. e, V( r1 Y  If Dir(imgpath) = "" Then imgpath = Application.CurrentProject.Path + "\noimg.bmp"
3 w# l0 w: u6 F# d, h% _# q  Stuimg.Picture = imgpath
) U% H7 N0 Q6 d7 c5 _  End Sub
/ {! a. \, ?# {$ _; Y3 |1 ]  创建打印预览面板窗体
4 g  \) k8 r+ s  1. 创建“打印预览面板”,依次放置一个用于查询的文本框,并命名为“inputname”;两个命令按钮“预览”、“关闭”。, c8 v' z7 T- i' k& t
  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:( @% ]" D7 n0 H: {5 v. G& M
  Public stuname As String '定义全局变量stuname0 O: ~. ~' K8 c9 b0 N
  Sub PrintReports(PrintMode As Integer)
' u& y  J% K* s$ @  ' 创建打印预览子程序
$ y' H3 N; Z) o1 I# U  Dim strWhereCategory As String( |/ l& j$ |9 C5 Z
  If stuname  Empty Then+ G+ U0 t1 m* w1 s6 h
  strWhereCategory = "姓名= '" + stuname + "'"
; ]4 p) ]$ H9 \' K: O9 {( |' C  End If2 G  X8 h0 C& c  v: R4 F
  DoCmd.OpenReport "证书信息", PrintMode, , strWhereCategory
& \7 [6 _% d7 z/ h- P1 J1 G, `9 p2 |  DoCmd.Close acForm, "打印预览面板"
' N' y/ ?- l( j1 I8 O$ v  End Sub
/ G- S0 f0 ]! z+ {. }% ?  Private Sub inputname_Change()
6 i1 B  z! L  U  ' 将文本框输入的字符赋给全局变量sname,用于给打印预览限定条件& q+ H$ I7 O: c9 g: i+ Q) D
  stuname = inputname.Text
1 N/ d, |( Y' t- i" m  End Sub
2 b. ^4 K8 z: ?( `; Y  Private Sub 预览_Click()/ ?( ]6 P8 q9 W  y/ s
  ' 预览报表,本过程使用自定义的 PrintReports 子程序
; |) h+ d& q5 y) y, R2 [  PrintReports acPreview
8 [5 v' V- M0 X4 N3 }! H, k  End Sub% J2 e7 v1 k! ~  j0 E
  Private Sub 关闭_Click()8 z) ^; u. f2 d0 i' Y0 b. h
  ' 关闭窗体
- r  I/ h) \, A, p3 H, {  DoCmd.Close
1 O7 g1 {* b7 n0 q/ ^: C' s( O0 G! m  End Sub7 S" P/ H7 e6 n, P( A, W3 H# c
  创建主切换面板窗体. Z, n9 m, G  e6 l: P9 B: N/ y
  1. 创建“主切换面板”,放置三个命令按钮“打印学生证书”、“返回数据窗口”、“退出管理系统”。
$ _8 R  v: ^" |( s& u  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:5 h; n( {  g" |; u% W* Y
  Private Sub 打印学生证书_Click()) p! p. ?6 M, n: f, X# i  C
  Dim strFormName As String
. f5 ^) E% K8 S7 h$ q  strFormName="打印预览面板"5 @" a3 g3 ^* u+ O" N
  ' 打开打印预览面板- ]* {  j! u" A8 N
  DoCmd.OpenForm strFormName, , , , , acDialog
4 H7 b0 C4 O( r& D9 W- D4 o  End Sub
. M& I7 b0 _) s9 W$ S6 j  Private Sub 关闭当前窗口_Click()
7 e) z0 v8 Q$ j  p+ e  Dim strDocName As String% l3 z7 h8 e- c- \7 g6 F* e+ @0 i
  strDocName = "证书信息"
0 n' y7 h: ?+ p( a  ' 关闭“主切换面板”窗体。
3 [& v8 b* a: W1 I  W  DoCmd.Close
5 K# w9 h; e, S6 `5 d& c  ' 设置焦点到数据库窗口;选择“证书信息”表。4 A& i7 r0 y: g4 ^# W
  DoCmd.SelectObject acTable, strDocName, True; [2 W' \- D6 d9 m5 ~
  End Sub" @( j. p# e9 j1 e4 V' C
  Private Sub 退出管理系统_Click()
' X+ U+ [9 O' U! z  ' 退出 Microsoft Access.  r* y: r" H- |  r! T
  DoCmd.Quit! l$ C; I* g: H0 |6 G# `
  End Sub
+ l4 h, o- N. J  设置启动时显示主切换面板+ ^7 _  H  N  A- e/ @
  依次点击菜单栏“工具→启动”命令,打开“启动”设置窗口,在“显示窗体→页”选项下选择主切换面板,并取消“显示数据库窗口”,这样在下一次打开此Access数据库时,就会自动显示主切换面板窗体。读者也可根据自己的需要决定是否取消菜单栏和快捷菜单栏,如果取消以后又要显示它们,可以在打开Access数据库时按住Shift键。
' J6 i- D' z$ ~& \% I  至此,技能证书打印系统开发完毕。本系统在Windows 2000 Server SP4、Microsoft Office Access 2003下调试通过
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 15:47 , Processed in 0.183310 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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