我用datagrid1和ado连好了。可能正常显示SQL中的数据了。但我用什么控件或方法可以打印出我想要的内容?
具体点好吗。
谢!
或提供一点文章之类的。
具体点好吗。
谢!
或提供一点文章之类的。
解决方案 »
- 请问,MSHFlexGrid控件合并问题
- 如何得到安装文件的路径
- 本人是现在还是入门级别,还未到出血者,有个问题想问问大家~~~~~`````
- VB与VB.NET的问题
- VB6许可证补丁下载VB6滚轮补丁下载
- 玉女吹萧,不回帖下一个吹你!!!
- 想自己编写个视频转换工具,哪可以找到这方面资料?(100分)
- 有谁知道协力商霸系列的.vts文件是怎样操作的?
- Which book is classic in VB?
- 谁能给我讲一讲邮件客户端软件是如何发送邮件的(什麽smtp,pop3服务器了)?多谢
- VB中怎么做MID窗体的分隔呢 在不能的分隔快显示不同的内容,这个怎么做呢?
- 如何获得某网站某页面的html代码内容?
Public rowlab As Integer '定义一个公用变量Function prnt11(X As Integer, Y As Integer, Font As Single, txt As String, Val As Integer)
Dim str As String
Dim str1 As String
Dim str2 As String
Dim i As Integer
Printer.CurrentX = X
Printer.CurrentY = Y
Printer.FontBold = False
Printer.FontSize = Font
str = txt
str2 = str
i = 0
rowlab = 0
If Len(Trim(str)) = 0 Then
rowlab = 1 '待打印字符串为空的标志
Else
Do While Len(str) > 0
Printer.CurrentX = X
Printer.CurrentY = Y + rowlab * 240
rowlab = rowlab + 1
If Len(str) >= Val Then
str1 = Mid(str, 1, Val)
Printer.Print str1
i = i + 1
str = Mid(str2, i * Val + 1)
Else
Printer.Print str
Exit Do
End If
Loop
End If
End Function'---- 注: Prnt11函数原形:prnt11(X As Integer, Y As Integer, Font As Single, Txt As String, Val As Integer),其各参数含义如下:
'---- X、Y为待打印字符串左上角起始座标;
'---- Font为字体大小;
'---- Txt为待打印字符串;
'---- Val为字符串打印折行长度这是一个打印按钮代码,你可以修改一下数据库的信息调试打印!
Private Sub CmdPrnt_Click()
Dim fnt As Single
Dim pp As Integer
Dim stry As Integer, strx As Integer
Dim stry1 As Integer, strx1 As Integer, linw As Integer
Dim page1 As Integer, p As Integer, gridrow As Integer, ii As Integer
p = 0
ii = 1 'ii记录MSFGRID1表格同一记录内字段最大打印行
pp = 0 '开始页码
ss$ = "海南省邮政商函广告局仓库管理系统" ' 表头
Static a(4) As Integer
kan = 0
a(0) = 1200
a(1) = 2800
a(2) = 1800
a(3) = 1800
a(4) = 1800
page1 = 46 '定义每页行数
strx = 200
strx1 = 200
stry = 1400
stry1 = 1400
linw = 240 '定义行宽
fnt = 10 '定义字体大小
For i = 0 To 4
kan = kan + a(i)
Next
gridrow = Data1.Recordset.RecordCount If gridrow = 0 Then
MsgBox "无满足条件记录打印!"
Exit Sub
End If
Printer.FontName = "黑体"
dd = prnt11(3300, 700, fnt, ss$, 26) '打印标题
dd = prnt11(200, stry - 250, fnt, "物品 ID", 26)
dd = prnt11(1600, stry - 250, fnt, "物品名称", 26)
dd = prnt11(4180, stry - 250, fnt, "物品数量", 26)
dd = prnt11(5980, stry - 250, fnt, "库存时间", 26)
dd = prnt11(7780, stry - 250, fnt, "签收人员", 26)
Printer.Line (strx - 20, stry - 30)-(10460, stry - 30)
Printer.FontName = "宋体"
For j = 1 To gridrow '打印gridrow条记录
MSFGrid1.Row = j
strx = strx1
For i = 0 To 4 '打印0—4 列
MSFGrid1.Col = i
dd = prnt11(strx, stry, fnt, MSFGrid1.Text, IIf(i = 3, 13, 55))
If ii < rowlab Then
'ii记录同一记录内字段最大打印行
ii = rowlab
End If
strx = strx + a(i)
Next
p = p + ii
rowlab = ii
ii = 1 '重新初始化
If p > page1 Then
p = 0
strx = strx1
For n = 0 To 4
strx = strx + a(n)
Next
pp = pp + 1
stry = stry + rowlab * linw
foot$ = "第" + CStr(pp) + "页"
dd = prnt11(strx / 2, stry + 3 * linw, 10, foot$, 26)
stry = stry1
Printer.NewPage
Printer.FontName = "黑体"
dd = prnt11(3300, 700, fnt, ss$, 26) '打印标题
dd = prnt11(200, stry - 250, fnt, "物品 ID", 26)
dd = prnt11(1600, stry - 250, fnt, "物品名称", 26)
dd = prnt11(4180, stry - 250, fnt, "物品数量", 26)
dd = prnt11(5980, stry - 250, fnt, "库存时间", 26)
dd = prnt11(7780, stry - 250, fnt, "签收人员", 26)
Printer.FontName = "宋体"
strx = strx1
Else
stry = stry + rowlab * linw
End If
Next
If p < page1 Then
For p = 0 To page1 + 1
strx = strx1
Next
End If
strx = strx1
For n = 0 To 4
strx = strx + a(n)
Next
pp = pp + 1
foot$ = "第" + CStr(pp) + "页"
dd = prnt11(strx / 2, stry + 3 * linw, 10, foot$, 26)
Printer.EndDoc
End Sub
直接的用printer (代码繁琐)
强大的用水晶报表 (学习困难)
容易的用写excel (速度缓慢,并要求客户机有excel软件)
http://www.dapha.net/down/show.asp?classid=1&Nclassid=140