⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmprint.frm

📁 星级酒店管理系统(附带系统自写控件源码)
💻 FRM
📖 第 1 页 / 共 2 页
字号:
  End If
  
 '打印查询内容
  PrintGrid
  
End Sub

Private Sub cmdRefresh_Click()

  '给出需要飞单的菜单明细
   ConfigGrid

End Sub

Private Sub Form_Load()

  GetFormSet Me, Screen
  IsRunning = False
 '刷新飞单列表
  ConfigGrid
  
End Sub

Private Sub Form_Unload(Cancel As Integer)

  SaveFormSet Me
  Timer1.Interval = 0
  
End Sub

Private Sub Timer1_Timer()

   If IsRunning = True Then Exit Sub
   
  '给出需要飞单的菜单明细
   ConfigGrid
   
End Sub

Private Sub ConfigGrid()

   On Error GoTo Err_init

   Dim sSQL As String
   
   IsRunning = True
   shpCirCle.Visible = True            '显示操作状态
   shpCirCle.Refresh
   
  '按每餐桌打印
   sSQL = "Select * From ptCust Order By Site,DType"
       
   Dim DB As Connection, EF As Recordset
   
   lstPro.ListItems.Clear
    
   Set DB = CreateObject("ADODB.Connection")
   Set EF = CreateObject("ADODB.Recordset")
       DB.Open Constr
       EF.Open sSQL, DB, adOpenStatic, adLockReadOnly, adCmdText
       If Not (EF.EOF And EF.BOF) Then
          Do While Not EF.EOF()
               InsertToMenuList lstPro, EF.Fields("ID"), EF.Fields("CID"), EF.Fields("Name"), _
                   EF.Fields("Price"), EF.Fields("Quanty"), EF.Fields("JGF"), EF.Fields("Amos"), _
                   EF("AtTime"), NullValue(EF("DOper")), EF("Site")
               EF.MoveNext
            Loop
        End If
        EF.Close
        Set EF = Nothing
        DB.Close
        Set DB = Nothing
        IsRunning = False
        shpCirCle.Visible = False
        
        Exit Sub
Err_init:
 IsRunning = False
 shpCirCle.Visible = False
 MsgBox "列出飞单内容错误!请按『刷新』按钮刷新。" & vbCrLf & vbCrLf & Err.Description, vbCritical
 
End Sub

Private Sub InsertToMenuList(tmpView As ListView, sText1 As String, sText2 As String, sText3 As String _
      , sText4 As String, sText5 As String, sText6 As String, sText7 As String, sText8 As String _
      , sText9 As String, sText10 As String)

   On Error Resume Next
   Dim lstTmp As ListItem
   Set lstTmp = tmpView.ListItems.Add
       lstTmp.Text = sText1
       lstTmp.SubItems(1) = sText2
       lstTmp.SubItems(2) = sText3
       lstTmp.SubItems(3) = Format(sText4, "0.0")
       lstTmp.SubItems(4) = Format(sText5, "0.0")
       lstTmp.SubItems(5) = Format(sText6, "0.0")
       lstTmp.SubItems(6) = Format(sText7, "0.0")
       lstTmp.SubItems(7) = sText8
       lstTmp.SubItems(8) = sText9
       lstTmp.SubItems(9) = sText10
       
End Sub

Private Sub Timer2_Timer()

   If IsPrinting = True Then Exit Sub
   
  '打印飞单的菜单明细
   PrintGrid

End Sub

'打印查询到的菜单明细
Private Sub PrintGrid()

   On Error GoTo Err_init

   Dim sSQL As String
   
   IsPrinting = True
   
  '按每餐桌打印,先点先打
   sSQL = "Select * From ptCust Order By Site,DType,ID"
       
   Dim DB As Connection, EF As Recordset
   Dim tmpEF As Recordset
   Set DB = CreateObject("ADODB.Connection")
   Set EF = CreateObject("ADODB.Recordset")
   Set tmpEF = CreateObject("ADODB.Recordset")
       DB.Open Constr
       EF.Open sSQL, DB, adOpenStatic, adLockOptimistic, adCmdText
   
   Dim sDupSite As String
   Dim xTmpTop As Long                        '重复高度
       sDupSite = ""
   Set tmpEF = EF.Clone                       '克隆一个相同的记录集
       If Not (tmpEF.EOF And tmpEF.BOF) Then
          Do While Not tmpEF.EOF()
             '打印当前的列表
              'If PrintSheet(tmpEF("ID")) = False Then
                 '打印不正常时退出。
              '    Exit Do
              'End If
              '相同座位时不重复打印
               If sDupSite <> tmpEF("Site") Then
                  If sDupSite <> "" Then
                     Printer.Line (xSmallLeft, xSmallTop + 18 + xTmpTop)-(xSmallLeft + 70, xSmallTop + 18 + xTmpTop), 2, BF
                     Printer.CurrentX = xSmallLeft + 40
                     Printer.CurrentY = xSmallTop + 20 + xTmpTop
                     Printer.Print "时间:" & Time
                     Printer.EndDoc
                  End If
                  xTmpTop = 0
                  sDupSite = tmpEF("Site")
                  Printer.ScaleMode = 6    '厘米
                  Printer.Font = "黑体"
                  Printer.FontBold = True
                  Printer.FontSize = "10"
                  Printer.CurrentX = xSmallLeft
                  Printer.CurrentY = xSmallTop
                  Printer.Print "座位:" & tmpEF("Site")
                  Printer.CurrentX = xSmallLeft + 40
                  Printer.CurrentY = xSmallTop
                  Printer.Print "操作员:" & tmpEF("DOper")
                  Printer.Font = "宋体"
                  Printer.FontSize = "9"
                  Printer.CurrentX = xSmallLeft
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "菜名"
                  Printer.CurrentX = xSmallLeft + 15
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "单位"
                  Printer.CurrentX = xSmallLeft + 23
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "单价"
                  Printer.CurrentX = xSmallLeft + 32
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "数量"
                  Printer.CurrentX = xSmallLeft + 39
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "加工"
                  Printer.CurrentX = xSmallLeft + 46
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "金额"
                  Printer.CurrentX = xSmallLeft + 55
                  Printer.CurrentY = xSmallTop + 6
                  Printer.Print "菜分类"
                End If
                Printer.CurrentX = xSmallLeft
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("Name")
                Printer.CurrentX = xSmallLeft + 18
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("Unit")
                Printer.CurrentX = xSmallLeft + 22
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("Price")
                Printer.CurrentX = xSmallLeft + 32
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("Quanty")
                Printer.CurrentX = xSmallLeft + 40
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("JGF")
                Printer.CurrentX = xSmallLeft + 44
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("Amos")
                Printer.CurrentX = xSmallLeft + 55
                Printer.CurrentY = xSmallTop + 12 + xTmpTop
                Printer.Print tmpEF("DType")
               '删除当前记录
                tmpEF.Delete adAffectCurrent
                tmpEF.MoveNext
                xTmpTop = xTmpTop + 6
          Loop
        End If
        If sDupSite <> "" Then
            Printer.Line (xSmallLeft, xSmallTop + 18 + xTmpTop)-(xSmallLeft + 70, xSmallTop + 18 + xTmpTop), 2, BF
            Printer.CurrentX = xSmallLeft + 40
            Printer.CurrentY = xSmallTop + 20 + xTmpTop
            Printer.Print "时间:" & Time
            Printer.EndDoc
        End If
        EF.Close
        tmpEF.Close
        Set EF = Nothing
        Set tmpEF = Nothing
        DB.Close
        Set DB = Nothing
        IsPrinting = False
        
        Exit Sub
Err_init:
 IsPrinting = False
 MsgBox "打印飞单内容错误!请按『打印』按钮。" & vbCrLf & vbCrLf & Err.Description, vbCritical
 
End Sub

Private Function PrintSheet(nMenuID As Long) As Boolean

     On Error GoTo PrintErr
     
     Dim pDB As Connection
     Dim pRS As Recordset
     Dim sTMp As String
     Set pDB = CreateObject("ADODB.Connection")
     Set pRS = CreateObject("ADODB.Recordset")
         pDB.Open Constr
         pRS.Open "Select * from ptCust Where ID=" & nMenuID, pDB, adOpenStatic, adLockOptimistic, adCmdText
     If Not (pRS.EOF And pRS.BOF) Then
        Printer.ScaleMode = 6    '厘米
        Printer.Font = "黑体"
        Printer.FontBold = True
        Printer.FontSize = "10"
        Printer.CurrentX = xSmallLeft
        Printer.CurrentY = xSmallTop
        Printer.Print "座位:" & pRS("Site")
        Printer.CurrentX = xSmallLeft + 40
        Printer.CurrentY = xSmallTop
        Printer.Print "操作员:" & pRS("DOper")
        Printer.Font = "宋体"
        Printer.FontSize = "9"
        Printer.CurrentX = xSmallLeft
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "菜名"
        Printer.CurrentX = xSmallLeft + 15
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "单位"
        Printer.CurrentX = xSmallLeft + 23
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "单价"
        Printer.CurrentX = xSmallLeft + 32
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "数量"
        Printer.CurrentX = xSmallLeft + 39
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "加工"
        Printer.CurrentX = xSmallLeft + 46
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "金额"
        Printer.CurrentX = xSmallLeft + 55
        Printer.CurrentY = xSmallTop + 6
        Printer.Print "菜分类"
        Printer.CurrentX = xSmallLeft
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("Name")
        Printer.CurrentX = xSmallLeft + 18
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("Unit")
        Printer.CurrentX = xSmallLeft + 22
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("Price")
        Printer.CurrentX = xSmallLeft + 32
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("Quanty")
        Printer.CurrentX = xSmallLeft + 40
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("JGF")
        Printer.CurrentX = xSmallLeft + 44
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("Amos")
        Printer.CurrentX = xSmallLeft + 55
        Printer.CurrentY = xSmallTop + 12
        Printer.Print pRS("DType")
        Printer.Line (xSmallLeft, xSmallTop + 18)-(xSmallLeft + 70, xSmallTop + 18), 2, BF
        Printer.CurrentX = xSmallLeft + 40
        Printer.CurrentY = xSmallTop + 20
        Printer.Print "时间:" & pRS("ATTime")

        Printer.EndDoc
       '删除当前记录
        pRS.Delete adAffectCurrent
     End If
     pRS.Close
     Set pRS = Nothing
     pDB.Close
     Set pDB = Nothing
     
     PrintSheet = True
     
     Exit Function
PrintErr:
      PrintSheet = False
      MsgBox "打印错误: " & Err.Description & vbCrLf & vbCrLf & "系统将在10秒钟后自动重打。 ", vbCritical
 
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -