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