vb6.0中如何打印datagrid控件中显示出的表格及信息,有人说用下面的代码,但我试了不行,请大家帮帮忙!
Option Explicit
Private Sub Command1_Click()
Dim I As Long, J As Long, K As Long
Dim PrintString As String
For I = 0 To Data1.Recordset.RecordCount - 1
If K = DBGrid1.VisibleRows Then
DBGrid1.Scroll 0, DBGrid1.VisibleRows
K = 0
End If
For J = 0 To DBGrid1.Columns.Count - 1
PrintString = PrintString &
DBGrid1.Columns(J).CellText(DBGrid1.RowBook(K)) & "/"
Next
Printer.Print PrintString
PrintString = ""
K = K + 1
DoEvents
Next
End SubPrivate Sub Form_Activate()
Data1.Recordset.MoveLast
Data1.Recordset.MoveFirst
End Sub
Option Explicit
Private Sub Command1_Click()
Dim I As Long, J As Long, K As Long
Dim PrintString As String
For I = 0 To Data1.Recordset.RecordCount - 1
If K = DBGrid1.VisibleRows Then
DBGrid1.Scroll 0, DBGrid1.VisibleRows
K = 0
End If
For J = 0 To DBGrid1.Columns.Count - 1
PrintString = PrintString &
DBGrid1.Columns(J).CellText(DBGrid1.RowBook(K)) & "/"
Next
Printer.Print PrintString
PrintString = ""
K = K + 1
DoEvents
Next
End SubPrivate Sub Form_Activate()
Data1.Recordset.MoveLast
Data1.Recordset.MoveFirst
End Sub
解决方案 »
- VB 如何修改VB常用的控件后生成一个新的控件
- 怎样截取窗体的某一部分保存为图片
- vb可以同时对一个mdb数据库中两张表进行操作吗?
- 在使用WEBBROWSER时怎么得到HTTP请求与返回的具体内容
- 极简单的水晶报表问题,可是我遇到了麻烦......
- 能否将一个控件总是显示在最上方?
- 在XP下如何获得系统可用的串口和并口信息,获得串口数量,参数
- 关于加密算法的演示?
- Timer撰写防弹跳程序代码
- 头痛死了,VBA如何将已打开的记事本中的文本复制到Excel中,然后将记事本关闭
- mshflexgrid:用什么方法可以触发列头的右击事件,想通过它来完成列的隐藏和显示?
- 50分求解新手问题:vb中在一过程中如何调用另一过程的变量
http://zhidao.baidu.com/question/4165080.html
报表打印代码:
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)
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontSize = fnt
Printer.Print txt0
End Function Private Sub cmdPrint_Click()
Adodc1.Recordset.MoveFirst
For I = 0 To zsl - 1
For j = 0 To 7
dy_dm(I, j) = Adodc1.Recordset(j)
Next j
Adodc1.Recordset.MoveNext
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
Printer.Line (500, 695 + (I - p * 80) * 180)-(10000, 695 + (I - p * 80) * 180)
End If
Next I
If zsl - p * 80 > 80 Then
Printer.Line (500, 695 + 180 * 80)-(10000, 695 + 180 * 80)
Printer.NewPage
End If
Next p
Printer.EndDoc ' 打印完成。
Cls
End Sub Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=jwl_dbf"
Adodc1.RecordSource = "select cs.js_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.备件代码"
Adodc1.Refresh
DataGrid1.Refresh
zsl = Adodc1.Recordset.RecordCount
Adodc3.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=jwl_dbf"
Adodc3.RecordSource = "select sum(结存金额) as hj from jwl_jiec"
Adodc3.Refresh
End Sub 以上供参考。其它请参考西安交通大学出版社出版的“VISUAL BASIC 6.0 高级编程技巧-ADO数据访问篇“