📄 modprint.bas
字号:
Attribute VB_Name = "modPrint"
Public nID As Long
Public cJE As Currency, cFK As Currency
Public sCard As String, sSite As String, sUser As String
Public Condata As String, Constr As String
Public Sub Main()
'没有参数时为空
If Command = "" Then
MsgBox "没有数据,无法打印! ", vbInformation, "提示:By Yusilong."
Else
Constr = ";UID=;PWD=BXS3s44yiA"
Condata = App.Path & "\SystemData.dat"
StartPrint Command
End If
'显示打印对话框
PrintForm.Show 1
End Sub
Public Sub StartPrint(strCommand As String)
Dim lLengther As Integer
Dim StartNO As Integer, EndNO As Integer
Dim StartJE As Integer, EndJE As Integer
Dim StartFK As Integer, EndFK As Integer
Dim StartST As Integer, ENDST As Integer
Dim StartUS As Integer, EndUS As Integer
strCommand = strCommand
lLengther = Len(strCommand)
StartNO = InStr(4, strCommand, "NO=", vbTextCompare)
StartJE = InStr(StartNO + 3, strCommand, "JE=", vbTextCompare)
StartFK = InStr(StartJE + 3, strCommand, "FK=", vbTextCompare)
StartST = InStr(StartFK + 3, strCommand, "ST=", vbTextCompare)
StartUS = InStr(StartST + 3, strCommand, "US=", vbTextCompare)
'赋值
nID = Val(Mid(strCommand, 4, StartNO - 3))
cJE = Val(Mid(strCommand, StartJE + 3, StartFK - StartJE - 3))
cFK = Val(Mid(strCommand, StartFK + 3, StartST - StartFK - 3))
sCard = Mid(strCommand, StartNO + 3, StartJE - StartNO - 3)
sSite = Mid(strCommand, StartST + 3, StartUS - StartST - 3)
sUser = Mid(strCommand, StartUS + 3, lLengther - StartUS)
End Sub
Public Sub PrintSheet()
On Error Resume Next
'打印格式
Dim bExit As Boolean
Dim DB As Database, EF As Recordset
Set DB = OpenDatabase(Condata, False, False, Constr)
Set EF = DB.OpenRecordset("Select * From tmpSell Where 座位='" & sSite & "'", dbOpenSnapshot)
Dim lPaperCountS As Integer, lPaperCount As Integer
Dim lCurrent As Integer
If EF.BOF And EF.EOF Then '没有记录时 退出
EF.Close
DB.Close
Exit Sub
Else
lPaperCount = 0
Do While Not EF.EOF
lPaperCount = lPaperCount + 1
EF.MoveNext
Loop
EF.MoveFirst
End If
'计算总页数
lPaperCountS = lPaperCount / 15
If (lPaperCount Mod 15) <> 0 Then '正除时不加0
lPaperCountS = lPaperCountS + 1
End If
If lPaperCountS = 0 Then
lPaperCountS = lPaperCountS + 1
End If
Dim x As Integer
Dim sPN As String
Dim cDJ As String
Dim lSL As String
Dim cJE As String
Dim H As Integer
'开始打印
For x = 1 To lPaperCountS
' Set EF = DB.OpenRecordset("Select * From tmpSell Where 座位='" & sSite & "'", dbOpenSnapshot)
Printer.Print ""
Printer.Print ""
Printer.FontSize = 12
Printer.FontName = "宋体"
Printer.FontBold = True
Printer.CurrentX = 0
Printer.CurrentY = 2100
'打印头
Printer.Print " " & Format(Date, "Long Date") & " " & sSite
'打印菜单
Printer.CurrentY = 3180
H = 1
If x = 1 Then
EF.MoveFirst
Else
EF.MoveFirst
EF.Move ((x - 1) * 15)
End If
'打印所有菜单
Do While Not EF.EOF
sPN = "": cDJ = 0: lSL = 0: cJE = 0 '清空
If EF.EOF Then
bExit = True
Exit For '退出
End If
If H > 15 Then
Exit Do
End If
If Not IsNull(EF.Fields("名称")) Then '不为空时
sPN = EF.Fields("名称")
End If
If Not IsNull(EF.Fields("单价")) Then '不为空时
cDJ = Trim(Str(EF.Fields("单价")))
End If
If Not IsNull(EF.Fields("数量")) Then '不为空时
lSL = Trim(Str(EF.Fields("数量")))
End If
If Not IsNull(EF.Fields("金额")) Then '不为空时
cJE = Trim(Str(EF.Fields("金额")))
End If
Printer.CurrentY = 2800 + (H * 300)
Printer.Print " " & sPN
Printer.CurrentY = 2800 + (H * 300)
Printer.CurrentX = 2000
Printer.Print cDJ
Printer.CurrentY = 2800 + (H * 300)
Printer.CurrentX = 3000
Printer.Print lSL
Printer.CurrentY = 2800 + (H * 300)
Printer.CurrentX = 4200
Printer.Print cJE
H = H + 1
EF.MoveNext
Loop
Printer.CurrentY = 8100
Printer.CurrentX = 1500
Printer.Print " " & sUser
Printer.CurrentY = 8100
Printer.CurrentX = 4700
Printer.Print cFK & "元" '打印合计付款
'弹出纸
Printer.EndDoc
'等待完毕继续
'If MsgBox("继续打印!(是/否)? ", vbInformation + vbYesNo, "提示:By Yusilong.") = vbNo Then
' bExit = True
'End If
If bExit = True Then '无记录时退出
Exit For
End If
'EF.Close
Next
EF.Close
DB.Close
'打印完成
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -