如题,想知道怎样用vb做票据打印的功能,有例子最好,在线等,得到答案就给分(打印机是针式的)
另外,当打印金额超过了票据的上限,需要分开打,那么又如何处理,希望高人指点,最好给个例子,谢谢

解决方案 »

  1.   

    '1,一般是单据行数大于纸张约定的行数需要分页打印
    '2,可用printer打印对象写打印语句
    printer.currentx=1000
    printer.currenty=1000
    printer.print "单位:" & text1.text
    printer.currentx=1000
    printer.currenty=2000
    printer.print "金额:" & text2.text  
      

  2.   

    Private Sub VouchPrint()
    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
      

  3.   

    LZ可以先用Excel设计票据打印的模板,然后在VB里调用。至用VB如果操作Excel,现成的代码很多。
      

  4.   

    用Printer对象来打印是按页的,也就是说遇到回车或换行就进一页纸,
    如果你的票据不是标准的纸张,就不符合你的要求。针式打印是按行打印的,直接打印到并口,可以实现行打印,
    不过要定好打印字体,要多次调整打印位置,直到对齐,如下是原理代码:
    Open "LPT1" For Output As #1
    Msg = "2008   10   26" '如果票上印有_____年____月___日,则打这个
    Print #1, Msg
    '继续打印其他行...
    Close #1
      

  5.   

    思路:
    1.设置一个打印的窗体,窗体上的控件的排列与间距与你的真实表据是一样.用网格用画线控件,文件用 LABEL ,图片用IMAGE,  用游标卡尺去量吧.   :)
      控件要有个命名规则,例如,前三位是PRN,或在名间中间设置一个标志位,如第四们是P..等等,一句话.要打印的控件与非打印的控件要标识出来.
    2.根据命名规则,搜索打印窗体上所有控件.如果是线,则取X1,Y1,X2,Y2,长度,线型,宽度.如果是LABEL,则取位置位置,字型,字号..
    然后,向打印机 PRINT 发送这些信息.最后,发送一个换页.
      

  6.   

    Private Sub Command2_Click()
              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 
    大概就是这样不难可以试试 
      

  7.   

    用printer直接打印快,但是要量距离和调整
    用xls不错,但是在老机器上调用慢