如何在VB中实现对ACCESS数据库的数据表的打印? 请问各位大侠,如何在VB中实现对ACCESS数据库的数据表的打印,要求不但要打印出数据还要打印出表格。我查过以前的帖子了,说的不不详细,很模糊,希望可以给出具体的方法,或者说的详细些,小弟不甚感激。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的方法先用MSFlexGid将数据显示出来,然后用printer打印给你一个我打印的函数,以作参考Private Sub printReport(ByVal MyTab As String, ByVal MyTab1 As String) Myn = 2 i = 2 Printer.Width = 10000 Printer.Height = 24000 Printer.Scale (0, 0)-(10000, 24000) '9750) Printer.CurrentX = 3500 - Printer.TextWidth(Me.VB_tjLabel(1).Caption & Me.VB_tjLabel(7).Caption) / 2 Printer.CurrentY = 300 Printer.Print Me.VB_tjLabel(1).Caption & Me.VB_tjLabel(7).Caption Printer.CurrentX = 200 Printer.CurrentY = 1000 Printer.Print MyTab Printer.CurrentY = 1000 Printer.CurrentX = 3000 Printer.Print MyTab1 Printer.CurrentY = 1000 Printer.CurrentX = 5500 Printer.Print "备 注" Printer.Line (0, 800)-(7000, 800) Printer.Line (0, 600 + 200)-(0, 2 * 600 + 200) Printer.Line (2500, 600 + 200)-(2500, 2 * 600 + 200) Printer.Line (5000, 600 + 200)-(5000, 2 * 600 + 200) Printer.Line (7000, 600 + 200)-(7000, 2 * 600 + 200) Do Printer.Font.Size = 12 Printer.CurrentX = 200 Printer.CurrentY = Myn * 600 + 400 Printer.Print vb_TJMSFG.TextArray(TjfaIndex(i - 1, 1)) Printer.CurrentY = Myn * 600 + 400 Printer.CurrentX = 3100 Printer.Print vb_TJMSFG.TextArray(TjfaIndex(i - 1, 2)) Printer.CurrentX = 5500 Printer.Line (0, Myn * 600 + 200)-(7000, Myn * 600 + 200) Printer.Line (0, Myn * 600 + 200)-(0, (Myn + 1) * 600 + 200) Printer.Line (2500, Myn * 600 + 200)-(2500, (Myn + 1) * 600 + 200) Printer.Line (5000, Myn * 600 + 200)-(5000, (Myn + 1) * 600 + 200) Printer.Line (7000, Myn * 600 + 200)-(7000, (Myn + 1) * 600 + 200) If Myn > 21 Then Printer.Line (0, Myn * 600 + 600)-(7000, Myn * 600 + 600) Printer.CurrentX = 3500 - Printer.TextWidth("第 页") / 2 Printer.CurrentY = Myn * 600 + 900 Printer.Print "第" & Printer.Page & "页" Myn = 0 Printer.NewPage End If Myn = Myn + 1 i = i + 1 Loop Until i > vb_TJMSFG.rows Printer.Line (0, Myn * 600 + 200)-(7000, Myn * 600 + 200) Printer.CurrentX = 3500 - Printer.TextWidth("第 页") / 2 Printer.CurrentY = Myn * 600 + 300 Printer.Print "第" & Printer.Page & "页" Printer.Font.Size = 10 Printer.CurrentX = 400 Printer.CurrentY = Myn * 600 + 600 Printer.Print "制表:*******公司 制表日期:" & Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日" & Space(2) & Format(Hour(Time), "0#") & ":" & Format(Minute(Time), "0#") Printer.EndDocEnd SubFunction TjfaIndex(row As Integer, col As Integer) As LongTjfaIndex = row * vb_TJMSFG.Cols + colEnd Function''''vb_TJMSFG是一个MSFlexGrid 恩。非常感谢xiaoxiaoP(每天都是重新开始)。关于你的代码有几个地方想请教,有些地方不是很清楚,对于打印机的方法我也不是很了解。1.Myn这个变量是干吗的?2.VB_tjLabel(1)和VB_tjLabel(7) ,这两个标签你在程序中是为了做什么的,是数据表的标题吗?3.DO前面的内容是为了打印数据做准备吗? 打出标题,注释等。然后画好表格吗?4.DO ......LOOP之间的这段代码的设计思路是什么?5.不是很清楚TjfaIndex()这个函数的设计构思。最后再次感谢xiaoxiaoP大侠,希望可以解答上面疑惑。 6.printReport(ByVal MyTab As String, ByVal MyTab1 As String)这个函数里面的2个参数各代表什么? 请教关于变量声明问题 怎么实现:打开一个exe文件,将里面的英文单词替换成中文? 求助:Clipboard中文的问题 判断数据重复的问题 关于控件选用?急 请教VB的控件的几个小问题: 奇怪问题 求高效足彩缩水覆盖VB算法 vb分布式数据的复制技 串口数据 求助怎样输入一条数据,其它的数据就同步显示出来? 如何注册mci16.ocx控件
给你一个我打印的函数,以作参考Private Sub printReport(ByVal MyTab As String, ByVal MyTab1 As String)
Myn = 2
i = 2
Printer.Width = 10000
Printer.Height = 24000
Printer.Scale (0, 0)-(10000, 24000) '9750)
Printer.CurrentX = 3500 - Printer.TextWidth(Me.VB_tjLabel(1).Caption & Me.VB_tjLabel(7).Caption) / 2
Printer.CurrentY = 300
Printer.Print Me.VB_tjLabel(1).Caption & Me.VB_tjLabel(7).Caption
Printer.CurrentX = 200
Printer.CurrentY = 1000
Printer.Print MyTab
Printer.CurrentY = 1000
Printer.CurrentX = 3000
Printer.Print MyTab1
Printer.CurrentY = 1000
Printer.CurrentX = 5500
Printer.Print "备 注"
Printer.Line (0, 800)-(7000, 800)
Printer.Line (0, 600 + 200)-(0, 2 * 600 + 200)
Printer.Line (2500, 600 + 200)-(2500, 2 * 600 + 200)
Printer.Line (5000, 600 + 200)-(5000, 2 * 600 + 200)
Printer.Line (7000, 600 + 200)-(7000, 2 * 600 + 200)
Do
Printer.Font.Size = 12
Printer.CurrentX = 200
Printer.CurrentY = Myn * 600 + 400
Printer.Print vb_TJMSFG.TextArray(TjfaIndex(i - 1, 1))
Printer.CurrentY = Myn * 600 + 400
Printer.CurrentX = 3100
Printer.Print vb_TJMSFG.TextArray(TjfaIndex(i - 1, 2))
Printer.CurrentX = 5500
Printer.Line (0, Myn * 600 + 200)-(7000, Myn * 600 + 200)
Printer.Line (0, Myn * 600 + 200)-(0, (Myn + 1) * 600 + 200)
Printer.Line (2500, Myn * 600 + 200)-(2500, (Myn + 1) * 600 + 200)
Printer.Line (5000, Myn * 600 + 200)-(5000, (Myn + 1) * 600 + 200)
Printer.Line (7000, Myn * 600 + 200)-(7000, (Myn + 1) * 600 + 200)
If Myn > 21 Then
Printer.Line (0, Myn * 600 + 600)-(7000, Myn * 600 + 600)
Printer.CurrentX = 3500 - Printer.TextWidth("第 页") / 2
Printer.CurrentY = Myn * 600 + 900
Printer.Print "第" & Printer.Page & "页"
Myn = 0
Printer.NewPage
End If
Myn = Myn + 1
i = i + 1
Loop Until i > vb_TJMSFG.rows
Printer.Line (0, Myn * 600 + 200)-(7000, Myn * 600 + 200)
Printer.CurrentX = 3500 - Printer.TextWidth("第 页") / 2
Printer.CurrentY = Myn * 600 + 300
Printer.Print "第" & Printer.Page & "页"
Printer.Font.Size = 10
Printer.CurrentX = 400
Printer.CurrentY = Myn * 600 + 600
Printer.Print "制表:*******公司 制表日期:" & Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日" & Space(2) & Format(Hour(Time), "0#") & ":" & Format(Minute(Time), "0#")
Printer.EndDoc
End SubFunction TjfaIndex(row As Integer, col As Integer) As Long
TjfaIndex = row * vb_TJMSFG.Cols + col
End Function''''vb_TJMSFG是一个MSFlexGrid
关于你的代码有几个地方想请教,有些地方不是很清楚,对于打印机的方法我也不是很了解。
1.Myn这个变量是干吗的?
2.VB_tjLabel(1)和VB_tjLabel(7) ,这两个标签你在程序中是为了做什么的,是数据表的标题吗?
3.DO前面的内容是为了打印数据做准备吗? 打出标题,注释等。然后画好表格吗?
4.DO ......LOOP之间的这段代码的设计思路是什么?
5.不是很清楚TjfaIndex()这个函数的设计构思。
最后再次感谢xiaoxiaoP大侠,希望可以解答上面疑惑。