salesordersbe.vb

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

VB
380
字号
            BindingNavigatorSaveItem.Enabled = False
        End If
    End Sub

    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.SalesOrder = CType(SalesOrderBindingSource.Current, WSOrdersBE.SalesOrder)
            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)
                    SalesOrderDetailsBindingSource.Clear()
                    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)")
        Finally
            BindingNavigatorDeleteItem.Enabled = False
            BindingNavigatorSaveItem.Enabled = False
        End Try
    End Sub

    Private Sub SalesOrderBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles SalesOrderBindingSource.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 SalesOrderBindingSource
            'Update or insert a SalesOrder with the UpdateSalesOrder or InsertSalesOrder Web methods
            Dim objSalesOrder As WSOrdersBE.SalesOrder = CType(.Current, WSOrdersBE.SalesOrder)
            Dim strMsg As String
            Dim blnNewOrder As Boolean
            Dim intOrderID As Integer
            If objSalesOrder.OrderID = 0 Then
                'It's a new item
                strMsg = "Confirm addition of new order for " + objSalesOrder.CustomerID + "."
                blnNewOrder = True
            Else
                strMsg = "Confirm edit of order " + objSalesOrder.OrderID.ToString + " for " + objSalesOrder.CustomerID + "."
                With dgvDetails
                    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
                'Create an ArrayList of OrderDetails
                Dim objDetails As New ArrayList
                With SalesOrderDetailsBindingSource
                    Dim intRow As Integer
                    For intRow = 0 To .Count - 1
                        objDetails.Add(.Item(intRow))
                    Next
                End With
                'Create a strongly typed array and set the OrderDetails field
                objSalesOrder.OrderDetails = CType(objDetails.ToArray(GetType(WSOrdersBE.OrderDetail)), WSOrdersBE.OrderDetail())
            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.InsertSalesOrder(objSalesOrder)
                        strMsg = "Insert new order and default detail failed."
                    Else
                        .EndEdit()
                        intOrderID = wsOrders.UpdateSalesOrder(objSalesOrder)
                        strMsg = "Update to order " + objSalesOrder.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 " + objSalesOrder.CustomerID + _
                              " and default OrderDetail added "
                            strTitle = "Order and Detail Object Inserted"
                        Else
                            strMsg = "Order " + objSalesOrder.OrderID.ToString + " for " + objSalesOrder.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 " + objSalesOrder.CustomerID + "."
                        MsgBox(strMsg, MsgBoxStyle.Information, strTitle)

                        'Return orders and details for the customer
                        txtCustID.Text = objSalesOrder.CustomerID
                        optGetCustOrders.Checked = True
                        btnLoadGrids.PerformClick()
                        BindingNavigatorSaveItem.Enabled = False
                        If blnNewOrder Then
                            SalesOrderDataGridView.Rows(0).Selected = True
                        End If
                    Else
                        MsgBox(strMsg, MsgBoxStyle.Exclamation, "Operation Failed")
                    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)")
            Finally
                BindingNavigatorDeleteItem.Enabled = False
                BindingNavigatorSaveItem.Enabled = False
            End Try
        End With
    End Sub

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

    Private Sub SalesOrderDetailsBindingSource_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles SalesOrderDetailsBindingSource.AddingNew
        If SalesOrderDataGridView.SelectedRows.Count > 0 Then
            'Add default values
            Dim intOrderID As Integer = CType(SalesOrderDataGridView.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 btnShowOrders_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowOrders.Click
        Me.Hide()
        OrdersBE.Show()
    End Sub

    Private Sub SalesOrdersBE_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        BindingNavigatorSaveItem.Enabled = False
        BindingNavigatorDeleteItem.Enabled = False
        BindingNavigatorAddNewItem.Enabled = False
    End Sub

	Private Sub SalesOrdersBE_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
		OrdersBE.Show()
	End Sub

    Private Sub SalesOrdersBE_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 + -
显示快捷键?