VB使用mdb数据库显示及打印问题

VB使用mdb数据库显示及打印问题,第1张

你需通过VB的打包程序,生成一个安装包,将此安装程序将你的应用程序安装于WIN2000机器,它同时会将所涉及的OCX文件安装于系统你的第一个问题是WIN2000系统缺少MSDATGRDOCX文件或未注册

第二问题楼上已作回答

第三问题数据打印输出:

VB下数据报表打印输出方法有多种,一是通过自己的设计和编程完成报表打印输出。二是通过MS OFFICE实现报表打印输出。三是应用数据报表设计器的报表打印输出。本人经常使用第一种方法,它具有根据需要灵活应用的特点,但需编写程序。下附代码,第一段代码定义基本变量,第二段代码定义打印函数,第三段代码是具体打印代码,含数据转换。第四段代码是窗体加载代码,具体连接数据库和打印代码根据你所涉及的数据要求进行修改。

Option Explicit

Private n As Integer

Private m As Integer

Private zh_dm(10) As Double

Private dy_dm(3000, 10) As Variant

Private zsl As Integer

Private y As Integer

Private x As Integer

Private i As Integer

Private k As Integer

Private p As Integer

Private pa As Integer

Private j As Integer

Private txt As String

Private fnt As Integer

Private dd As Variant

Public Function prnt(x As Variant, y As Variant, fnt As Variant, txt0 As Variant)

PrinterCurrentX = x

PrinterCurrentY = y

PrinterFontSize = fnt

PrinterPrint txt0

End Function

Private Sub cmdPrint_Click()

Adodc1RecordsetMoveFirst

For i = 0 To zsl - 1

For j = 0 To 7

dy_dm(i, j) = Adodc1Recordset(j)

Next j

Adodc1RecordsetMoveNext

Next i

'确定页数

k = Int(zsl / 80)'80为每页行数

If k - zsl / 80 < 0 Then

k = k + 1

End If

fnt = 8

For p = 0 To k - 1

pa = p + 1

y = 300

x = 4500

txt = "机物料库存"

dd = prnt(x, y, fnt, txt)

x = 8500

txt = "第" & p + 1 & "页"

dd = prnt(x, y, fnt, txt)

y = 500

x = 600

txt = "备件代码"

dd = prnt(x, y, fnt, txt)

x = 1500

txt = "备件名称"

dd = prnt(x, y, fnt, txt)

x = 3500

txt = "备件规格"

dd = prnt(x, y, fnt, txt)

x = 5500

txt = "进口计算机号"

dd = prnt(x, y, fnt, txt)

x = 7500

txt = "最低储备量"

dd = prnt(x, y, fnt, txt)

x = 9000

txt = "库存量"

dd = prnt(x, y, fnt, txt)

For i = 0 + p 80 To 79 + p 80

y = 700 + 180 (i - p 80)

x = 600

txt = dy_dm(i, 1)

dd = prnt(x, y, fnt, txt)

x = 1500

txt = dy_dm(i, 2)

dd = prnt(x, y, fnt, txt)

x = 3500

txt = dy_dm(i, 3)

dd = prnt(x, y, fnt, txt)

x = 5500

txt = dy_dm(i, 4)

dd = prnt(x, y, fnt, txt)

x = 7500

txt = dy_dm(i, 5)

dd = prnt(x, y, fnt, txt)

x = 9000

txt = dy_dm(i, 6)

dd = prnt(x, y, fnt, txt)

If Int(i / 10) - i / 10 = 0 Then

PrinterLine (500, 695 + (i - p 80) 180)-(10000, 695 + (i - p 80) 180)

End If

Next i

If zsl - p 80 > 80 Then

PrinterLine (500, 695 + 180 80)-(10000, 695 + 180 80)

PrinterNewPage

End If

Next p

PrinterEndDoc ' 打印完成。

Cls

End Sub

Private Sub Form_Load()

Adodc1ConnectionString = "Provider=MSDASQL1;Persist Security Info=False;Data Source=jwl_dbf"

Adodc1RecordSource = "select csjs_dm,cs备件代码,cs备件名称,cs备件规格,cs进口计算机号,cs最低库存量,sl结存数量,sl结存金额,sl结存单价,sl类别代码 from JWCK_BM as cs,jwl_jiec as sl" & _

" where cs备件代码 = sl备件代码" & " and cs备件代码>" & "''" & " order by sl类别代码,sl备件代码"

Adodc1Refresh

DataGrid1Refresh

zsl = Adodc1RecordsetRecordCount

Adodc3ConnectionString = "Provider=MSDASQL1;Persist Security Info=False;Data Source=jwl_dbf"

Adodc3RecordSource = "select sum(结存金额) as hj from jwl_jiec"

Adodc3Refresh

End Sub

你的做法是不可取的,数据库中的数据不能直接打印在窗体中,这样数据是没有阅读价值的。

另外你的代码只能在窗体打印字符串 "seletfrom chanpinxinxi" 不会显示数据的。

VB提供了多个网格控件,如DBGrid,FlexGrid等,在程序中可以用来显示、录入数据,而且可以直接显示数据库里的数据,但是这些网格控件没有提供打印功能,用这些网格控件只能在屏幕上显示表格数据,这是网格控件功能上的一个缺憾。

如何才能把网格控件显示的表格数据从屏幕上搬到打印机上呢使用VB

60提供的报表生成器,就能实现数据报表的生成和打印。本文将介绍打印数据报表的几个技巧。

数据报表设计器

Microsoft数据报表设计器(Microsoft

Data

Report

designer)是一个多功能的报表生成器,其特色是创建联合分层结构报表。同数据源(Data

Environment

designer数据环境设计器)一起使用,可以从几个不同的相关表创建报表。除创建可打印报表之外,还可以将报表导出到

HTML

或文本格式文件中。

采用如下方法调用数据报表设计器,单击[工程]→[添加

Data

Report],向工程中添加一个数据报表设计器,在一个工程中可以添加多个数据报表设计器,用于设计多个报表。如果“添加

Data

Report”没有在“工程”菜单上列出,则单击[部件],出现“部件”对话框,单击“设计器”选项卡。并单击[Data

Report]把设计器添加到菜单上。

在“工程”菜单上只列出四种ActiveX设计器,其余的设计器放在“工程”菜单的“更多

ActiveX

设计器”子菜单中。

有关上述控件的使用方法请参阅VB的联机帮助。

实现数据报表打印

我们摸索出了几个VB的联机帮助中没有介绍的技巧,但是在编程中非常实用,供大家参考。

(一)数据源动态选择数据库文件

我们为数据环境设计器(Data

Environment

designer)的“Connection1”设置相关数据库时,把数据源定在了一个数据库文件上,这样就不能实现一个数据报表设计器动态选择相关数据库。以下代码的加入将实现数据源的动态选择。实现过程如下:

进入DataEnvironment1的代码窗口。在DataEnvironment1的Initialize()事件中加入代码:

Private

Sub

DataEnvironment_Initialize()

′建立数据源

Dim

sjklj

As

String

sjklj

=

AppPath

+

〃\〃

+〃

Bibliomdb〃

′变量sjklj将存放数据库文件“Bibliomdb”

的路径

sjklj=〃Provider=MicrosoftJetOLE

DB351;

-

Persist

Security

Info=False;Data

Source=〃+sjklj

′设置相关数据源

DataEnvironment1Connection1ConnectionString

=sjklj

End

Sub

这样我们就可以使用代码在程序中随时为数据环境设置数据源了。

(二)如何卸载数据源

使用上述方法设置数据库,如果再修改为另一个数据库,程序依然调用第一次设置的数据库,这是为什么呢

关于这个问题的解决方法在VB的联机帮助中没有介绍。经过细心研究我们考虑出了一种解决方法:我们需要先将原来的数据源卸载,再使数据环境设计器与修改后的数据库相关。对于卸载一个控件,VB提供了Unload方法,对于数据环境设计器这种方法同样适用。我们只需在实现显示数据报表的事件过程中的Show语句前加入:Unload

DataEnvironment1即可。

(三)实现对报表打印边距的编辑

数据报表设计器提供给编程者编辑打印报表边距的功能。DataReport有两个属性:

1LeftMargin属性:编辑打印报表的左边距;

2TopMargin属性:编辑打印报表的上边距。

同样在Show语句前加入以下代码便可实现对报表的左边距和上边距进行编辑了:

lm

=

InputBox(〃请输入打印左边距(mm)〃,

〃打印

-左边距〃,

〃25〃)

tm

=

InputBox(〃请输入打印上边距(mm)〃,

〃打印

-上边距〃,

〃25〃)

DataReport1LeftMargin

=

lm

567

DataReport1TopMargin

=

tm

567

运行程序,单击[打印]按钮时,窗口上将出现一消息框,提示你输入边距数值,单位是毫米,如果用户不输入则程序默认边距为25mm。

以上就是关于VB使用mdb数据库显示及打印问题全部的内容,包括:VB使用mdb数据库显示及打印问题、VB查询sql数据库的所有内容并且打印在窗体上、VB中的打印问题·····等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10188271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存