您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:15 来源:未知

本文章共3252字,分3页,当前第1页,快速翻页:
 
---- 几乎所有数据库应用软件,都需要打印单证和报表。常见的方法是利用VB的Crystal Reports(水晶报表)方式,通过TextBox等数据绑定控件,调用Print方法直接输出。虽然Crystal Report这一个功能强大、样式丰富且无编程方式的报表编制程序能适应大部分单证、报表打印的需要,但是Crystal Reports引擎是一个动态链接库,需许多文件支持和调用更多系统资源,大大增加系统负担。
逆风编程精品

---- 另一种解决办法是通过Printer对象的Print方法,直接打印字符串。这虽然减少了系统资源的开销,但它不能直接用于打印复杂的单证和报表。本文通过两个实例,阐述一个通用折行打印程序的编程和在单证及报表的应用。

---- 二. 编程实现及实例

---- 为便于阐述的方便,我们先建立一个ACCESS数据库Standards.mdb,其内SN表由以下几个字段组成:

---- 标准号(文本,17)

---- 标准名称(文本,255)

---- 英文名称(文本,255)

---- 实施日期(日期,8)

---- 修定日期(日期,8)

---- 发布日期(日期,8)

---- 代替标准(文本,50)

---- 通用折行打印程序编制操作如下:

---- 1.在VB5.0编程环境中,新建一个工程Project1;

---- 2. 在Project1中添加Moduel,在Moduel模块中定义一个记录最大折行数的公用变量Rowlab和Function函数(以下程序都经过实际运行测试,可以原样复制使用);

Public rowlab As Integer   
'定义一个公用变量
Function prnt11(X As Integer, Y As
Integer,Font As Single, Txt As String, Val As Integer)
Dim str As String, str1 As String,
str2 As String ,i As Integer
Printer.CurrentX = X
Printer.CurrentY = Y
Printer.FontBold = False
Printer.FontSize = font
str = txt
str2 = str
i = 0
rowlab = 0
If Len(Trim(str)) = 0 Then
   rowlab = 1  '待打印字符串为空的标志
Else
  Do While Len(str) > 0
   Printer.CurrentX = X
   Printer.CurrentY = Y rowlab * 240
   rowlab = rowlab 1
   If Len(str) >= val Then
     str1 = Mid(str, 1, val)
     Printer.Print str1
     i = i 1
     str = Mid(str2, i * val 1)
   Else
    Printer.Print str
    Exit Do
   End If
  Loop
End If
End Function

---- 3. 在Project1中新建一个窗体Form1,窗体上添加一个Data控件Data1,一个MSFlexGrid控件MSFGrid1,7个TextBox和两个命令按钮CmdPrnt1、CmdPrnt2。设置Data控件的属性

.. DatabaseName="Standards.mdb"
..RecordSourse="SN"
  MSFGrid1属性
    .DataSource="Data1"
  Text1属性
    .DataSource="Data1"
    .DataField="标准号"
  Text2~Text7类同。

---- CmdPrnt1、CmdPrnt2分别为打印单条记录和多条记录的按钮。

---- 实例1:文字串定位折行打印在口岸联检部门中应用非常广泛。下述例子是用CmdPrnt1的Click事件代码实现了对文字串定位折行打印:

Private Sub CmdPrnt1_Click()
Dim str As String, str1 As String ,txt As String
Dim strx As Integer, stry As Integer,i As Integer
strx = 200
stry = 0
txt = Space(20) "中国出入境检验检疫标准目录检索STEMS 2000"
Printer.FontName = "黑体"
dd = prnt11(strx, stry, 10, txt, 50)
stry = stry rowlab * 240
Printer.Line (0, stry)-(9000, stry)
Printer.FontName = "宋体"
txt = "标准号:" Space(2) Trim(Text1) Space(3)
"发布日期:" Trim(Text4) Space(3) "实施日期:"
Trim(Text6) Space(3) "修定日期:" Trim(Text5) ' Chr(13)
stry = stry 240
dd = prnt11(strx, stry, 10, txt, 70)
stry = stry rowlab * 240
txt = "代替标准:"
dd = prnt11(strx, stry, 10, txt, 10)
dd = prnt11(strx 1000, stry, 10, Trim(Text7), 60)
 
本文章更多内容1 - 2 - 3 - 下一页>>
相关文章

利用VB进行多媒体程序设计初步
怎样使用有密码的 Access 数据库
Visual Basic影音控制
熟悉VB的集成开发环境
Visual Basic 工 程 管 理
VB取磁盘序列号卷标和文件系统类型
VB中使窗体右上角的X按钮失效
Visual Basic动画编程技术
用数据库保存VB程序的用户设置
在VB中存取数据库中的图片
VB驱动pcAnyWhere进行文件传输
创建ActiveX接口移植Excel工作表
怎样关闭一个正在运行的程序
VB COM基础讲座之编译的实例选项
解决Visual Basic非正常退出一例
在VB中调用CHM 帮助的几种方法
如何使用 VB 编写自动反安装的程序
用VB 设计条形码轻印刷系统
VB应用程序中实现“查找和替换”功能
显示多媒体信息

相关评论


本文章所属分类:首页 VB

  热门关键字: