请问各位大侠,如何在VB中实现对ACCESS数据库的数据表的打印,要求不但要打印出数据还要打印出表格。我查过以前的帖子了,说的不不详细,很模糊,希望可以给出具体的方法,或者说的详细些,小弟不甚感激。

解决方案 »

  1.   

    我的方法先用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.EndDoc
    End SubFunction TjfaIndex(row As Integer, col As Integer) As Long
    TjfaIndex = row * vb_TJMSFG.Cols + col
    End Function''''vb_TJMSFG是一个MSFlexGrid
      

  2.   

    恩。非常感谢xiaoxiaoP(每天都是重新开始)。
    关于你的代码有几个地方想请教,有些地方不是很清楚,对于打印机的方法我也不是很了解。
    1.Myn这个变量是干吗的?
    2.VB_tjLabel(1)和VB_tjLabel(7) ,这两个标签你在程序中是为了做什么的,是数据表的标题吗?
    3.DO前面的内容是为了打印数据做准备吗? 打出标题,注释等。然后画好表格吗?
    4.DO ......LOOP之间的这段代码的设计思路是什么?
    5.不是很清楚TjfaIndex()这个函数的设计构思。
    最后再次感谢xiaoxiaoP大侠,希望可以解答上面疑惑。
      

  3.   

    6.printReport(ByVal MyTab As String, ByVal MyTab1 As String)这个函数里面的2个参数各代表什么?