你需通过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中的打印问题·····等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)