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

📄 frmmain.frm

📁 一个用PIC做的无线点菜系统的系统
💻 FRM
📖 第 1 页 / 共 2 页
字号:
Private Sub mainGrid_Click()
If mainGrid.Row = 1 Then

    Select Case mainGrid.Col
    Case 1
        If SQLORDER = "MenuID" Then
            SQLORDER = "MenuID DESC"
        Else
            SQLORDER = "MenuID"
        End If
    Case 2
        If SQLORDER = "TableID" Then
            SQLORDER = "TableID DESC"
        Else
            SQLORDER = "TableID"
        End If
    Case 3
        If SQLORDER = "TableName" Then
            SQLORDER = "TableName DESC"
        Else
            SQLORDER = "TableName"
        End If
    Case 4
        If SQLORDER = "WorkerID" Then
            SQLORDER = "WorkerID DESC"
        Else
            SQLORDER = "WorkerID"
        End If
    Case 5
        If SQLORDER = "WorkerName" Then
            SQLORDER = "WorkerName DESC"
        Else
            SQLORDER = "WorkerName"
        End If
    Case 6
        If SQLORDER = "FoodID" Then
            SQLORDER = "FoodID DESC"
        Else
            SQLORDER = "FoodID"
        End If
    Case 7
        If SQLORDER = "FoodName" Then
            SQLORDER = "FoodName DESC"
        Else
            SQLORDER = "FoodName"
        End If
    Case 8
        If SQLORDER = "FoodSum" Then
            SQLORDER = "FoodSum DESC"
        Else
            SQLORDER = "FoodSum"
        End If
    Case 9
        If SQLORDER = "Price" Then
            SQLORDER = "Price DESC"
        Else
            SQLORDER = "Price"
        End If
    Case 10
        If SQLORDER = "Date" Then
            SQLORDER = "Date DESC"
        Else
            SQLORDER = "Date"
        End If
    Case Else
        If SQLORDER = "ID" Then
            SQLORDER = "ID DESC"
        Else
            SQLORDER = "ID"
        End If
    
    End Select
    InitGrid
End If
End Sub

Private Sub menuCom_Click()
    frmSetCom.Show vbModal
    MsgBox "系统将退出,以使串口有效"
    End

End Sub

Private Sub menuFood_Click()
manFood.Show vbModal
End Sub

Private Sub menuPrint_Click()
manPrinter.Show vbModal
MsgBox "系统将退出,以使打印机有效"
End
End Sub

Private Sub menuTable_Click()
manTable.Show vbModal
End Sub

'Private Function Getdata2() As String
'Getdata2 = "001001EE0010020100100302001001CC001001CC00100102"
'GetData1.Enabled = False
'End Function

Private Sub MakeData(ByVal isdata As String)
If InStr(isdata, "EE") <> 0 Then        '开始新的一桌
    NewMenu Left$(isdata, 6)
ElseIf InStr(isdata, "CC") <> 0 Then    '打印菜单
    PrintMenu Left$(isdata, 3)
Else                                    '添加新菜,如已打印则打印该菜单
    NewFood isdata
End If
panGetData = isdata
InitGrid

End Sub

Private Sub NewMenu(ByVal isdata As String)
'在菜单表中新建纪录,除工号、桌号、建档时间外其余数据均为0,表示本桌已开始
'同时结束上一桌
'每次新建时产生一新的序列号,并新建一新建桌标志纪录;在下一次新建时删除该纪录,
Dim NewWorkerID As Integer
Dim NewWorkerName As String
Dim NewTableID As Integer
Dim NewTableName As String

Dim tempstr As String
    tempstr = Left$(isdata, 3)
    NewTableID = Val(tempstr)
    tempstr = Right$(isdata, 3)
    NewWorkerID = Val(tempstr)
        '得到桌名
        Set tblTable = DBF.OpenRecordset("SELECT * " & _
                                        " FROM " & tblTableStr & _
                                        " WHERE TableID = " & NewTableID & _
                                        " ORDER BY Date")
        If tblTable.RecordCount < 1 Then Exit Sub
    
        '得到员工姓名
        Set tblWorker = DBF.OpenRecordset("SELECT * " & _
                                         " FROM " & tblWorkerStr & _
                                         " WHERE WorkerID = " & NewWorkerID & _
                                         " ORDER BY Date")
        If tblWorker.RecordCount < 1 Then Exit Sub
    
    '找出桌号相同并未买单的数据找出
    Set tblMain = DBF.OpenRecordset("SELECT * " & _
                                   " FROM " & tblMainStr & _
                                   " WHERE TableID = " & NewTableID & _
                                   " AND FoodSum =0 " & _
                                   " ORDER BY MenuID")
    With tblMain
        
        If Not .BOF Then
            .MoveLast
            Exit Sub
            .Delete
        End If
        MenuID = MenuID + 1
        .AddNew
        !Date = Now
        !TableId = NewTableID
        !TableName = ""
        !FoodId = 0
        !FoodName = ""
        !FoodSum = 0
        !WorkerName = ""
        !WorkerId = NewWorkerID
        !MenuID = MenuID
        .Update
    End With

End Sub


Private Sub PrintMenu(ByVal isdata As String)
Dim NewFoodID As Integer
Dim NewFoodName As String
Dim NewTableID As Integer
Dim NewTableName As String
Dim NewFoodSum As Integer
Dim NewFoodPrice As Single
Dim NewWorkerID As Integer
Dim NewWorkerName As String
Dim PrintD As Boolean
Dim NewMenuID As Long
Dim tempstr As String

    tempstr = Left$(isdata, 3)
    NewTableID = Val(tempstr)
    
    Set tblMain = DBF.OpenRecordset("SELECT * " & _
                                   " FROM " & tblMainStr & _
                                   " WHERE TableID = " & NewTableID & _
                                   " AND FoodSum =0 " & _
                                   " ORDER BY MenuID")
    
    With tblMain
        If .RecordCount >= 1 Then
            .MoveLast
            NewMenuID = !MenuID
            .Delete
            If SerPrtEnabled = 1 Then
                SelPrt ServicePrinterName
                PrintTableMenuAll NewMenuID
            End If
            If KitPrtEnabled = 1 Then
                SelPrt KicthenPrinterName
                PrintTableMenuAll NewMenuID
            End If
            If AccPrtEnabled = 1 Then
                SelPrt AccountPrinterName
                PrintTableMenuAll NewMenuID
            End If
        End If
    End With
End Sub


Private Sub NewFood(ByVal isdata As String)
Dim NewFoodID As Integer
Dim NewFoodName As String
Dim NewTableID As Integer
Dim NewTableName As String
Dim NewFoodSum As Integer
Dim NewFoodPrice As Single
Dim NewWorkerID As Integer
Dim NewWorkerName As String
Dim NewID As Long
Dim PrintD As Boolean
Dim NewMenuID As Long
Dim NewY As Long

Dim tempstr As String

    tempstr = Left$(isdata, 3)
    NewTableID = Val(tempstr)
    tempstr = Mid$(isdata, 4, 3)
    NewFoodID = Val(tempstr)
    tempstr = Right$(isdata, 2)
    NewFoodSum = Val(tempstr)
    
    Set tblMain = DBF.OpenRecordset("SELECT * " & _
                                   " FROM " & tblMainStr & _
                                   " WHERE TableID = " & NewTableID & _
                                   " AND FoodSum =0 " & _
                                   " ORDER BY MenuID")
    
        
        If tblMain.RecordCount >= 1 Then
            tblMain.MoveLast
            NewMenuID = tblMain!MenuID
            NewWorkerID = tblMain!WorkerId
        Else
        '如菜单已打印则单独打印该纪录
            Set tblMain = DBF.OpenRecordset("SELECT * " & _
                                           " FROM " & tblMainStr & _
                                           " WHERE TableID = " & NewTableID & _
                                           " ORDER BY MenuID")
            If tblMain.RecordCount >= 1 Then
                tblMain.MoveLast
                NewWorkerID = tblMain!WorkerId
                NewMenuID = tblMain!MenuID
            End If
            PrintD = True
        
        End If
    With tblMain
        
    '得到菜名,单价
        Set tblFood = DBF.OpenRecordset("SELECT * " & _
                                     " FROM " & tblFoodStr & _
                                     " WHERE FoodID = " & NewFoodID & _
                                     " ORDER BY Date")
        If tblFood.RecordCount < 1 Then Exit Sub
        tblFood.MoveLast
        NewFoodName = tblFood!FoodName
        NewFoodPrice = tblFood!FoodPrice
     
        '得到桌名
        Set tblTable = DBF.OpenRecordset("SELECT * " & _
                                        " FROM " & tblTableStr & _
                                        " WHERE TableID = " & NewTableID & _
                                        " ORDER BY Date")
        If tblTable.RecordCount < 1 Then Exit Sub
        tblTable.MoveLast
        NewTableName = tblTable!TableName
    
        '得到员工姓名
        Set tblWorker = DBF.OpenRecordset("SELECT * " & _
                                         " FROM " & tblWorkerStr & _
                                         " WHERE WorkerID = " & NewWorkerID & _
                                         " ORDER BY Date")
        If tblWorker.RecordCount < 1 Then Exit Sub
        tblWorker.MoveLast
        NewWorkerName = tblWorker!WorkerName
        
    '得到菜单号并纪录本次数据
        .AddNew
        !Date = Now
        !TableId = NewTableID
        !TableName = NewTableName
        !FoodId = NewFoodID
        !FoodName = NewFoodName
        !FoodSum = NewFoodSum
        
        !WorkerName = NewWorkerName
        !WorkerId = NewWorkerID
        !MenuID = NewMenuID
        !Price = NewFoodPrice * NewFoodSum
        NewID = !ID
        .Update
        If PrintD Then
            If SerPrtEnabled = 1 Then
                SelPrt ServicePrinterName
                PrintF NewID
            End If
            If KitPrtEnabled = 1 Then
                SelPrt KicthenPrinterName
                PrintF NewID
            End If
            If AccPrtEnabled = 1 Then
                SelPrt AccountPrinterName
                PrintF NewID
            End If
        End If
    End With
End Sub

Private Sub PrintF(ByVal isdata As Long)    '打印一个纪录
Dim prStr As String
Set tblMain = DBF.OpenRecordset("SELECT * " & _
                               " FROM " & tblMainStr & _
                               " WHERE ID = " & isdata)
prStr = "第" & tblMain!MenuID & "号菜单添菜:"
PrintLine prStr, 200, 200, 800
prStr = "桌号,桌名,菜号,菜名,菜量,价格,员工号,员工姓名,点菜时间"
PrintLine prStr, 500, 200, 800
With tblMain
    prStr = !TableId & "," & !TableName & "," & !FoodId & "," & !FoodName & "," & _
            !FoodSum & "," & !Price & "," & !WorkerId & "," & !WorkerName & "," & Format(CDate(!Date), "MMDD HH:MM")
    
End With
PrintLine prStr, 800, 200, 800
Printer.EndDoc
End Sub
Private Sub PrintTableMenuAll(ByVal PMenuID As Long)
Dim dx As Long
Dim X0 As Long
Dim dy As Long
Dim Y0 As Long
Dim PriceSum As Single
Dim FoodSum As Long
dy = 300
dx = 800
X0 = 200
Y0 = 200
Set tblMain = DBF.OpenRecordset("SELECT * " & _
                               " FROM " & tblMainStr & _
                               " WHERE MenuID = " & PMenuID & _
                               " ORDER BY date")
With tblMain
    If .RecordCount >= 1 Then
        prStr = "菜单号:" & !MenuID
        PrintLine prStr, X0, Y0, dx
        Y0 = Y0 + dy
        prStr = "桌号,桌名,菜号,菜名,菜量,价格,员工号,员工姓名,点菜时间"
        PrintLine prStr, Y0, X0, dx
        Y0 = Y0 + dy
        .MoveFirst
        Do While Not .EOF
            prStr = !TableId & "," & !TableName & "," & !FoodId & "," & !FoodName & "," & _
                    !FoodSum & "," & !Price & "," & !WorkerId & "," & !WorkerName & "," & Format(CDate(!Date), "MMDD HH:MM")
            PrintLine prStr, Y0, X0, dx
            Y0 = Y0 + dy
            PriceSum = PriceSum + !Price
            FoodSum = FoodSum + !FoodSum
            .MoveNext
        Loop
        .MoveLast
        prStr = String(80, "-")
        PrintLine prStr, Y0, X0, dx
        Y0 = Y0 + dy
        prStr = !TableId & "," & !TableName & "," & "," & "," & _
                FoodSum & "," & PriceSum & "," & !WorkerId & "," & !WorkerName & "," & Format(CDate(!Date), "MMDD HH:MM")
        PrintLine prStr, Y0, X0, dx
        Printer.EndDoc
    End If

End With

End Sub

'按格式打印一行
Private Sub PrintLine(ByVal PrintData As String, ByVal Y As Long, ByVal X0 As Long, ByVal dx As Long)
Dim Px As Long
Dim Py As Long
Dim PData As String
Px = X0
Py = Y
Do
    PData = GetData(PrintData, Asc(","))
    Printer.CurrentX = Px
    Printer.CurrentY = Y
    Printer.Print PData

    Px = Px + dx

Loop Until PrintData = ""

End Sub
Private Sub menuWorker_Click()
manWorker.Show vbModal
End Sub

Private Sub InitGrid()
    MakeSQLWHERE
    mainGrid.Clear
    mainGrid.FormatString = "|^菜单号|^桌 号|^  桌 名  |^员工号|^员工姓名|^菜号|^  菜   名 |^ 菜量 |^价格|^  建档日期  "
    Set tblMain = DBF.OpenRecordset(SQLtbl & SQLWHERE & " ORDER BY " & SQLORDER)
    
    With tblMain
        If .RecordCount < 1 Then Exit Sub
        .MoveLast
        MenuID = !MenuID
    End With
    Set tblMain = DBF.OpenRecordset(SQLtbl & SQLWHERE & " ORDER BY " & SQLORDER)
    
    With tblMain
        If .RecordCount < 1 Then Exit Sub
        .MoveLast
        menus = .RecordCount
        mainGrid.Rows = menus + 1
        .MoveFirst
        For i = 1 To menus
            mainGrid.Row = i
            mainGrid.Col = 1
            mainGrid = !MenuID
            mainGrid.Col = 2
            mainGrid = !TableId
            mainGrid.Col = 3
            mainGrid = !TableName
            mainGrid.Col = 4
            mainGrid = !WorkerId
            mainGrid.Col = 5
            mainGrid = !WorkerName
            mainGrid.Col = 6
            mainGrid = !FoodId
            mainGrid.Col = 7
            mainGrid = !FoodName
            mainGrid.Col = 8
            mainGrid = !FoodSum
            mainGrid.Col = 9
            mainGrid = !Price
            mainGrid.Col = 10
            mainGrid = Format(CDate(!Date), "MMDD  HH:MM")
            .MoveNext
        Next i
    End With

End Sub


Private Sub StartDate_Click()
    Datetemp = selStartDate
    frmDate.Show vbModal
    selStartDate = Datetemp
    StartDate.Caption = Format(selStartDate, "yyyy年mm月dd日")
    InitGrid
End Sub
    
Private Sub MakeSQLWHERE()
Dim tempstr As String
SQLWHERE = ""
If CheckDate = 1 Then
    If selStartDate = selEndDate Then
        tempstr = "Date = " & CDbl(selStartDate) & " "
    Else
        tempstr = "(Date > " & CDbl(selStartDate) & ") AND (date < " & CDbl(selEndDate) & ") "
    End If
End If

If (CheckTable = 1) And (ComTable <> "全部") Then
    If tempstr <> "" Then tempstr = tempstr & "AND "
    tempstr = tempstr & "(TableID = " & selTableID & ") "
End If

If (CheckFood = 1) And (ComFood <> "全部") Then
    If tempstr <> "" Then tempstr = tempstr & "AND "
    tempstr = tempstr & "(FoodID = " & selFoodID & ") "
End If

If (CheckWorker = 1) And (ComWorker <> "全部") Then
    If tempstr <> "" Then tempstr = tempstr & "AND "
    tempstr = tempstr & "(WorkerID = " & selWorkerID & ") "
End If


If tempstr <> "" Then
    SQLWHERE = " WHERE " & tempstr
End If
End Sub

⌨️ 快捷键说明

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