ordersform.vb
来自「wrox出版社的另一套经典的VB2005数据库编程学习书籍,收集了书中源码,郑重」· VB 代码 · 共 789 行 · 第 1/3 页
VB
789 行
Option Explicit On
Option Strict On
Public Class OrdersForm
Private Const strTitle As String = "Data Entry Error!"
Private blnIsNewCustomer As Boolean
Private blnIsNewOrderRow As Boolean
Private blnOrdersReadOnly As Boolean
Private blnUseTabs As Boolean
'Change below to false for normal operation
Private blnUseSampleData As Boolean = True
#Region "Form_Load and Form_Activate Event Handlers"
'*********************************************
'Form_Load and Form_Activate event handlers
'and related control enable/disable procedures
'*********************************************
Private Sub OrdersForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Change below to False to start in single page mode
chkTabPageEdit.Checked = True
chkTabPageEdit_CheckedChanged(Nothing, Nothing)
tabOrders.TabPages.Remove(pagEditOrder)
'Position the help text box
With OrdersDataGridView
txtHelp.Top = .Top - 25
txtHelp.Left = .Left
txtHelp.Width = .Width
txtHelp.Height = .Height + 25
txtHelp.BackColor = pagCustOrders.BackColor
End With
'Lock down the form until user action occurs
LockCustTextBoxes(True, True)
EnableOrdersGrid(False, True)
EnableOrder_DetailsGrid(False, True)
ShowCustomerEditButtons(False)
ShowOrdersEditButtons(False)
ShowGrids(False)
If blnUseSampleData Then
With cboCustomerID
'Emulate final version
.Items.Add("QUEDE - Que Delícia")
.Items.Add("QUEEN - Queen Cozinha")
.Items.Add("QUICK - QUICK-Stop")
.Items.Add("RANCH - Rancho grande")
.Items.Add("RATTC - Rattlesnake Canyon Grocery")
.Items.Add("REGGC - Reggiani Caseifici")
.Items.Add("RICAR - Ricardo Adocicados")
.Items.Add("RICSU - Richter Supermarkt")
.Items.Add("ROMEY - Romero y tomillo")
.Items.Add("SANTG - Santé Gourmet")
.Items.Add("SAVEA - Save-a-lot Markets")
.Items.Add("SEVES - Seven Seas Imports")
.Items.Add("SIMOB - Simons bistro")
.Items.Add("SPECD - Spécialités du monde")
.SelectedIndex = 4
End With
End If
End Sub
Private Sub chkTabPageEdit_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkTabPageEdit.CheckedChanged
'Change to/from editing on Edit Selected Order page
With chkTabPageEdit
If .Checked Then
If tabOrders.TabPages.Count = 1 And OrdersBindingSource.Count > 0 Then
tabOrders.TabPages.Add(pagEditOrder)
End If
tabOrders.Height = 522 - 150
Me.Height = 567 - 150
Order_DetailsDataGridView.Visible = False
lblOrderDetailsGrid.Visible = False
blnUseTabs = True
If Not OrdersDataGridView.Visible Then
txtHelp.Visible = True
End If
Else
txtHelp.Visible = False
If tabOrders.TabPages.Count = 2 Then
tabOrders.TabPages.Remove(pagEditOrder)
End If
tabOrders.Height = 522
Me.Height = 567
Order_DetailsDataGridView.Visible = True
lblOrderDetailsGrid.Visible = True
blnUseTabs = False
End If
Me.CenterToScreen()
End With
End Sub
Private Sub LockCustTextBoxes(ByVal blnLock As Boolean, ByVal blnLockID As Boolean)
'Set text boxes read-only or read-write
CustomerIDTextBox.ReadOnly = blnLockID
CompanyNameTextBox.ReadOnly = blnLock
ContactNameTextBox.ReadOnly = blnLock
ContactTitleTextBox.ReadOnly = blnLock
AddressTextBox.ReadOnly = blnLock
CityTextBox.ReadOnly = blnLock
RegionTextBox.ReadOnly = blnLock
PostalCodeTextBox.ReadOnly = blnLock
CountryTextBox.ReadOnly = blnLock
PhoneTextBox.ReadOnly = blnLock
FaxTextBox.ReadOnly = blnLock
End Sub
Private Sub ShowCustomerEditButtons(ByVal blnVisible As Boolean)
'Show or hide Customer buttons
btnEditCustData.Visible = blnVisible
'btnNewCustomer.Visible = blnVisible
btnSaveCustData.Visible = blnVisible
btnCancelCustEdit.Visible = blnVisible
End Sub
Private Sub ShowGrids(ByVal blnVisible As Boolean)
'Show or hide both grids
OrdersDataGridView.Visible = blnVisible
lblOrdersGrid.Visible = blnVisible
Order_DetailsDataGridView.Visible = blnVisible
lblOrderDetailsGrid.Visible = blnVisible
chkTabPageEdit.Visible = blnVisible
txtHelp.Visible = Not blnVisible
End Sub
Private Sub EnableOrdersGrid(ByVal blnEnable As Boolean, ByVal blnReadOnly As Boolean)
'Enable or disable grids and set read-only or read-write
With OrdersDataGridView
.Enabled = blnEnable
.ReadOnly = blnReadOnly
.AllowUserToAddRows = Not blnReadOnly
.AllowUserToDeleteRows = Not blnReadOnly
'These columns are always read-only
.Columns(0).ReadOnly = True
.Columns(1).ReadOnly = True
End With
End Sub
Private Sub ShowOrdersEditButtons(ByVal blnVisible As Boolean)
'Show or hide Orders buttons
btnEditOrders.Visible = blnVisible
btnNewOrder.Visible = blnVisible
btnSaveOrders.Visible = blnVisible
btnCancelOrderEdits.Visible = blnVisible
End Sub
Private Sub EnableOrder_DetailsGrid(ByVal blnEnable As Boolean, ByVal blnReadOnly As Boolean)
With Order_DetailsDataGridView
.Enabled = blnEnable
.ReadOnly = blnReadOnly
.AllowUserToAddRows = Not blnReadOnly
.AllowUserToDeleteRows = Not blnReadOnly
.Columns(0).ReadOnly = True
End With
End Sub
Private Sub OrdersForm_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
'Set focus to the CustomerID combo box
cboCustomerID.Focus()
End Sub
#End Region
#Region "Get Orders and Edit Customers Event Handlers"
'*******************************
'Get Orders and Edit Customers Event Handlers
'Command button event handlers
'*******************************
Private Sub btnGetOrders_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetOrders.Click
'Load the DataTables with parameterized SELECT queries
Dim strCustomerID As String = Nothing
If Len(cboCustomerID.Text) > 5 Then
strCustomerID = Mid(cboCustomerID.Text, 1, 5)
End If
'To support manual entry
If Len(strCustomerID) < 5 Then
MsgBox("CustomerID must consist of five letters.", MsgBoxStyle.Exclamation, strTitle)
cboCustomerID.Focus()
Return
Else
strCustomerID = UCase(strCustomerID)
End If
Try
Me.CustomersTableAdapter.GetCustomerOrders(Me.NorthwindDataSet.Customers, _
strCustomerID)
Me.OrdersTableAdapter.FillOrders(Me.NorthwindDataSet.Orders, _
strCustomerID)
Me.Order_DetailsTableAdapter.FillOrder_Details(Me.NorthwindDataSet.Order_Details, _
strCustomerID)
CustomerIDTextBox.Text = UCase(CustomerIDTextBox.Text)
If CustomersBindingSource.Count > 0 Or blnIsNewCustomer Then
If CustomersBindingSource.Count > 0 Then
blnIsNewCustomer = False
Else
Return
End If
LockCustTextBoxes(True, True)
ShowCustomerEditButtons(True)
btnSaveCustData.Enabled = False
btnCancelCustEdit.Enabled = False
btnSaveOrders.Enabled = False
btnCancelOrderEdits.Enabled = False
ShowGrids(True)
If blnUseTabs Then
'Hide the Order Details grid
Order_DetailsDataGridView.Visible = False
lblOrderDetailsGrid.Visible = False
End If
EnableOrdersGrid(True, False)
EnableOrder_DetailsGrid(True, False)
ShowOrdersEditButtons(True)
btnEditCustData.Enabled = True
pagEditOrder.Text = "Edit Selected Order"
'Disable Orders edit button if last order has been shipped
With OrdersDataGridView
'Set shipped rows read-only
Dim intRow As Integer
For intRow = 0 To .Rows.Count - 2
'Shipped date test
If TypeOf (.Rows(intRow).Cells(5).Value) Is DBNull Then
.Rows(intRow).ReadOnly = False
Else
'Order has shipped
.Rows(intRow).ReadOnly = True
End If
Next
End With
Else
MsgBox("Customer " + cboCustomerID.Text + " not found.", _
MsgBoxStyle.Exclamation, strTitle)
cboCustomerID.Focus()
End If
Catch ex As System.Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error Getting Orders for " + strCustomerID)
End Try
End Sub
Private Sub SetOrdersReadOnly()
'For all customer orders shipped
EnableOrdersGrid(True, True)
EnableOrder_DetailsGrid(True, True)
btnEditOrders.Enabled = False
btnSaveOrders.Enabled = False
btnCancelOrderEdits.Enabled = False
End Sub
Private Sub btnEditCustData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditCustData.Click
'Enable the Customers text boxes and buttons
LockCustTextBoxes(False, True)
ShowCustomerEditButtons(True)
btnSaveCustData.Enabled = True
btnCancelCustEdit.Enabled = True
End Sub
#End Region
#Region "New Customer and Related Event Handlers"
'**************************************************************
'Event handlers and procedures for adding a new customer record
'**************************************************************
Private Sub btnNewCustomer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewCustomer.Click
'Add a new customer record
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?