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