ordersbe.vb

来自「wrox出版社的另一套经典的VB2005数据库编程学习书籍,收集了书中源码,郑重」· VB 代码 · 共 367 行 · 第 1/2 页

VB
367
字号
    Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click
        'Get the current item
        Try
            Dim objCurrent As WSOrdersBE.Order = CType(OrderBindingSource.Current, WSOrdersBE.Order)
            Dim strOrderID As String = objCurrent.OrderID.ToString
            If objCurrent.OrderID = 0 Then
                'Immediate deletion of new order
                Return
            End If
            If objCurrent.OrderID > 11077 Then
                'Only delete added orders
                Dim strMsg As String = "Confirm deletion of order " + strOrderID + " and its line items."
                If MsgBox(strMsg, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "Delete Order " + strOrderID + "?") = MsgBoxResult.Yes Then
                    Dim intDeleted As Integer = wsOrders.DeleteOrder(objCurrent.OrderID)
                    If intDeleted = 0 Then
                        strMsg = "Deletion of order " + strOrderID + " and its line items failed."
                        MsgBox(strMsg, MsgBoxStyle.Exclamation, "Delete Order Failed")
                        'Restore the grids
                        btnLoadGrids.PerformClick()
                    End If
                End If
            Else
                Dim strMsg As String = "You can't delete orders with an OrderID less than 11077."
                MsgBox(strMsg, MsgBoxStyle.Exclamation, "Orders Table is Protected")
                'Restore the grids
                btnLoadGrids.PerformClick()
            End If
        Catch excSoap As SoapException
            MsgBox(excSoap.Message, MsgBoxStyle.Information, "SOAP Exception")
        Catch excOther As Exception
            MsgBox(excOther.Message, MsgBoxStyle.Information, "Other Exception (Not SOAP)")
        End Try
    End Sub

    Private Sub OrderBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles OrderBindingSource.CurrentItemChanged
        'Enable the Save Data button
        If Not blnIsLoading Then
            BindingNavigatorSaveItem.Enabled = True
        End If
    End Sub

    Private Sub OrderDetailBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles OrderBindingSource.CurrentItemChanged
        'Enable the Save Data button
        If Not blnIsLoading Then
            BindingNavigatorSaveItem.Enabled = True
        End If
    End Sub

    Private Sub BindingNavigatorSaveItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingNavigatorSaveItem.Click
        With OrderBindingSource
            Dim objOrder As WSOrdersBE.Order = CType(.Current, WSOrdersBE.Order)
            Dim strMsg As String
            Dim blnNewOrder As Boolean
            Dim intOrderID As Integer
            If objOrder.OrderID = 0 Then
                'It's a new item
                strMsg = "Confirm addition of new order for " + objOrder.CustomerID + "."
                blnNewOrder = True
            Else
                strMsg = "Confirm edit of order " + objOrder.OrderID.ToString + " for " + objOrder.CustomerID + "."
                With OrderDetailDataGridView
                    Dim objOrderID As Object = .Rows(0).Cells(0).Value
                    Dim intRow As Integer
                    'Don't include empty row
                    For intRow = 0 To .Rows.Count - 2
                        If Not .Rows(intRow).Cells(0).Value.Equals(objOrderID) Then
                            'OrderDetails for more than one order is present
                            BindingNavigatorSaveItem.Enabled = False
                            strMsg = "Order Details grid contains rows for multiple orders."
                            MsgBox(strMsg, MsgBoxStyle.Exclamation, "Can't Save Changes")
                            Return
                        End If
                    Next
                End With
            End If
            Try
                If MsgBox(strMsg, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "Update Orders Table?") = MsgBoxResult.Yes Then
                    Dim lngTicks As Long = Now.Ticks
                    If blnNewOrder Then
                        .EndEdit()
                        intOrderID = wsOrders.InsertOrderObject(objOrder)
                        strMsg = "Insert new order and default detail failed."
                    Else
                        .EndEdit()
                        'Create the OrderDetail array
                        Dim objDetails As WSOrdersBE.OrderDetail()
                        With OrderDetailBindingSource
                            .MoveFirst()
                            ReDim objDetails(.Count - 1)
                            Dim intCtr As Integer
                            For intCtr = 0 To .Count - 1
                                objDetails(intCtr) = CType(.Current, WSOrdersBE.OrderDetail)
                                .MoveNext()
                            Next
                        End With
                        'Update the Order and OrderDetails objects
                        intOrderID = wsOrders.UpdateOrderAndDetailsObjects(objOrder, objDetails)
                        strMsg = "Update to order " + objOrder.OrderID.ToString + " failed."
                    End If
                    lngTicks = Now.Ticks - lngTicks
                    If intOrderID > 0 Then
                        'Display a success message box
                        Dim strTitle As String = Nothing
                        If blnNewOrder Then
                            strMsg = "Order " + intOrderID.ToString + " for " + objOrder.CustomerID + _
                             " and default OrderDetail added "
                            strTitle = "Order and Detail Object Inserted"
                        Else
                            strMsg = "Order " + objOrder.OrderID.ToString + " for " + objOrder.CustomerID + _
                            " and OrderDetails updated "
                            strTitle = "Order and Detail Objects Updated"
                        End If
                        strMsg += " in " + Format(lngTicks / 10000000, "#0.000") + " seconds. "
                        If Not blnNewOrder Then
                            strMsg += "(" + intOrderID.ToString + " objects updated.)"
                        End If
                        strMsg += vbCrLf + vbCrLf + "Click OK to display orders for " + objOrder.CustomerID + "."
                        MsgBox(strMsg, MsgBoxStyle.Information, strTitle)

                        'Return orders and details for the customer
                        txtCustID.Text = objOrder.CustomerID
                        optGetCustOrders.Checked = True
                        btnLoadGrids.PerformClick()
                        'Must change selected order to save
                        BindingNavigatorSaveItem.Enabled = False
                    Else
                        MsgBox(strMsg, MsgBoxStyle.Exclamation, "Operation Failed")
                    End If
                    If blnNewOrder Then
                        OrderDataGridView.Rows(0).Selected = True
                    End If
                Else
                    If blnNewOrder Then
                        .CancelEdit()
                    Else
                        .CancelEdit()
                    End If
                End If
            Catch excSoap As SoapException
                MsgBox(excSoap.Message, MsgBoxStyle.Information, "SOAP Exception")
            Catch excOther As Exception
                MsgBox(excOther.Message, MsgBoxStyle.Information, "Other Exception (Not SOAP)")
            End Try
        End With
    End Sub

    '**********************************************
    'Add, edit, delete and save OrderDetail objects
    '**********************************************

    Private Sub OrderDetailBindingSource_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles OrderDetailBindingSource.AddingNew
        If OrderDataGridView.SelectedRows.Count > 0 Then
            'Add default values
            Dim intOrderID As Integer = CType(OrderDataGridView.SelectedRows(0).Cells(0).Value, Integer)
            If intOrderID > 0 Then
                Dim objNew As New WSOrdersBE.OrderDetail
                With objNew
                    .OrderID = intOrderID
                    .ProductID = 1
                    .UnitPrice = 18D
                    .Quantity = 1
                    .Discount = 0D
                End With
                e.NewObject = objNew
            End If
        End If
    End Sub

	Private Sub btnSalesOrders_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSalesOrders.Click
		Me.Hide()
		SalesOrdersBE.Show()
	End Sub

	Private Sub OrdersBE_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
		SalesOrdersBE.Close()
	End Sub

    Private Sub OrdersBE_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Use Windows authentication by default
        wsOrders.UseDefaultCredentials = True
    End Sub

End Class

⌨️ 快捷键说明

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