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

📄 frmordersmanager.vb

📁 单机版餐饮服务系统,结合了SqlServer数据库
💻 VB
📖 第 1 页 / 共 5 页
字号:
                MenuInfoList.RemoveAt(Index)
                MenuList.Items.RemoveAt(Index)
            End If
        End Sub

        Private Sub chkQueryAddress_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkQueryAddress.CheckedChanged, chkOrderDate.CheckedChanged, chkQueryExcute.CheckedChanged, chkQueryName.CheckedChanged, chkQueryTel.CheckedChanged
            txtQueryAddress.Enabled = chkQueryAddress.Checked
            txtQueryName.Enabled = chkQueryName.Checked
            txtQueryTel.Enabled = chkQueryTel.Checked
            QueryExcuteDate.Enabled = chkQueryExcute.Checked
            QueryOrderDate.Enabled = chkOrderDate.Checked
        End Sub

        Private Sub rdtQueryInnerOrder_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdtQueryInnerOrder.CheckedChanged, rdtQueryOuterOrder.CheckedChanged
            chkQueryAddress.Enabled = rdtQueryOuterOrder.Checked
            txtQueryAddress.Enabled = chkQueryAddress.Checked
            QueryList.Enabled = rdtQueryInnerOrder.Checked
        End Sub

        Private Sub rdtInnerOrder_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdtInnerOrder.CheckedChanged, rdtOuterOrder.CheckedChanged
            txtOrderContents.Enabled = rdtOuterOrder.Checked
            txtOrderAddress.Enabled = rdtOuterOrder.Checked
            ProviderTables.Enabled = rdtInnerOrder.Checked
            If rdtInnerOrder.Checked = True Then
                ProviderTables.Items.Clear()
                sqlstr = "SELECT tablenum,roomname,persons FROM TableInfo"
                Dim tempDS As New DataSet
                Dim mCount, Index As Integer
                tempDS.Clear()
                Try
                    tempDS = AccessToDatabase.GetDataFromDB(sqlstr)
                    mCount = tempDS.Tables(0).Rows.Count
                    If mCount >= 1 Then
                        For Index = 0 To mCount - 1
                            ProviderTables.Items.Add(tempDS.Tables(0).Rows(Index)("tablenum") & " - " & tempDS.Tables(0).Rows(Index)("roomname") & " (可容纳 " & tempDS.Tables(0).Rows(Index)("persons") & " 人)")
                        Next
                    End If
                Catch ex As Exception
                    Return
                End Try
            End If
        End Sub

        Private Function GetOrderDetails(ByVal MenuItems As ArrayList) As SortedList
            Dim Index, Count As Integer
            Count = MenuItems.Count
            If Count <= 0 Then
                Throw New ArgumentNullException
                Return Nothing
            End If
            Dim AddMenus As New SortedList
            AddMenus.Clear()
            For Index = 0 To Count - 1
                Dim sMenu As New MenuInformation
                Dim Menus As New MenuInformation
                sMenu = CType(MenuItems.Item(Index), MenuInformation)
                Menus.menuID = sMenu.menuID
                Menus.menuPrice = sMenu.menuPrice
                Menus.menuQuantity = sMenu.menuQuantity
                If AddMenus.ContainsKey(CType(Menus.menuID, Guid)) Then
                    Dim i, j As Integer
                    Dim m_Menu As New MenuInformation
                    i = AddMenus.IndexOfKey(CType(Menus.menuID, Guid))
                    m_Menu = AddMenus.Item(CType(Menus.menuID, Guid))
                    Menus.menuQuantity = m_Menu.menuQuantity + 1
                    AddMenus.SetByIndex(i, Menus)
                    m_Menu = Nothing
                Else
                    AddMenus.Add(CType(sMenu.menuID, Guid), Menus)
                End If
            Next
            Return AddMenus
        End Function

        Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
            Me.Close()
        End Sub

        Private Sub cmbRooms_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbRooms.SelectedIndexChanged
            If cmbRooms.SelectedIndex <= 0 Then cmbRooms.SelectedIndex = 0
            Me.DataBindTableInfo(cmbRooms.SelectedItem)
        End Sub

        Private Sub btnAddBill_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddBill.Click
            If cmbTables.Text.Trim = String.Empty Then
                MsgBox("服务桌号不能为空,请选择服务桌号。", MsgBoxStyle.OKOnly + MsgBoxStyle.Exclamation, "请选择服务桌号")
                Return
            End If
            Dim MenuItems As New SortedList
            MenuItems.Clear()
            Dim sOrder As OrderInfo = New OrderInfo(0, Now.Today, Now.Today, Now.Today, String.Empty, CInt(Val(cmbTables.Text.Trim)), cmbRooms.Text.Trim, False)
            Dim sOrderID As Guid = InsertOrderInfo(sOrder, "sp_OrderInfo_INS")
            Dim Table As Integer = CInt(Val(cmbTables.Text.Trim))
            Dim Room As String = cmbRooms.Text.Trim
            MenuItems = Me.GetOrderDetails(MenuInfoList)
            Me.InsertOrderItems(MenuItems, sOrderID, Table, Room)
        End Sub

        Private Function InsertOrderInfo(ByVal sOrder As OrderInfo, ByVal spName As String) As Guid
            If sOrder Is Nothing Or sOrder.Style = -1 Then
                Throw New ArgumentNullException
                Return Guid.Empty
            End If
            '// 判断是否对数据库的连接已经初始化
            If AccessToDatabase.objSqlConnection Is Nothing Then
                Throw New ApplicationException("没有初始化数据库连接")
                Return Guid.Empty
            End If
            Try
                Dim sOrderID As Guid
                Dim sqlOrderInfoCommand As SqlCommand = New SqlCommand(spName)
                sqlOrderInfoCommand.CommandType = CommandType.StoredProcedure
                With sqlOrderInfoCommand.Parameters
                    .Add("@OrderID", SqlDbType.UniqueIdentifier, 16)
                    .Add("@Style", SqlDbType.SmallInt, 2)
                    .Add("@OrderDate", SqlDbType.DateTime, 8)
                    .Add("@ExcuteDate", SqlDbType.DateTime, 8)
                    .Add("@ShippedDate", SqlDbType.DateTime, 8)
                    .Add("@Address", SqlDbType.NVarChar, 255)
                    .Add("@TableNum", SqlDbType.Int, 4)
                    .Add("@RoomName", SqlDbType.VarChar, 50)
                    .Add("@IsChecked", SqlDbType.Bit, 1)

                    .Item("@OrderID").Value = New Guid
                    .Item("@Style").Value = sOrder.Style
                    .Item("@OrderDate").Value = sOrder.OrderDate
                    .Item("@ExcuteDate").Value = sOrder.ExcuteDate
                    .Item("@ShippedDate").Value = sOrder.ShippedDate
                    .Item("@Address").Value = sOrder.Address.Trim
                    .Item("@TableNum").Value = sOrder.TableNum
                    .Item("@RoomName").Value = sOrder.RoomName.Trim
                    .Item("@IsChecked").Value = CInt(sOrder.IsChecked)
                    .Item("@OrderID").Direction = ParameterDirection.InputOutput
                End With
                sqlOrderInfoCommand.Connection = AccessToDatabase.objSqlConnection
                If AccessToDatabase.objSqlConnection.State <> ConnectionState.Open Then
                    AccessToDatabase.objSqlConnection.Open()
                End If
                sqlOrderInfoCommand.ExecuteNonQuery()
                AccessToDatabase.DisConnectToDataBase()
                If sqlOrderInfoCommand.Parameters("@OrderID").Value.ToString <> String.Empty Then
                    sOrderID = CType(sqlOrderInfoCommand.Parameters("@OrderID").Value, Guid)
                Else
                    sOrderID = Guid.Empty
                End If
                Return sOrderID
            Catch ex As Exception
                MsgBox(ex.Message)
                AccessToDatabase.DisConnectToDataBase()
                Return Guid.Empty
            End Try
        End Function

        Private Function InsertOrderItems(ByVal sMenuInfo As SortedList, ByVal sOrderID As Guid, ByVal Table As Integer, ByVal Room As String) As Boolean
            If sMenuInfo Is Nothing Or sMenuInfo.Count <= 0 Then
                Throw New ArgumentNullException
                Return False
            End If
            If sOrderID.Equals(Guid.Empty) Then
                Throw New ArgumentNullException
                Return False
            End If
            '// 判断是否对数据库的连接已经初始化
            If AccessToDatabase.objSqlConnection Is Nothing Then
                Throw New ApplicationException("没有初始化数据库连接")
                Return False
            End If
            Try
                Dim Index, Count As Integer
                Count = sMenuInfo.Count
                For Index = 0 To Count - 1
                    '// 使用 GetByIndex 方法获取在该索引值下的数据对象
                    Dim sMenu As New MenuInformation
                    sMenu = CType(sMenuInfo.GetByIndex(Index), MenuInformation)
                    Dim sqlOrderItemCommand As SqlCommand = New SqlCommand("sp_OrderItems_INS")
                    sqlOrderItemCommand.CommandType = CommandType.StoredProcedure
                    With sqlOrderItemCommand.Parameters
                        .Add("@OrderID", SqlDbType.UniqueIdentifier, 16)
                        .Add("@MenuID", SqlDbType.Char, 38)
                        .Add("@CustomerID", SqlDbType.Char, 38)
                        .Add("@TableNum", SqlDbType.Int, 4)
                        .Add("@RoomName", SqlDbType.VarChar, 50)
                        .Add("@OrderDate", SqlDbType.DateTime, 8)
                        .Add("@Quantity", SqlDbType.Int, 4)
                        .Add("@UnitPrice", SqlDbType.Money, 8)

                        .Item("@OrderID").Value = sOrderID
                        .Item("@MenuID").Value = sMenu.menuID.ToString
                        .Item("@CustomerID").Value = Guid.Empty.ToString
                        .Item("@TableNum").Value = Table
                        .Item("@RoomName").Value = Room
                        .Item("@OrderDate").Value = Now.Today
                        .Item("@Quantity").Value = sMenu.menuQuantity
                        .Item("@UnitPrice").Value = sMenu.menuPrice
                    End With
                    sqlOrderItemCommand.Connection = AccessToDatabase.objSqlConnection
                    If AccessToDatabase.objSqlConnection.State <> ConnectionState.Open Then
                        AccessToDatabase.objSqlConnection.Open()
                    End If
                    sqlOrderItemCommand.ExecuteNonQuery()
                Next
                Return True
            Catch ex As Exception
                '// 如果失败则通知用户,并告知用户的错误原因
                MsgBox(ex.Message)
                '// 删除已经加入的帐单详细记录和帐单记录,
                Dim sqlstr As String = "DELETE OrderItems WHERE OrderID='" & sOrderID.ToString.Trim & "'"
                AccessToDatabase.UpdateData(sqlstr)
                sqlstr = "DELETE OrderInfo WHERE OrderID='" & sOrderID.ToString.Trim & "'"
                AccessToDatabase.UpdateData(sqlstr)
                AccessToDatabase.DisConnectToDataBase()
                Return False
            End Try
        End Function

        '// 帐单查询
        Public Sub btnStartQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartQuery.Click
            Dim OrderDate As Date = Me.ConsumeDateTime.Value.ToShortDateString
            Dim Table As Integer = CInt(Val(Me.txtTableNumber.Text.Trim))
            Dim Room As String = Me.txtRoomName.Text.Trim
            If Table <= 0 Then
                Throw New ArgumentOutOfRangeException
            End If
            Try
                Dim tempDs As New DataSet
                tempDs.Clear()
                sqlstr = "SELECT OrderItems.CustomerID AS '会员编码'," & _
                "MenuInfo.Menu_name AS '菜谱名称'," & _
                "OrderItems.TableNum AS '服务桌号'," & _
                "OrderItems.RoomName AS '所在房间'," & _
                "OrderItems.OrderDate AS '订单日期'," & _
                "OrderItems.Quantity AS '数  量'," & _
                "OrderItems.UnitPrice AS '单  价' " & _
                "FROM OrderItems, MenuInfo WHERE TableNum='" & Table & _
                "' AND RoomName= '" & Room & "' AND OrderDate='" & OrderDate & _
                "' AND MenuInfo.Menu_id=OrderItems.MenuID"
                tempDs = AccessToDatabase.GetDataFromDB(sqlstr)
                If Not tempDs Is Nothing Then
                    QueryDataGrid.DataSource = tempDs.Tables(0).DefaultView
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                AccessToDatabase.DisConnectToDataBase()
            End Try
        End Sub

        Friend Class OrderInfo

            Friend Style As Integer = -1
            Friend OrderDate As Date
            Friend ExcuteDate As Date
            Friend ShippedDate As 

⌨️ 快捷键说明

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