麻烦各位给我看一下下面程序是否错误及有啥不合理的地方。
运行到Open "lpt1" For Output As #i的时候会报错,提示“文件未找到”是怎么回事
我这里没有打印机Private Sub Command4_Click()
On Error GoTo errors:
If BoxInfo.sPrintBill = 1 Then
If intChgMode = CHG_MODE_CENTER Then
strSQL = " 收费凭据 " & Chr$(10) & Chr$(10) & _
"卡 号: " & lblInfo(0).Caption & Chr$(10) & _
"卡 类 型: " & lblInfo(1).Caption & Chr$(10) & _
"车牌号码: " & cboPrevCarNO(1).Text & tboxPrevCarNo(2).Text & Chr$(10) & _
"入场时间: " & lblInfo(4) & Chr$(10) & _
"收费时间: " & lblInfo(5) & Chr$(10) & _
"收费员名: " & LoginInfo.sUserName & Chr$(10) & _
"收费金额: " & tMoney(2).Text & "元" & Chr$(10) & _
Chr$(10)
Else
strSQL = " 收费凭据 " & Chr$(10) & Chr$(10) & _
"卡 号: " & lblInfo(0).Caption & Chr$(10) & _
"卡 类 型: " & lblInfo(1).Caption & Chr$(10) & _
"车牌号码: " & lblInfo(2).Caption & Chr$(10) & _
"入场时间: " & lblInfo(4).Caption & Chr$(10) & _
"收费时间: " & lblInfo(5).Caption & Chr$(10) & _
"收费员名: " & LoginInfo.sUserName & Chr$(10) & _
"收费金额: " & tMoney(2) & "元" & Chr$(10) & _
Chr$(10)
End If
Dim i As Integer
i = Int(Rnd() * 10)
Open "lpt1" For Output As #i
Print #i, Chr$(27) + "@" '初始化打印机
Print #i, Chr$(28) + Chr$(38) '进入汉字方式
Print #i, strSQL
Print #i, Chr$(27) + Chr$(112) + Chr$(0) + Chr$(50) + Chr$(50) '打开钱箱
Close #i
'End If
End If
Exit Sub
errors:
Debug.Print Err.Description
End Sub
运行到Open "lpt1" For Output As #i的时候会报错,提示“文件未找到”是怎么回事
我这里没有打印机Private Sub Command4_Click()
On Error GoTo errors:
If BoxInfo.sPrintBill = 1 Then
If intChgMode = CHG_MODE_CENTER Then
strSQL = " 收费凭据 " & Chr$(10) & Chr$(10) & _
"卡 号: " & lblInfo(0).Caption & Chr$(10) & _
"卡 类 型: " & lblInfo(1).Caption & Chr$(10) & _
"车牌号码: " & cboPrevCarNO(1).Text & tboxPrevCarNo(2).Text & Chr$(10) & _
"入场时间: " & lblInfo(4) & Chr$(10) & _
"收费时间: " & lblInfo(5) & Chr$(10) & _
"收费员名: " & LoginInfo.sUserName & Chr$(10) & _
"收费金额: " & tMoney(2).Text & "元" & Chr$(10) & _
Chr$(10)
Else
strSQL = " 收费凭据 " & Chr$(10) & Chr$(10) & _
"卡 号: " & lblInfo(0).Caption & Chr$(10) & _
"卡 类 型: " & lblInfo(1).Caption & Chr$(10) & _
"车牌号码: " & lblInfo(2).Caption & Chr$(10) & _
"入场时间: " & lblInfo(4).Caption & Chr$(10) & _
"收费时间: " & lblInfo(5).Caption & Chr$(10) & _
"收费员名: " & LoginInfo.sUserName & Chr$(10) & _
"收费金额: " & tMoney(2) & "元" & Chr$(10) & _
Chr$(10)
End If
Dim i As Integer
i = Int(Rnd() * 10)
Open "lpt1" For Output As #i
Print #i, Chr$(27) + "@" '初始化打印机
Print #i, Chr$(28) + Chr$(38) '进入汉字方式
Print #i, strSQL
Print #i, Chr$(27) + Chr$(112) + Chr$(0) + Chr$(50) + Chr$(50) '打开钱箱
Close #i
'End If
End If
Exit Sub
errors:
Debug.Print Err.Description
End Sub
Open "lpt1" For Output As #i
......
close 如果没有打印机,好象通常要报错,甚至假死....
那用再并口上能否成功呢?
具体查一下技术手册。
好象记得沈善居上面有关于VB并口操作的源码,它也是用了一个c写的dll,你去找找吧....
Dim prn As Printer
For Each prn In Printers
Combo3.AddItem prn.DeviceName & " on " & prn.Port
Next prn
SelectDefaultPrinter Combo3
If Combo3.Text = "" Then MsgBox "请准备好打印机!", vbOKOnly, "提示"生成打印文件
Open "c:\temp\yy.txt" For Output As #1
Print #1,
Print #1, Tab(28); "收据"
Print #1, Tab(4); "单据号:" & Trim(djh.Caption)
....
打印 Dim Submit As String
Dim prn As Printer
Submit = UCase(Trim("c:\temp\yy.txt"))
If Not IsFile(Submit) Then
MsgBox "找不到文件: " & Submit, vbExclamation, "文件错误"
Exit Sub
End If
For Each prn In Printers
If InStr(Combo3, prn.DeviceName) = 1 And Right(Combo3, Len(prn.Port)) = prn.Port Then
'prn.CurrentX = 0
'prn.CurrentY = 0
'prn.Font = "宋体"
'prn.FontSize = 14
Call SpoolFile(Submit, prn.DeviceName)
Exit For
End If
Next prn