票据打印程序
我想将一些数据库中的信息按照单据上的格式打印到对应的空格中去,但我又不想用WORD中的邮件合并功能。请问在VB+DATA REPORT中如何设计这样的报表。本人工作需要每天要重复的用手写的方式将信息写在这些单据上,非常麻烦且容易出错,请高手指点。 --------------------编程问答-------------------- 用VBA。 --------------------编程问答-------------------- 我的打印机是专业的打印票据、运单的OKI,具体型号记不住了。我在VB中设计了个管理程序,所以打印也希望在VB中完成设计,请大家帮助下啊。 --------------------编程问答-------------------- 我对打印不太熟悉,请问在VB中可不可以在FORM中用一些线条控件来划出票据的大小,然后将信息输入到相应的位置上,来实现打印呢? --------------------编程问答-------------------- 固定的表格算好每个标题名称后面的位置, 用Printer.CurrentX定位不就好啦.
Printer.print本身就很单纯,也不过就是一小张固定格式的小票, 杀鸡何必非用牛刀不可 ?
当然你用空格来补每个标题之间的空白也可.
--------------------编程问答-------------------- 用printer对象写打印代码吧
printer.currentx=1000
printer.currenty=1000
printer.print 要打印的内容 --------------------编程问答-------------------- 将数据库中的记录连打怎么办? --------------------编程问答-------------------- 循环,打完换页Printer.NewPage。 --------------------编程问答-------------------- 做一个与单据大小相仿的FORM,在要填充的地方放置LABEL控件,用数据库的记录填充LABEL控件,调用PRINTFORM打印就行了。 --------------------编程问答-------------------- PRINTFORM打印会把窗体背景也给打印出来,你放的标签,按钮全都被打印了,票据打印只打方案,不打印图像的!
你可以制作一个模块,专门定模板,定义打印的元素,位置,字体,大小等,然后在这个模块中打印这些元素 --------------------编程问答-------------------- 票据打印只打文字,不打印图像的!
做一个模块,可以随时定义和修改打印方案,打印不同的东西,满足不同的需求! --------------------编程问答-------------------- 打印的时候,就是按Leftie、cbm666、ccq17说的那样,枚举所有要打印的元素。 --------------------编程问答-------------------- FORM上面要什么才放什么,背景按钮之类的不需要的都可以去掉,在别的FORM中进行打印就行了。这样做的好处是直观,所见即所得,要变动的话,在FORM上改就行了。 --------------------编程问答-------------------- 你可以定义一个结构类型,分别包括要打印的文字内容(要做到更灵活些,可以使用项目取数的方法,但这样就比较复杂了,难度也高了许多),打印位置(打印区域),字体,样式等,然后再定义一个集合或数组,打印的时候循环按这些集合(或数组)中定义的内容打印就行了
比如:
Type PrintObject--------------------编程问答-------------------- 用printer打印如:
pText As String
pRECT As RECT
pFont As StdFont
End Type
Dim m_PrintItems() As PrintObject
'设置要打印的内容
'打印
Dim i As Long
For i = 0 To UBound(m_PrintItems)
'去打印m_PrintItems(i)所定义的内容就行了
PrintItem Printer, m_PrintItems(i)
Next
'打印项目,可以打印到打印机,也可以打印到预览窗口上,只要设置obj对象就行了
Sub PrintItem(obj As Object, p As PrintObject)
Set obj.Font = p.pFont
obj.CurrentX = p.pRECT.Left
obj.CurrentY = p.pRECT.Top
'当然要做得更好些,需要考虑打印范围是否超出了打印区域pRECT
obj.Print p.pText
End Sub
nLeft = lcsleft
nTop = lcstop
Printer.Width = 13904 '' 13904
Printer.Height = 3800 '' 3800
Printer.Orientation = 1
If MsgBox("请检查打印机是否接电与装纸,开始打印吗?", _
vbYesNo + vbQuestion) = vbYes Then
Printer.Font.Size = 14
' Printer.CurrentX = nLeft + 6250
' Printer.CurrentY = nTop
' Printer.Print ADOTemp![编号]
Printer.CurrentX = nLeft - 300
Printer.CurrentY = nTop + 1100
Printer.Print ADOTemp![用户姓名]
Printer.CurrentX = nLeft + 3300
Printer.CurrentY = nTop + 1100
Printer.Print ADOTemp![地区名称]
Printer.CurrentX = nLeft - 300
Printer.CurrentY = nTop + 1100 + 490 * 1
Printer.Print ADOTemp![上网帐号]
Printer.CurrentX = nLeft + 5700
Printer.CurrentY = nTop + 1100 + 490 * 1
Printer.Print ADOTemp![联系电话]
lcsprinter1
Printer.CurrentX = nLeft - 300
Printer.CurrentY = nTop + 1100 + 490 * 3
Printer.Print ADOTemp![地址]
Printer.CurrentX = nLeft - 300
Printer.CurrentY = nTop + 1000 + 490 * 4
Printer.Print ADOTemp![宽带类型]
Printer.CurrentX = nLeft - 300
Printer.CurrentY = nTop + 1000 + 490 * 5
Printer.Print ADOTemp![受理时间]
Printer.CurrentX = nLeft + 4700
Printer.CurrentY = nTop + 1000 + 490 * 5
Printer.Print ADOTemp![受理工号]
' Printer.CurrentX = nLeft - 300
' Printer.CurrentY = nTop + 1100 + 490 * 6
' Printer.Print ADOTemp![机型]
' Printer.CurrentX = nLeft - 300
' Printer.CurrentY = nTop + 1100 + 490 * 7
' Printer.Print ADOTemp![显示器]
End If
Printer.EndDoc
补充:VB , 数据库(包含打印,安装,报表)