⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editform.vb

📁 wrox出版社的另一套经典的VB2005数据库编程学习书籍,收集了书中源码,郑重推荐,电子书,电子书下载
💻 VB
字号:
Imports System.Xml.Serialization
Imports System.ComponentModel
Imports System.IO

Public Class frmEdit

	Private blnIsLoaded As Boolean
    Private objNwind As Northwind
    Private blOrders As BindingList(Of NorthwindOrders)
    'Private blvOrders As BindingListView(Of NorthwindOrders)
    Private Const strIEFile As String = "\Program Files\Internet Explorer\Iexplore.exe"
    Private strPath As String
    Private strFile As String
    Private strCustomerID As String
    Private intOrderID As Integer


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If File.Exists("..\Output.xml") Then
            File.Delete("..\Output.xml")
        End If
    End Sub

    Private Sub btnLoadData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadData.Click
        Try
            Dim lngTicks As Long = Now.Ticks
            blnIsLoaded = False
            Me.Cursor = Cursors.WaitCursor
            'Hydrate the NorthwindDS object by deserializing it
            objNwind = New Northwind
            Dim xsInput As New XmlSerializer(objNwind.GetType)
            Dim fsInput As New FileStream("..\Northwind.xml", FileMode.Open)
            objNwind = CType(xsInput.Deserialize(fsInput), Northwind)
            fsInput.Close()
            Dim dblDeserialize As Double = (Now.Ticks - lngTicks) / 10000000

            With NorthwindCustomersBindingSource
                .Clear()
                .DataSource = objNwind.Customers
                'Unfortunately, sorting and filtering aren't supported on BindingSources
                'created from BindingLists
                Dim blnSort As Boolean = .SupportsSorting ' returns False
                Dim blnFilter As Boolean = .SupportsFiltering 'returns False
                With NorthwindCustomersDataGridView
                    .DataSource = NorthwindCustomersBindingSource
                End With
                strCustomerID = CType(.Current, NorthwindCustomers).CustomerID
            End With
            Application.DoEvents()

            With NorthwindOrdersBindingSource
                .Clear()
                .DataSource = objNwind.Orders
                FilterOrders()

                With NorthwindOrdersDataGridView
                    .DataSource = NorthwindOrdersBindingSource
                End With
                intOrderID = CType(.Current, NorthwindOrders).OrderID
            End With
            Application.DoEvents()

            With NorthwindOrder_DetailsBindingSource
                .Clear()
                Application.DoEvents()
                .DataSource = objNwind.Order_Details
                FilterOrder_Details()

                With NorthwindOrder_DetailsDataGridView
                    .DataSource = NorthwindOrder_DetailsBindingSource
                End With
            End With
            Me.Cursor = Cursors.Default
            blnIsLoaded = True
            lngTicks = Now.Ticks - lngTicks
            txtTime.Text = Format(lngTicks / 10000000, "0.00")
        Catch exc As Exception
            Me.Cursor = Cursors.Default
            MsgBox(exc.Message)
        End Try
    End Sub

    Private Sub FilterCustomer()
        With NorthwindCustomersBindingSource
            Dim intRow As Integer
            For intRow = 0 To .Count - 1
                If CType(.Current, NorthwindCustomers).CustomerID <> strCustomerID Then
                    .RemoveCurrent()
                Else
                    .MoveNext()
                End If
            Next intRow
            .MoveFirst()
        End With
    End Sub

    Private Sub FilterOrders()
        With NorthwindOrdersBindingSource
            Dim intRow As Integer
            For intRow = 0 To .Count - 1
                If CType(.Current, NorthwindOrders).CustomerID <> strCustomerID Then
                    .RemoveCurrent()
                Else
                    .MoveNext()
                End If
            Next intRow
            .MoveFirst()
        End With
    End Sub

    Private Sub FilterOrder()
        With NorthwindOrdersBindingSource
            Dim intRow As Integer
            For intRow = 0 To .Count - 1
                If CType(.Current, NorthwindOrders).OrderID <> intOrderID Then
                    .RemoveCurrent()
                Else
                    .MoveNext()
                End If
            Next intRow
            .MoveFirst()
        End With
    End Sub

    Private Sub FilterOrder_Details()
        With NorthwindOrder_DetailsBindingSource
            Dim intRow As Integer
            For intRow = 0 To .Count - 1
                If CType(.Current, NorthwindOrder_Details).OrderID <> intOrderID Then
                    .RemoveCurrent()
                Else
                    .MoveNext()
                End If
            Next intRow
            .MoveFirst()
        End With
    End Sub

    Private Sub NorthwindCustomersBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NorthwindCustomersBindingSource.CurrentChanged
        If blnIsLoaded Then
            With NorthwindCustomersBindingSource
                strCustomerID = CType(.Current, NorthwindCustomers).CustomerID
                FilterOrders()
            End With
        End If
    End Sub

    Private Sub NorthwindOrdersBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NorthwindOrdersBindingSource.CurrentChanged
        If blnIsLoaded Then
            blnIsLoaded = False
            With NorthwindOrdersBindingSource
                intOrderID = CType(.Current, NorthwindOrders).OrderID
                .Clear()
                objNwind = New Northwind
                Dim xsInput As New XmlSerializer(objNwind.GetType)
                Dim fsInput As New FileStream("..\Northwind.xml", FileMode.Open)
                objNwind = CType(xsInput.Deserialize(fsInput), Northwind)
                fsInput.Close()
                .DataSource = objNwind.Orders
                FilterOrders()
                With NorthwindOrder_DetailsBindingSource
                    .Clear()
                    .DataSource = objNwind.Order_Details
                End With
                FilterOrder_Details()
            End With
            blnIsLoaded = True
        End If
    End Sub

    Private Sub btnSaveData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveData.Click
        blnIsLoaded = False
        'Filter results to a single customer and order
        FilterCustomer()
        FilterOrder()
        Application.DoEvents()
        'End the edits
        NorthwindCustomersBindingSource.EndEdit()
        NorthwindOrdersBindingSource.EndEdit()
        NorthwindOrder_DetailsBindingSource.EndEdit()
        Try
            'Dehydrate the Northwind object by serializing it to Output.xml
            Dim xsOutput As New XmlSerializer(objNwind.GetType)
            Dim srOutput As New StreamWriter("..\Output.xml")
            xsOutput.Serialize(srOutput, objNwind)
            srOutput.Close()
            If File.Exists(strIEFile) And File.Exists("..\Output.xml") Then
                strPath = Application.StartupPath
                strPath = Mid(strPath, 1, strPath.LastIndexOf("\"))
                strFile = strPath + "\Output.xml"
                Dim strShell As String = """" + strIEFile + """ " + strFile
                Shell(strShell, AppWinStyle.NormalFocus)
            End If
        Catch exc As Exception
            MsgBox(exc.Message, MsgBoxStyle.Exclamation, "Serialization Failed")
        End Try
    End Sub
End Class

⌨️ 快捷键说明

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