如题,想知道怎样用vb做票据打印的功能,有例子最好,在线等,得到答案就给分(打印机是针式的)
另外,当打印金额超过了票据的上限,需要分开打,那么又如何处理,希望高人指点,最好给个例子,谢谢
另外,当打印金额超过了票据的上限,需要分开打,那么又如何处理,希望高人指点,最好给个例子,谢谢
解决方案 »
- Recordset Filter 用法问题
- vb 从A窗体中打开B窗体 数据库连接问题
- 关于数组定义的问题
- 求助,注册表操作,高分100
- 我用FileSystemObject获取硬盘驱动器时怎么提示"active 部件不能创建对象"
- -------数---据---库---远---程---连---接-------
- 有关二次开发的几个问题
- 怎么用vb判断文件是否上传完毕?
- 请问用Web Browser窗体,它其中的Address栏为什么不能自动保存已经输入过的网页地址?是否要自己写代码保存?
- ADO.recordset如何判断是否已经关闭?
- 大家好。。我是VC那边过来,问大家一个VB引用exe文件的问题的。
- 把老外的那个CSocketMaster类封装了一下,弄成了一个高仿MSWINSCK.OCX的自定义控件,方便使用
'2,可用printer打印对象写打印语句
printer.currentx=1000
printer.currenty=1000
printer.print "单位:" & text1.text
printer.currentx=1000
printer.currenty=2000
printer.print "金额:" & text2.text
On Error GoTo PrintErr
Dim PrnUnit As Double
Dim StartX As Long '打印机X初始坐标设置
Dim StartY As Long '打印机Y初始坐标设置
'***********************************
'1毫米=0.03937英寸
'1英寸=1440提(twips)
'A4纸=210毫米*297毫米
'***********************************
Printer.ScaleMode = vbTwips
PrnUnit = 0.03937 * 1440 '设置最小打印单位
Printer.Width = 210 * PrnUnit '初始化打印纸的宽度
Printer.Height = 297 * PrnUnit '初始化打印纸的高度 Printer.ScaleWidth = 210 * PrnUnit
Printer.ScaleHeight = 297 * PrnUnit
StartX = 2
StartY = 5
'标题
Printer.CurrentX = (StartX + 90) * PrnUnit
Printer.CurrentY = (StartY + 5) * PrnUnit
Printer.FontBold = True '是否打印为粗体
Printer.fontsize = 15 '设置打印字体大小
Printer.Print "收款单"
Printer.fontsize = 11
Printer.FontBold = False
'单据编号
Printer.CurrentX = (StartX + 5) * PrnUnit
Printer.CurrentY = (StartY + 15) * PrnUnit
Printer.Print "收款单编号:" & Trim(txtcVouchID.Text)
'....
'....
Printer.EndDoc '开始把上述输出送给打印机
Exit Sub
PrintErr:
MsgBox "单据打印失败,错误原因为:" & Err.Description, vbExclamation, "提示"
Exit Sub
End Sub
如果你的票据不是标准的纸张,就不符合你的要求。针式打印是按行打印的,直接打印到并口,可以实现行打印,
不过要定好打印字体,要多次调整打印位置,直到对齐,如下是原理代码:
Open "LPT1" For Output As #1
Msg = "2008 10 26" '如果票上印有_____年____月___日,则打这个
Print #1, Msg
'继续打印其他行...
Close #1
1.设置一个打印的窗体,窗体上的控件的排列与间距与你的真实表据是一样.用网格用画线控件,文件用 LABEL ,图片用IMAGE, 用游标卡尺去量吧. :)
控件要有个命名规则,例如,前三位是PRN,或在名间中间设置一个标志位,如第四们是P..等等,一句话.要打印的控件与非打印的控件要标识出来.
2.根据命名规则,搜索打印窗体上所有控件.如果是线,则取X1,Y1,X2,Y2,长度,线型,宽度.如果是LABEL,则取位置位置,字型,字号..
然后,向打印机 PRINT 发送这些信息.最后,发送一个换页.
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(App.Path & "\***.xls")
Set xlSheet = xlBook.Worksheets("Sheet1")
On Error Resume Next
xlSheet.Range("a1").Value = Combo1
xlSheet.Range("a2").Value = Text1.Text
xlSheet.Range("a3").Value = DTPicker1
xlSheet.Range("a4").Value = "中国"
xlSheet.Range("a5").Select
xlSheet.Pictures.Insert(*.jpg").Copy
xlSheet.Pictures.Height = xlSheet.Range("A1:A4").Height
xlSheet.Pictures.Width = xlSheet.Range("A1:A4").Width xlApp.Application.Visible = True
xlSheet.PrintPreview '预览
xlApp.DisplayAlerts = False
'xlApp.DisplayAlerts = True '退出时不提示保存
xlBook.Close
xlApp.Quit
xlApp.DisplayAlerts = True
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
MsgBox "正在打印 请稍后。。"End Sub代码就是这样的, 你说的分单的问题利用程序控制,这样做的好处就是随时可以调整打印的格式不用总是修改程序
减轻你以后的维护量,要不调整打印位置都累死你。
分单的话设置好金额上限(例如10000) 让他输入一个金额在txte1(0) TEXT1(1)值最大10000 每打印一次就用text1(0)-txte1(1) 直到为0
大概就是这样不难可以试试
用xls不错,但是在老机器上调用慢