'------------------------------------------------------------------------------ ' ' 這段程式碼是由工具產生的。 ' 執行階段版本:4.0.30319.42000 ' ' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, ' 變更將會遺失。 ' '------------------------------------------------------------------------------ Option Strict Off Option Explicit On ''' '''Represents a strongly typed in-memory cache of data. ''' _ Partial Public Class 謎鹿DataSet Inherits Global.System.Data.DataSet Private table商品 As 商品DataTable Private table會員 As 會員DataTable Private table訂單 As 訂單DataTable Private table購物車 As 購物車DataTable Private table紀錄 As 紀錄DataTable Private table訂購 As 訂購DataTable Private _schemaSerializationMode As Global.System.Data.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema _ Public Sub New() MyBase.New Me.BeginInit Me.InitClass Dim schemaChangedHandler As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged AddHandler MyBase.Tables.CollectionChanged, schemaChangedHandler AddHandler MyBase.Relations.CollectionChanged, schemaChangedHandler Me.EndInit End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context, false) If (Me.IsBinarySerialized(info, context) = true) Then Me.InitVars(false) Dim schemaChangedHandler1 As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged AddHandler Me.Tables.CollectionChanged, schemaChangedHandler1 AddHandler Me.Relations.CollectionChanged, schemaChangedHandler1 Return End If Dim strSchema As String = CType(info.GetValue("XmlSchema", GetType(String)),String) If (Me.DetermineSchemaSerializationMode(info, context) = Global.System.Data.SchemaSerializationMode.IncludeSchema) Then Dim ds As Global.System.Data.DataSet = New Global.System.Data.DataSet() ds.ReadXmlSchema(New Global.System.Xml.XmlTextReader(New Global.System.IO.StringReader(strSchema))) If (Not (ds.Tables("商品")) Is Nothing) Then MyBase.Tables.Add(New 商品DataTable(ds.Tables("商品"))) End If If (Not (ds.Tables("會員")) Is Nothing) Then MyBase.Tables.Add(New 會員DataTable(ds.Tables("會員"))) End If If (Not (ds.Tables("訂單")) Is Nothing) Then MyBase.Tables.Add(New 訂單DataTable(ds.Tables("訂單"))) End If If (Not (ds.Tables("購物車")) Is Nothing) Then MyBase.Tables.Add(New 購物車DataTable(ds.Tables("購物車"))) End If If (Not (ds.Tables("紀錄")) Is Nothing) Then MyBase.Tables.Add(New 紀錄DataTable(ds.Tables("紀錄"))) End If If (Not (ds.Tables("訂購")) Is Nothing) Then MyBase.Tables.Add(New 訂購DataTable(ds.Tables("訂購"))) End If Me.DataSetName = ds.DataSetName Me.Prefix = ds.Prefix Me.Namespace = ds.Namespace Me.Locale = ds.Locale Me.CaseSensitive = ds.CaseSensitive Me.EnforceConstraints = ds.EnforceConstraints Me.Merge(ds, false, Global.System.Data.MissingSchemaAction.Add) Me.InitVars Else Me.ReadXmlSchema(New Global.System.Xml.XmlTextReader(New Global.System.IO.StringReader(strSchema))) End If Me.GetSerializationData(info, context) Dim schemaChangedHandler As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged AddHandler MyBase.Tables.CollectionChanged, schemaChangedHandler AddHandler Me.Relations.CollectionChanged, schemaChangedHandler End Sub _ Public ReadOnly Property 商品() As 商品DataTable Get Return Me.table商品 End Get End Property _ Public ReadOnly Property 會員() As 會員DataTable Get Return Me.table會員 End Get End Property _ Public ReadOnly Property 訂單() As 訂單DataTable Get Return Me.table訂單 End Get End Property _ Public ReadOnly Property 購物車() As 購物車DataTable Get Return Me.table購物車 End Get End Property _ Public ReadOnly Property 紀錄() As 紀錄DataTable Get Return Me.table紀錄 End Get End Property _ Public ReadOnly Property 訂購() As 訂購DataTable Get Return Me.table訂購 End Get End Property _ Public Overrides Property SchemaSerializationMode() As Global.System.Data.SchemaSerializationMode Get Return Me._schemaSerializationMode End Get Set Me._schemaSerializationMode = value End Set End Property _ Public Shadows ReadOnly Property Tables() As Global.System.Data.DataTableCollection Get Return MyBase.Tables End Get End Property _ Public Shadows ReadOnly Property Relations() As Global.System.Data.DataRelationCollection Get Return MyBase.Relations End Get End Property _ Protected Overrides Sub InitializeDerivedDataSet() Me.BeginInit Me.InitClass Me.EndInit End Sub _ Public Overrides Function Clone() As Global.System.Data.DataSet Dim cln As 謎鹿DataSet = CType(MyBase.Clone,謎鹿DataSet) cln.InitVars cln.SchemaSerializationMode = Me.SchemaSerializationMode Return cln End Function _ Protected Overrides Function ShouldSerializeTables() As Boolean Return false End Function _ Protected Overrides Function ShouldSerializeRelations() As Boolean Return false End Function _ Protected Overrides Sub ReadXmlSerializable(ByVal reader As Global.System.Xml.XmlReader) If (Me.DetermineSchemaSerializationMode(reader) = Global.System.Data.SchemaSerializationMode.IncludeSchema) Then Me.Reset Dim ds As Global.System.Data.DataSet = New Global.System.Data.DataSet() ds.ReadXml(reader) If (Not (ds.Tables("商品")) Is Nothing) Then MyBase.Tables.Add(New 商品DataTable(ds.Tables("商品"))) End If If (Not (ds.Tables("會員")) Is Nothing) Then MyBase.Tables.Add(New 會員DataTable(ds.Tables("會員"))) End If If (Not (ds.Tables("訂單")) Is Nothing) Then MyBase.Tables.Add(New 訂單DataTable(ds.Tables("訂單"))) End If If (Not (ds.Tables("購物車")) Is Nothing) Then MyBase.Tables.Add(New 購物車DataTable(ds.Tables("購物車"))) End If If (Not (ds.Tables("紀錄")) Is Nothing) Then MyBase.Tables.Add(New 紀錄DataTable(ds.Tables("紀錄"))) End If If (Not (ds.Tables("訂購")) Is Nothing) Then MyBase.Tables.Add(New 訂購DataTable(ds.Tables("訂購"))) End If Me.DataSetName = ds.DataSetName Me.Prefix = ds.Prefix Me.Namespace = ds.Namespace Me.Locale = ds.Locale Me.CaseSensitive = ds.CaseSensitive Me.EnforceConstraints = ds.EnforceConstraints Me.Merge(ds, false, Global.System.Data.MissingSchemaAction.Add) Me.InitVars Else Me.ReadXml(reader) Me.InitVars End If End Sub _ Protected Overrides Function GetSchemaSerializable() As Global.System.Xml.Schema.XmlSchema Dim stream As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Me.WriteXmlSchema(New Global.System.Xml.XmlTextWriter(stream, Nothing)) stream.Position = 0 Return Global.System.Xml.Schema.XmlSchema.Read(New Global.System.Xml.XmlTextReader(stream), Nothing) End Function _ Friend Overloads Sub InitVars() Me.InitVars(true) End Sub _ Friend Overloads Sub InitVars(ByVal initTable As Boolean) Me.table商品 = CType(MyBase.Tables("商品"),商品DataTable) If (initTable = true) Then If (Not (Me.table商品) Is Nothing) Then Me.table商品.InitVars End If End If Me.table會員 = CType(MyBase.Tables("會員"),會員DataTable) If (initTable = true) Then If (Not (Me.table會員) Is Nothing) Then Me.table會員.InitVars End If End If Me.table訂單 = CType(MyBase.Tables("訂單"),訂單DataTable) If (initTable = true) Then If (Not (Me.table訂單) Is Nothing) Then Me.table訂單.InitVars End If End If Me.table購物車 = CType(MyBase.Tables("購物車"),購物車DataTable) If (initTable = true) Then If (Not (Me.table購物車) Is Nothing) Then Me.table購物車.InitVars End If End If Me.table紀錄 = CType(MyBase.Tables("紀錄"),紀錄DataTable) If (initTable = true) Then If (Not (Me.table紀錄) Is Nothing) Then Me.table紀錄.InitVars End If End If Me.table訂購 = CType(MyBase.Tables("訂購"),訂購DataTable) If (initTable = true) Then If (Not (Me.table訂購) Is Nothing) Then Me.table訂購.InitVars End If End If End Sub _ Private Sub InitClass() Me.DataSetName = "謎鹿DataSet" Me.Prefix = "" Me.Namespace = "http://tempuri.org/謎鹿DataSet.xsd" Me.EnforceConstraints = true Me.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema Me.table商品 = New 商品DataTable() MyBase.Tables.Add(Me.table商品) Me.table會員 = New 會員DataTable() MyBase.Tables.Add(Me.table會員) Me.table訂單 = New 訂單DataTable() MyBase.Tables.Add(Me.table訂單) Me.table購物車 = New 購物車DataTable() MyBase.Tables.Add(Me.table購物車) Me.table紀錄 = New 紀錄DataTable() MyBase.Tables.Add(Me.table紀錄) Me.table訂購 = New 訂購DataTable() MyBase.Tables.Add(Me.table訂購) End Sub _ Private Function ShouldSerialize商品() As Boolean Return false End Function _ Private Function ShouldSerialize會員() As Boolean Return false End Function _ Private Function ShouldSerialize訂單() As Boolean Return false End Function _ Private Function ShouldSerialize購物車() As Boolean Return false End Function _ Private Function ShouldSerialize紀錄() As Boolean Return false End Function _ Private Function ShouldSerialize訂購() As Boolean Return false End Function _ Private Sub SchemaChanged(ByVal sender As Object, ByVal e As Global.System.ComponentModel.CollectionChangeEventArgs) If (e.Action = Global.System.ComponentModel.CollectionChangeAction.Remove) Then Me.InitVars End If End Sub _ Public Shared Function GetTypedDataSetSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim any As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any.Namespace = ds.Namespace sequence.Items.Add(any) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function _ Public Delegate Sub 商品RowChangeEventHandler(ByVal sender As Object, ByVal e As 商品RowChangeEvent) _ Public Delegate Sub 會員RowChangeEventHandler(ByVal sender As Object, ByVal e As 會員RowChangeEvent) _ Public Delegate Sub 訂單RowChangeEventHandler(ByVal sender As Object, ByVal e As 訂單RowChangeEvent) _ Public Delegate Sub 購物車RowChangeEventHandler(ByVal sender As Object, ByVal e As 購物車RowChangeEvent) _ Public Delegate Sub 紀錄RowChangeEventHandler(ByVal sender As Object, ByVal e As 紀錄RowChangeEvent) _ Public Delegate Sub 訂購RowChangeEventHandler(ByVal sender As Object, ByVal e As 訂購RowChangeEvent) ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class 商品DataTable Inherits Global.System.Data.TypedTableBase(Of 商品Row) Private column商品編號 As Global.System.Data.DataColumn Private column商品名稱 As Global.System.Data.DataColumn Private column庫存數量 As Global.System.Data.DataColumn Private column定價 As Global.System.Data.DataColumn Private column種類 As Global.System.Data.DataColumn Private column管理者編號 As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "商品" Me.BeginInit Me.InitClass Me.EndInit End Sub _ Friend Sub New(ByVal table As Global.System.Data.DataTable) MyBase.New Me.TableName = table.TableName If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then Me.CaseSensitive = table.CaseSensitive End If If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then Me.Locale = table.Locale End If If (table.Namespace <> table.DataSet.Namespace) Then Me.Namespace = table.Namespace End If Me.Prefix = table.Prefix Me.MinimumCapacity = table.MinimumCapacity End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context) Me.InitVars End Sub _ Public ReadOnly Property 商品編號Column() As Global.System.Data.DataColumn Get Return Me.column商品編號 End Get End Property _ Public ReadOnly Property 商品名稱Column() As Global.System.Data.DataColumn Get Return Me.column商品名稱 End Get End Property _ Public ReadOnly Property 庫存數量Column() As Global.System.Data.DataColumn Get Return Me.column庫存數量 End Get End Property _ Public ReadOnly Property 定價Column() As Global.System.Data.DataColumn Get Return Me.column定價 End Get End Property _ Public ReadOnly Property 種類Column() As Global.System.Data.DataColumn Get Return Me.column種類 End Get End Property _ Public ReadOnly Property 管理者編號Column() As Global.System.Data.DataColumn Get Return Me.column管理者編號 End Get End Property _ Public ReadOnly Property Count() As Integer Get Return Me.Rows.Count End Get End Property _ Public Default ReadOnly Property Item(ByVal index As Integer) As 商品Row Get Return CType(Me.Rows(index),商品Row) End Get End Property _ Public Event 商品RowChanging As 商品RowChangeEventHandler _ Public Event 商品RowChanged As 商品RowChangeEventHandler _ Public Event 商品RowDeleting As 商品RowChangeEventHandler _ Public Event 商品RowDeleted As 商品RowChangeEventHandler _ Public Overloads Sub Add商品Row(ByVal row As 商品Row) Me.Rows.Add(row) End Sub _ Public Overloads Function Add商品Row(ByVal 商品編號 As String, ByVal 商品名稱 As String, ByVal 庫存數量 As String, ByVal 定價 As String, ByVal 種類 As String, ByVal 管理者編號 As String) As 商品Row Dim row商品Row As 商品Row = CType(Me.NewRow,商品Row) Dim columnValuesArray() As Object = New Object() {商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號} row商品Row.ItemArray = columnValuesArray Me.Rows.Add(row商品Row) Return row商品Row End Function _ Public Function FindBy商品編號(ByVal 商品編號 As String) As 商品Row Return CType(Me.Rows.Find(New Object() {商品編號}),商品Row) End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As 商品DataTable = CType(MyBase.Clone,商品DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New 商品DataTable() End Function _ Friend Sub InitVars() Me.column商品編號 = MyBase.Columns("商品編號") Me.column商品名稱 = MyBase.Columns("商品名稱") Me.column庫存數量 = MyBase.Columns("庫存數量") Me.column定價 = MyBase.Columns("定價") Me.column種類 = MyBase.Columns("種類") Me.column管理者編號 = MyBase.Columns("管理者編號") End Sub _ Private Sub InitClass() Me.column商品編號 = New Global.System.Data.DataColumn("商品編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column商品編號) Me.column商品名稱 = New Global.System.Data.DataColumn("商品名稱", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column商品名稱) Me.column庫存數量 = New Global.System.Data.DataColumn("庫存數量", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column庫存數量) Me.column定價 = New Global.System.Data.DataColumn("定價", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column定價) Me.column種類 = New Global.System.Data.DataColumn("種類", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column種類) Me.column管理者編號 = New Global.System.Data.DataColumn("管理者編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column管理者編號) Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column商品編號}, true)) Me.column商品編號.AllowDBNull = false Me.column商品編號.Unique = true Me.column商品名稱.MaxLength = 10 Me.column庫存數量.MaxLength = 10 Me.column定價.MaxLength = 10 Me.column種類.MaxLength = 10 Me.column管理者編號.MaxLength = 10 End Sub _ Public Function New商品Row() As 商品Row Return CType(Me.NewRow,商品Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New 商品Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(商品Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.商品RowChangedEvent) Is Nothing) Then RaiseEvent 商品RowChanged(Me, New 商品RowChangeEvent(CType(e.Row,商品Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.商品RowChangingEvent) Is Nothing) Then RaiseEvent 商品RowChanging(Me, New 商品RowChangeEvent(CType(e.Row,商品Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.商品RowDeletedEvent) Is Nothing) Then RaiseEvent 商品RowDeleted(Me, New 商品RowChangeEvent(CType(e.Row,商品Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.商品RowDeletingEvent) Is Nothing) Then RaiseEvent 商品RowDeleting(Me, New 商品RowChangeEvent(CType(e.Row,商品Row), e.Action)) End If End Sub _ Public Sub Remove商品Row(ByVal row As 商品Row) Me.Rows.Remove(row) End Sub _ Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any1.Namespace = "http://www.w3.org/2001/XMLSchema" any1.MinOccurs = New Decimal(0) any1.MaxOccurs = Decimal.MaxValue any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any1) Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" any2.MinOccurs = New Decimal(1) any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any2) Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute1.Name = "namespace" attribute1.FixedValue = ds.Namespace type.Attributes.Add(attribute1) Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute2.Name = "tableTypeName" attribute2.FixedValue = "商品DataTable" type.Attributes.Add(attribute2) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function End Class ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class 會員DataTable Inherits Global.System.Data.TypedTableBase(Of 會員Row) Private column會員編號 As Global.System.Data.DataColumn Private column帳號 As Global.System.Data.DataColumn Private column密碼 As Global.System.Data.DataColumn Private column姓名 As Global.System.Data.DataColumn Private column電話 As Global.System.Data.DataColumn Private column住址 As Global.System.Data.DataColumn Private columnemail As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "會員" Me.BeginInit Me.InitClass Me.EndInit End Sub _ Friend Sub New(ByVal table As Global.System.Data.DataTable) MyBase.New Me.TableName = table.TableName If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then Me.CaseSensitive = table.CaseSensitive End If If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then Me.Locale = table.Locale End If If (table.Namespace <> table.DataSet.Namespace) Then Me.Namespace = table.Namespace End If Me.Prefix = table.Prefix Me.MinimumCapacity = table.MinimumCapacity End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context) Me.InitVars End Sub _ Public ReadOnly Property 會員編號Column() As Global.System.Data.DataColumn Get Return Me.column會員編號 End Get End Property _ Public ReadOnly Property 帳號Column() As Global.System.Data.DataColumn Get Return Me.column帳號 End Get End Property _ Public ReadOnly Property 密碼Column() As Global.System.Data.DataColumn Get Return Me.column密碼 End Get End Property _ Public ReadOnly Property 姓名Column() As Global.System.Data.DataColumn Get Return Me.column姓名 End Get End Property _ Public ReadOnly Property 電話Column() As Global.System.Data.DataColumn Get Return Me.column電話 End Get End Property _ Public ReadOnly Property 住址Column() As Global.System.Data.DataColumn Get Return Me.column住址 End Get End Property _ Public ReadOnly Property emailColumn() As Global.System.Data.DataColumn Get Return Me.columnemail End Get End Property _ Public ReadOnly Property Count() As Integer Get Return Me.Rows.Count End Get End Property _ Public Default ReadOnly Property Item(ByVal index As Integer) As 會員Row Get Return CType(Me.Rows(index),會員Row) End Get End Property _ Public Event 會員RowChanging As 會員RowChangeEventHandler _ Public Event 會員RowChanged As 會員RowChangeEventHandler _ Public Event 會員RowDeleting As 會員RowChangeEventHandler _ Public Event 會員RowDeleted As 會員RowChangeEventHandler _ Public Overloads Sub Add會員Row(ByVal row As 會員Row) Me.Rows.Add(row) End Sub _ Public Overloads Function Add會員Row(ByVal 會員編號 As String, ByVal 帳號 As String, ByVal 密碼 As String, ByVal 姓名 As String, ByVal 電話 As String, ByVal 住址 As String, ByVal email As String) As 會員Row Dim row會員Row As 會員Row = CType(Me.NewRow,會員Row) Dim columnValuesArray() As Object = New Object() {會員編號, 帳號, 密碼, 姓名, 電話, 住址, email} row會員Row.ItemArray = columnValuesArray Me.Rows.Add(row會員Row) Return row會員Row End Function _ Public Function FindBy會員編號(ByVal 會員編號 As String) As 會員Row Return CType(Me.Rows.Find(New Object() {會員編號}),會員Row) End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As 會員DataTable = CType(MyBase.Clone,會員DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New 會員DataTable() End Function _ Friend Sub InitVars() Me.column會員編號 = MyBase.Columns("會員編號") Me.column帳號 = MyBase.Columns("帳號") Me.column密碼 = MyBase.Columns("密碼") Me.column姓名 = MyBase.Columns("姓名") Me.column電話 = MyBase.Columns("電話") Me.column住址 = MyBase.Columns("住址") Me.columnemail = MyBase.Columns("email") End Sub _ Private Sub InitClass() Me.column會員編號 = New Global.System.Data.DataColumn("會員編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column會員編號) Me.column帳號 = New Global.System.Data.DataColumn("帳號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column帳號) Me.column密碼 = New Global.System.Data.DataColumn("密碼", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column密碼) Me.column姓名 = New Global.System.Data.DataColumn("姓名", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column姓名) Me.column電話 = New Global.System.Data.DataColumn("電話", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column電話) Me.column住址 = New Global.System.Data.DataColumn("住址", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column住址) Me.columnemail = New Global.System.Data.DataColumn("email", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnemail) Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column會員編號}, true)) Me.column會員編號.AllowDBNull = false Me.column會員編號.Unique = true Me.column會員編號.MaxLength = 50 Me.column帳號.MaxLength = 50 Me.column密碼.MaxLength = 50 Me.column姓名.MaxLength = 50 Me.column電話.MaxLength = 50 Me.column住址.MaxLength = 50 Me.columnemail.MaxLength = 50 End Sub _ Public Function New會員Row() As 會員Row Return CType(Me.NewRow,會員Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New 會員Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(會員Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.會員RowChangedEvent) Is Nothing) Then RaiseEvent 會員RowChanged(Me, New 會員RowChangeEvent(CType(e.Row,會員Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.會員RowChangingEvent) Is Nothing) Then RaiseEvent 會員RowChanging(Me, New 會員RowChangeEvent(CType(e.Row,會員Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.會員RowDeletedEvent) Is Nothing) Then RaiseEvent 會員RowDeleted(Me, New 會員RowChangeEvent(CType(e.Row,會員Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.會員RowDeletingEvent) Is Nothing) Then RaiseEvent 會員RowDeleting(Me, New 會員RowChangeEvent(CType(e.Row,會員Row), e.Action)) End If End Sub _ Public Sub Remove會員Row(ByVal row As 會員Row) Me.Rows.Remove(row) End Sub _ Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any1.Namespace = "http://www.w3.org/2001/XMLSchema" any1.MinOccurs = New Decimal(0) any1.MaxOccurs = Decimal.MaxValue any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any1) Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" any2.MinOccurs = New Decimal(1) any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any2) Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute1.Name = "namespace" attribute1.FixedValue = ds.Namespace type.Attributes.Add(attribute1) Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute2.Name = "tableTypeName" attribute2.FixedValue = "會員DataTable" type.Attributes.Add(attribute2) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function End Class ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class 訂單DataTable Inherits Global.System.Data.TypedTableBase(Of 訂單Row) Private column訂單編號 As Global.System.Data.DataColumn Private column付款方式 As Global.System.Data.DataColumn Private column取貨方式 As Global.System.Data.DataColumn Private column訂單日期 As Global.System.Data.DataColumn Private column會員編號 As Global.System.Data.DataColumn Private column購物車編號 As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "訂單" Me.BeginInit Me.InitClass Me.EndInit End Sub _ Friend Sub New(ByVal table As Global.System.Data.DataTable) MyBase.New Me.TableName = table.TableName If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then Me.CaseSensitive = table.CaseSensitive End If If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then Me.Locale = table.Locale End If If (table.Namespace <> table.DataSet.Namespace) Then Me.Namespace = table.Namespace End If Me.Prefix = table.Prefix Me.MinimumCapacity = table.MinimumCapacity End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context) Me.InitVars End Sub _ Public ReadOnly Property 訂單編號Column() As Global.System.Data.DataColumn Get Return Me.column訂單編號 End Get End Property _ Public ReadOnly Property 付款方式Column() As Global.System.Data.DataColumn Get Return Me.column付款方式 End Get End Property _ Public ReadOnly Property 取貨方式Column() As Global.System.Data.DataColumn Get Return Me.column取貨方式 End Get End Property _ Public ReadOnly Property 訂單日期Column() As Global.System.Data.DataColumn Get Return Me.column訂單日期 End Get End Property _ Public ReadOnly Property 會員編號Column() As Global.System.Data.DataColumn Get Return Me.column會員編號 End Get End Property _ Public ReadOnly Property 購物車編號Column() As Global.System.Data.DataColumn Get Return Me.column購物車編號 End Get End Property _ Public ReadOnly Property Count() As Integer Get Return Me.Rows.Count End Get End Property _ Public Default ReadOnly Property Item(ByVal index As Integer) As 訂單Row Get Return CType(Me.Rows(index),訂單Row) End Get End Property _ Public Event 訂單RowChanging As 訂單RowChangeEventHandler _ Public Event 訂單RowChanged As 訂單RowChangeEventHandler _ Public Event 訂單RowDeleting As 訂單RowChangeEventHandler _ Public Event 訂單RowDeleted As 訂單RowChangeEventHandler _ Public Overloads Sub Add訂單Row(ByVal row As 訂單Row) Me.Rows.Add(row) End Sub _ Public Overloads Function Add訂單Row(ByVal 訂單編號 As String, ByVal 付款方式 As String, ByVal 取貨方式 As String, ByVal 訂單日期 As String, ByVal 會員編號 As String, ByVal 購物車編號 As String) As 訂單Row Dim row訂單Row As 訂單Row = CType(Me.NewRow,訂單Row) Dim columnValuesArray() As Object = New Object() {訂單編號, 付款方式, 取貨方式, 訂單日期, 會員編號, 購物車編號} row訂單Row.ItemArray = columnValuesArray Me.Rows.Add(row訂單Row) Return row訂單Row End Function _ Public Function FindBy訂單編號(ByVal 訂單編號 As String) As 訂單Row Return CType(Me.Rows.Find(New Object() {訂單編號}),訂單Row) End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As 訂單DataTable = CType(MyBase.Clone,訂單DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New 訂單DataTable() End Function _ Friend Sub InitVars() Me.column訂單編號 = MyBase.Columns("訂單編號") Me.column付款方式 = MyBase.Columns("付款方式") Me.column取貨方式 = MyBase.Columns("取貨方式") Me.column訂單日期 = MyBase.Columns("訂單日期") Me.column會員編號 = MyBase.Columns("會員編號") Me.column購物車編號 = MyBase.Columns("購物車編號") End Sub _ Private Sub InitClass() Me.column訂單編號 = New Global.System.Data.DataColumn("訂單編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column訂單編號) Me.column付款方式 = New Global.System.Data.DataColumn("付款方式", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column付款方式) Me.column取貨方式 = New Global.System.Data.DataColumn("取貨方式", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column取貨方式) Me.column訂單日期 = New Global.System.Data.DataColumn("訂單日期", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column訂單日期) Me.column會員編號 = New Global.System.Data.DataColumn("會員編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column會員編號) Me.column購物車編號 = New Global.System.Data.DataColumn("購物車編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column購物車編號) Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column訂單編號}, true)) Me.column訂單編號.AllowDBNull = false Me.column訂單編號.Unique = true Me.column付款方式.MaxLength = 10 Me.column取貨方式.MaxLength = 10 Me.column訂單日期.MaxLength = 10 Me.column會員編號.MaxLength = 10 Me.column購物車編號.MaxLength = 10 End Sub _ Public Function New訂單Row() As 訂單Row Return CType(Me.NewRow,訂單Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New 訂單Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(訂單Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.訂單RowChangedEvent) Is Nothing) Then RaiseEvent 訂單RowChanged(Me, New 訂單RowChangeEvent(CType(e.Row,訂單Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.訂單RowChangingEvent) Is Nothing) Then RaiseEvent 訂單RowChanging(Me, New 訂單RowChangeEvent(CType(e.Row,訂單Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.訂單RowDeletedEvent) Is Nothing) Then RaiseEvent 訂單RowDeleted(Me, New 訂單RowChangeEvent(CType(e.Row,訂單Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.訂單RowDeletingEvent) Is Nothing) Then RaiseEvent 訂單RowDeleting(Me, New 訂單RowChangeEvent(CType(e.Row,訂單Row), e.Action)) End If End Sub _ Public Sub Remove訂單Row(ByVal row As 訂單Row) Me.Rows.Remove(row) End Sub _ Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any1.Namespace = "http://www.w3.org/2001/XMLSchema" any1.MinOccurs = New Decimal(0) any1.MaxOccurs = Decimal.MaxValue any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any1) Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" any2.MinOccurs = New Decimal(1) any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any2) Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute1.Name = "namespace" attribute1.FixedValue = ds.Namespace type.Attributes.Add(attribute1) Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute2.Name = "tableTypeName" attribute2.FixedValue = "訂單DataTable" type.Attributes.Add(attribute2) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function End Class ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class 購物車DataTable Inherits Global.System.Data.TypedTableBase(Of 購物車Row) Private column會員編號 As Global.System.Data.DataColumn Private column運費 As Global.System.Data.DataColumn Private column總金額 As Global.System.Data.DataColumn Private column購物車編號 As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "購物車" Me.BeginInit Me.InitClass Me.EndInit End Sub _ Friend Sub New(ByVal table As Global.System.Data.DataTable) MyBase.New Me.TableName = table.TableName If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then Me.CaseSensitive = table.CaseSensitive End If If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then Me.Locale = table.Locale End If If (table.Namespace <> table.DataSet.Namespace) Then Me.Namespace = table.Namespace End If Me.Prefix = table.Prefix Me.MinimumCapacity = table.MinimumCapacity End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context) Me.InitVars End Sub _ Public ReadOnly Property 會員編號Column() As Global.System.Data.DataColumn Get Return Me.column會員編號 End Get End Property _ Public ReadOnly Property 運費Column() As Global.System.Data.DataColumn Get Return Me.column運費 End Get End Property _ Public ReadOnly Property 總金額Column() As Global.System.Data.DataColumn Get Return Me.column總金額 End Get End Property _ Public ReadOnly Property 購物車編號Column() As Global.System.Data.DataColumn Get Return Me.column購物車編號 End Get End Property _ Public ReadOnly Property Count() As Integer Get Return Me.Rows.Count End Get End Property _ Public Default ReadOnly Property Item(ByVal index As Integer) As 購物車Row Get Return CType(Me.Rows(index),購物車Row) End Get End Property _ Public Event 購物車RowChanging As 購物車RowChangeEventHandler _ Public Event 購物車RowChanged As 購物車RowChangeEventHandler _ Public Event 購物車RowDeleting As 購物車RowChangeEventHandler _ Public Event 購物車RowDeleted As 購物車RowChangeEventHandler _ Public Overloads Sub Add購物車Row(ByVal row As 購物車Row) Me.Rows.Add(row) End Sub _ Public Overloads Function Add購物車Row(ByVal 會員編號 As String, ByVal 運費 As String, ByVal 總金額 As String, ByVal 購物車編號 As String) As 購物車Row Dim row購物車Row As 購物車Row = CType(Me.NewRow,購物車Row) Dim columnValuesArray() As Object = New Object() {會員編號, 運費, 總金額, 購物車編號} row購物車Row.ItemArray = columnValuesArray Me.Rows.Add(row購物車Row) Return row購物車Row End Function _ Public Function FindBy會員編號(ByVal 會員編號 As String) As 購物車Row Return CType(Me.Rows.Find(New Object() {會員編號}),購物車Row) End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As 購物車DataTable = CType(MyBase.Clone,購物車DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New 購物車DataTable() End Function _ Friend Sub InitVars() Me.column會員編號 = MyBase.Columns("會員編號") Me.column運費 = MyBase.Columns("運費") Me.column總金額 = MyBase.Columns("總金額") Me.column購物車編號 = MyBase.Columns("購物車編號") End Sub _ Private Sub InitClass() Me.column會員編號 = New Global.System.Data.DataColumn("會員編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column會員編號) Me.column運費 = New Global.System.Data.DataColumn("運費", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column運費) Me.column總金額 = New Global.System.Data.DataColumn("總金額", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column總金額) Me.column購物車編號 = New Global.System.Data.DataColumn("購物車編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column購物車編號) Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column會員編號}, true)) Me.column會員編號.AllowDBNull = false Me.column會員編號.Unique = true Me.column會員編號.MaxLength = 50 Me.column運費.MaxLength = 50 Me.column總金額.MaxLength = 50 Me.column購物車編號.MaxLength = 50 End Sub _ Public Function New購物車Row() As 購物車Row Return CType(Me.NewRow,購物車Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New 購物車Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(購物車Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.購物車RowChangedEvent) Is Nothing) Then RaiseEvent 購物車RowChanged(Me, New 購物車RowChangeEvent(CType(e.Row,購物車Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.購物車RowChangingEvent) Is Nothing) Then RaiseEvent 購物車RowChanging(Me, New 購物車RowChangeEvent(CType(e.Row,購物車Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.購物車RowDeletedEvent) Is Nothing) Then RaiseEvent 購物車RowDeleted(Me, New 購物車RowChangeEvent(CType(e.Row,購物車Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.購物車RowDeletingEvent) Is Nothing) Then RaiseEvent 購物車RowDeleting(Me, New 購物車RowChangeEvent(CType(e.Row,購物車Row), e.Action)) End If End Sub _ Public Sub Remove購物車Row(ByVal row As 購物車Row) Me.Rows.Remove(row) End Sub _ Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any1.Namespace = "http://www.w3.org/2001/XMLSchema" any1.MinOccurs = New Decimal(0) any1.MaxOccurs = Decimal.MaxValue any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any1) Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" any2.MinOccurs = New Decimal(1) any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any2) Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute1.Name = "namespace" attribute1.FixedValue = ds.Namespace type.Attributes.Add(attribute1) Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute2.Name = "tableTypeName" attribute2.FixedValue = "購物車DataTable" type.Attributes.Add(attribute2) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function End Class ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class 紀錄DataTable Inherits Global.System.Data.TypedTableBase(Of 紀錄Row) Private column訂單編號 As Global.System.Data.DataColumn Private column商品編號 As Global.System.Data.DataColumn Private column訂購數量 As Global.System.Data.DataColumn Private column價錢 As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "紀錄" Me.BeginInit Me.InitClass Me.EndInit End Sub _ Friend Sub New(ByVal table As Global.System.Data.DataTable) MyBase.New Me.TableName = table.TableName If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then Me.CaseSensitive = table.CaseSensitive End If If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then Me.Locale = table.Locale End If If (table.Namespace <> table.DataSet.Namespace) Then Me.Namespace = table.Namespace End If Me.Prefix = table.Prefix Me.MinimumCapacity = table.MinimumCapacity End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context) Me.InitVars End Sub _ Public ReadOnly Property 訂單編號Column() As Global.System.Data.DataColumn Get Return Me.column訂單編號 End Get End Property _ Public ReadOnly Property 商品編號Column() As Global.System.Data.DataColumn Get Return Me.column商品編號 End Get End Property _ Public ReadOnly Property 訂購數量Column() As Global.System.Data.DataColumn Get Return Me.column訂購數量 End Get End Property _ Public ReadOnly Property 價錢Column() As Global.System.Data.DataColumn Get Return Me.column價錢 End Get End Property _ Public ReadOnly Property Count() As Integer Get Return Me.Rows.Count End Get End Property _ Public Default ReadOnly Property Item(ByVal index As Integer) As 紀錄Row Get Return CType(Me.Rows(index),紀錄Row) End Get End Property _ Public Event 紀錄RowChanging As 紀錄RowChangeEventHandler _ Public Event 紀錄RowChanged As 紀錄RowChangeEventHandler _ Public Event 紀錄RowDeleting As 紀錄RowChangeEventHandler _ Public Event 紀錄RowDeleted As 紀錄RowChangeEventHandler _ Public Overloads Sub Add紀錄Row(ByVal row As 紀錄Row) Me.Rows.Add(row) End Sub _ Public Overloads Function Add紀錄Row(ByVal 訂單編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal 價錢 As String) As 紀錄Row Dim row紀錄Row As 紀錄Row = CType(Me.NewRow,紀錄Row) Dim columnValuesArray() As Object = New Object() {訂單編號, 商品編號, 訂購數量, 價錢} row紀錄Row.ItemArray = columnValuesArray Me.Rows.Add(row紀錄Row) Return row紀錄Row End Function _ Public Function FindBy訂單編號(ByVal 訂單編號 As String) As 紀錄Row Return CType(Me.Rows.Find(New Object() {訂單編號}),紀錄Row) End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As 紀錄DataTable = CType(MyBase.Clone,紀錄DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New 紀錄DataTable() End Function _ Friend Sub InitVars() Me.column訂單編號 = MyBase.Columns("訂單編號") Me.column商品編號 = MyBase.Columns("商品編號") Me.column訂購數量 = MyBase.Columns("訂購數量") Me.column價錢 = MyBase.Columns("價錢") End Sub _ Private Sub InitClass() Me.column訂單編號 = New Global.System.Data.DataColumn("訂單編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column訂單編號) Me.column商品編號 = New Global.System.Data.DataColumn("商品編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column商品編號) Me.column訂購數量 = New Global.System.Data.DataColumn("訂購數量", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column訂購數量) Me.column價錢 = New Global.System.Data.DataColumn("價錢", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column價錢) Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column訂單編號}, true)) Me.column訂單編號.AllowDBNull = false Me.column訂單編號.Unique = true Me.column訂單編號.MaxLength = 50 Me.column商品編號.MaxLength = 50 Me.column訂購數量.MaxLength = 50 Me.column價錢.MaxLength = 50 End Sub _ Public Function New紀錄Row() As 紀錄Row Return CType(Me.NewRow,紀錄Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New 紀錄Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(紀錄Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.紀錄RowChangedEvent) Is Nothing) Then RaiseEvent 紀錄RowChanged(Me, New 紀錄RowChangeEvent(CType(e.Row,紀錄Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.紀錄RowChangingEvent) Is Nothing) Then RaiseEvent 紀錄RowChanging(Me, New 紀錄RowChangeEvent(CType(e.Row,紀錄Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.紀錄RowDeletedEvent) Is Nothing) Then RaiseEvent 紀錄RowDeleted(Me, New 紀錄RowChangeEvent(CType(e.Row,紀錄Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.紀錄RowDeletingEvent) Is Nothing) Then RaiseEvent 紀錄RowDeleting(Me, New 紀錄RowChangeEvent(CType(e.Row,紀錄Row), e.Action)) End If End Sub _ Public Sub Remove紀錄Row(ByVal row As 紀錄Row) Me.Rows.Remove(row) End Sub _ Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any1.Namespace = "http://www.w3.org/2001/XMLSchema" any1.MinOccurs = New Decimal(0) any1.MaxOccurs = Decimal.MaxValue any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any1) Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" any2.MinOccurs = New Decimal(1) any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any2) Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute1.Name = "namespace" attribute1.FixedValue = ds.Namespace type.Attributes.Add(attribute1) Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute2.Name = "tableTypeName" attribute2.FixedValue = "紀錄DataTable" type.Attributes.Add(attribute2) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function End Class ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class 訂購DataTable Inherits Global.System.Data.TypedTableBase(Of 訂購Row) Private column會員編號 As Global.System.Data.DataColumn Private column商品編號 As Global.System.Data.DataColumn Private column訂購數量 As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "訂購" Me.BeginInit Me.InitClass Me.EndInit End Sub _ Friend Sub New(ByVal table As Global.System.Data.DataTable) MyBase.New Me.TableName = table.TableName If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then Me.CaseSensitive = table.CaseSensitive End If If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then Me.Locale = table.Locale End If If (table.Namespace <> table.DataSet.Namespace) Then Me.Namespace = table.Namespace End If Me.Prefix = table.Prefix Me.MinimumCapacity = table.MinimumCapacity End Sub _ Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) MyBase.New(info, context) Me.InitVars End Sub _ Public ReadOnly Property 會員編號Column() As Global.System.Data.DataColumn Get Return Me.column會員編號 End Get End Property _ Public ReadOnly Property 商品編號Column() As Global.System.Data.DataColumn Get Return Me.column商品編號 End Get End Property _ Public ReadOnly Property 訂購數量Column() As Global.System.Data.DataColumn Get Return Me.column訂購數量 End Get End Property _ Public ReadOnly Property Count() As Integer Get Return Me.Rows.Count End Get End Property _ Public Default ReadOnly Property Item(ByVal index As Integer) As 訂購Row Get Return CType(Me.Rows(index),訂購Row) End Get End Property _ Public Event 訂購RowChanging As 訂購RowChangeEventHandler _ Public Event 訂購RowChanged As 訂購RowChangeEventHandler _ Public Event 訂購RowDeleting As 訂購RowChangeEventHandler _ Public Event 訂購RowDeleted As 訂購RowChangeEventHandler _ Public Overloads Sub Add訂購Row(ByVal row As 訂購Row) Me.Rows.Add(row) End Sub _ Public Overloads Function Add訂購Row(ByVal 會員編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String) As 訂購Row Dim row訂購Row As 訂購Row = CType(Me.NewRow,訂購Row) Dim columnValuesArray() As Object = New Object() {會員編號, 商品編號, 訂購數量} row訂購Row.ItemArray = columnValuesArray Me.Rows.Add(row訂購Row) Return row訂購Row End Function _ Public Function FindBy會員編號(ByVal 會員編號 As String) As 訂購Row Return CType(Me.Rows.Find(New Object() {會員編號}),訂購Row) End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As 訂購DataTable = CType(MyBase.Clone,訂購DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New 訂購DataTable() End Function _ Friend Sub InitVars() Me.column會員編號 = MyBase.Columns("會員編號") Me.column商品編號 = MyBase.Columns("商品編號") Me.column訂購數量 = MyBase.Columns("訂購數量") End Sub _ Private Sub InitClass() Me.column會員編號 = New Global.System.Data.DataColumn("會員編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column會員編號) Me.column商品編號 = New Global.System.Data.DataColumn("商品編號", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column商品編號) Me.column訂購數量 = New Global.System.Data.DataColumn("訂購數量", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.column訂購數量) Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column會員編號}, true)) Me.column會員編號.AllowDBNull = false Me.column會員編號.Unique = true Me.column會員編號.MaxLength = 50 Me.column商品編號.MaxLength = 50 Me.column訂購數量.MaxLength = 50 End Sub _ Public Function New訂購Row() As 訂購Row Return CType(Me.NewRow,訂購Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New 訂購Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(訂購Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.訂購RowChangedEvent) Is Nothing) Then RaiseEvent 訂購RowChanged(Me, New 訂購RowChangeEvent(CType(e.Row,訂購Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.訂購RowChangingEvent) Is Nothing) Then RaiseEvent 訂購RowChanging(Me, New 訂購RowChangeEvent(CType(e.Row,訂購Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.訂購RowDeletedEvent) Is Nothing) Then RaiseEvent 訂購RowDeleted(Me, New 訂購RowChangeEvent(CType(e.Row,訂購Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.訂購RowDeletingEvent) Is Nothing) Then RaiseEvent 訂購RowDeleting(Me, New 訂購RowChangeEvent(CType(e.Row,訂購Row), e.Action)) End If End Sub _ Public Sub Remove訂購Row(ByVal row As 訂購Row) Me.Rows.Remove(row) End Sub _ Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() Dim ds As 謎鹿DataSet = New 謎鹿DataSet() Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any1.Namespace = "http://www.w3.org/2001/XMLSchema" any1.MinOccurs = New Decimal(0) any1.MaxOccurs = Decimal.MaxValue any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any1) Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" any2.MinOccurs = New Decimal(1) any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax sequence.Items.Add(any2) Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute1.Name = "namespace" attribute1.FixedValue = ds.Namespace type.Attributes.Add(attribute1) Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() attribute2.Name = "tableTypeName" attribute2.FixedValue = "訂購DataTable" type.Attributes.Add(attribute2) type.Particle = sequence Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable If xs.Contains(dsSchema.TargetNamespace) Then Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() Try Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing dsSchema.Write(s1) Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator Do While schemas.MoveNext schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) s2.SetLength(0) schema.Write(s2) If (s1.Length = s2.Length) Then s1.Position = 0 s2.Position = 0 Do While ((s1.Position <> s1.Length) _ AndAlso (s1.ReadByte = s2.ReadByte)) Loop If (s1.Position = s1.Length) Then Return type End If End If Loop Finally If (Not (s1) Is Nothing) Then s1.Close End If If (Not (s2) Is Nothing) Then s2.Close End If End Try End If xs.Add(dsSchema) Return type End Function End Class ''' '''Represents strongly named DataRow class. ''' Partial Public Class 商品Row Inherits Global.System.Data.DataRow Private table商品 As 商品DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.table商品 = CType(Me.Table,商品DataTable) End Sub _ Public Property 商品編號() As String Get Return CType(Me(Me.table商品.商品編號Column),String) End Get Set Me(Me.table商品.商品編號Column) = value End Set End Property _ Public Property 商品名稱() As String Get Try Return CType(Me(Me.table商品.商品名稱Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '商品' 中資料行 '商品名稱' 的值是 DBNull。", e) End Try End Get Set Me(Me.table商品.商品名稱Column) = value End Set End Property _ Public Property 庫存數量() As String Get Try Return CType(Me(Me.table商品.庫存數量Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '商品' 中資料行 '庫存數量' 的值是 DBNull。", e) End Try End Get Set Me(Me.table商品.庫存數量Column) = value End Set End Property _ Public Property 定價() As String Get Try Return CType(Me(Me.table商品.定價Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '商品' 中資料行 '定價' 的值是 DBNull。", e) End Try End Get Set Me(Me.table商品.定價Column) = value End Set End Property _ Public Property 種類() As String Get Try Return CType(Me(Me.table商品.種類Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '商品' 中資料行 '種類' 的值是 DBNull。", e) End Try End Get Set Me(Me.table商品.種類Column) = value End Set End Property _ Public Property 管理者編號() As String Get Try Return CType(Me(Me.table商品.管理者編號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '商品' 中資料行 '管理者編號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table商品.管理者編號Column) = value End Set End Property _ Public Function Is商品名稱Null() As Boolean Return Me.IsNull(Me.table商品.商品名稱Column) End Function _ Public Sub Set商品名稱Null() Me(Me.table商品.商品名稱Column) = Global.System.Convert.DBNull End Sub _ Public Function Is庫存數量Null() As Boolean Return Me.IsNull(Me.table商品.庫存數量Column) End Function _ Public Sub Set庫存數量Null() Me(Me.table商品.庫存數量Column) = Global.System.Convert.DBNull End Sub _ Public Function Is定價Null() As Boolean Return Me.IsNull(Me.table商品.定價Column) End Function _ Public Sub Set定價Null() Me(Me.table商品.定價Column) = Global.System.Convert.DBNull End Sub _ Public Function Is種類Null() As Boolean Return Me.IsNull(Me.table商品.種類Column) End Function _ Public Sub Set種類Null() Me(Me.table商品.種類Column) = Global.System.Convert.DBNull End Sub _ Public Function Is管理者編號Null() As Boolean Return Me.IsNull(Me.table商品.管理者編號Column) End Function _ Public Sub Set管理者編號Null() Me(Me.table商品.管理者編號Column) = Global.System.Convert.DBNull End Sub End Class ''' '''Represents strongly named DataRow class. ''' Partial Public Class 會員Row Inherits Global.System.Data.DataRow Private table會員 As 會員DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.table會員 = CType(Me.Table,會員DataTable) End Sub _ Public Property 會員編號() As String Get Return CType(Me(Me.table會員.會員編號Column),String) End Get Set Me(Me.table會員.會員編號Column) = value End Set End Property _ Public Property 帳號() As String Get Try Return CType(Me(Me.table會員.帳號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '會員' 中資料行 '帳號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table會員.帳號Column) = value End Set End Property _ Public Property 密碼() As String Get Try Return CType(Me(Me.table會員.密碼Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '會員' 中資料行 '密碼' 的值是 DBNull。", e) End Try End Get Set Me(Me.table會員.密碼Column) = value End Set End Property _ Public Property 姓名() As String Get Try Return CType(Me(Me.table會員.姓名Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '會員' 中資料行 '姓名' 的值是 DBNull。", e) End Try End Get Set Me(Me.table會員.姓名Column) = value End Set End Property _ Public Property 電話() As String Get Try Return CType(Me(Me.table會員.電話Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '會員' 中資料行 '電話' 的值是 DBNull。", e) End Try End Get Set Me(Me.table會員.電話Column) = value End Set End Property _ Public Property 住址() As String Get Try Return CType(Me(Me.table會員.住址Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '會員' 中資料行 '住址' 的值是 DBNull。", e) End Try End Get Set Me(Me.table會員.住址Column) = value End Set End Property _ Public Property email() As String Get Try Return CType(Me(Me.table會員.emailColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '會員' 中資料行 'email' 的值是 DBNull。", e) End Try End Get Set Me(Me.table會員.emailColumn) = value End Set End Property _ Public Function Is帳號Null() As Boolean Return Me.IsNull(Me.table會員.帳號Column) End Function _ Public Sub Set帳號Null() Me(Me.table會員.帳號Column) = Global.System.Convert.DBNull End Sub _ Public Function Is密碼Null() As Boolean Return Me.IsNull(Me.table會員.密碼Column) End Function _ Public Sub Set密碼Null() Me(Me.table會員.密碼Column) = Global.System.Convert.DBNull End Sub _ Public Function Is姓名Null() As Boolean Return Me.IsNull(Me.table會員.姓名Column) End Function _ Public Sub Set姓名Null() Me(Me.table會員.姓名Column) = Global.System.Convert.DBNull End Sub _ Public Function Is電話Null() As Boolean Return Me.IsNull(Me.table會員.電話Column) End Function _ Public Sub Set電話Null() Me(Me.table會員.電話Column) = Global.System.Convert.DBNull End Sub _ Public Function Is住址Null() As Boolean Return Me.IsNull(Me.table會員.住址Column) End Function _ Public Sub Set住址Null() Me(Me.table會員.住址Column) = Global.System.Convert.DBNull End Sub _ Public Function IsemailNull() As Boolean Return Me.IsNull(Me.table會員.emailColumn) End Function _ Public Sub SetemailNull() Me(Me.table會員.emailColumn) = Global.System.Convert.DBNull End Sub End Class ''' '''Represents strongly named DataRow class. ''' Partial Public Class 訂單Row Inherits Global.System.Data.DataRow Private table訂單 As 訂單DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.table訂單 = CType(Me.Table,訂單DataTable) End Sub _ Public Property 訂單編號() As String Get Return CType(Me(Me.table訂單.訂單編號Column),String) End Get Set Me(Me.table訂單.訂單編號Column) = value End Set End Property _ Public Property 付款方式() As String Get Try Return CType(Me(Me.table訂單.付款方式Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂單' 中資料行 '付款方式' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂單.付款方式Column) = value End Set End Property _ Public Property 取貨方式() As String Get Try Return CType(Me(Me.table訂單.取貨方式Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂單' 中資料行 '取貨方式' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂單.取貨方式Column) = value End Set End Property _ Public Property 訂單日期() As String Get Try Return CType(Me(Me.table訂單.訂單日期Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂單' 中資料行 '訂單日期' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂單.訂單日期Column) = value End Set End Property _ Public Property 會員編號() As String Get Try Return CType(Me(Me.table訂單.會員編號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂單' 中資料行 '會員編號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂單.會員編號Column) = value End Set End Property _ Public Property 購物車編號() As String Get Try Return CType(Me(Me.table訂單.購物車編號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂單' 中資料行 '購物車編號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂單.購物車編號Column) = value End Set End Property _ Public Function Is付款方式Null() As Boolean Return Me.IsNull(Me.table訂單.付款方式Column) End Function _ Public Sub Set付款方式Null() Me(Me.table訂單.付款方式Column) = Global.System.Convert.DBNull End Sub _ Public Function Is取貨方式Null() As Boolean Return Me.IsNull(Me.table訂單.取貨方式Column) End Function _ Public Sub Set取貨方式Null() Me(Me.table訂單.取貨方式Column) = Global.System.Convert.DBNull End Sub _ Public Function Is訂單日期Null() As Boolean Return Me.IsNull(Me.table訂單.訂單日期Column) End Function _ Public Sub Set訂單日期Null() Me(Me.table訂單.訂單日期Column) = Global.System.Convert.DBNull End Sub _ Public Function Is會員編號Null() As Boolean Return Me.IsNull(Me.table訂單.會員編號Column) End Function _ Public Sub Set會員編號Null() Me(Me.table訂單.會員編號Column) = Global.System.Convert.DBNull End Sub _ Public Function Is購物車編號Null() As Boolean Return Me.IsNull(Me.table訂單.購物車編號Column) End Function _ Public Sub Set購物車編號Null() Me(Me.table訂單.購物車編號Column) = Global.System.Convert.DBNull End Sub End Class ''' '''Represents strongly named DataRow class. ''' Partial Public Class 購物車Row Inherits Global.System.Data.DataRow Private table購物車 As 購物車DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.table購物車 = CType(Me.Table,購物車DataTable) End Sub _ Public Property 會員編號() As String Get Return CType(Me(Me.table購物車.會員編號Column),String) End Get Set Me(Me.table購物車.會員編號Column) = value End Set End Property _ Public Property 運費() As String Get Try Return CType(Me(Me.table購物車.運費Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '購物車' 中資料行 '運費' 的值是 DBNull。", e) End Try End Get Set Me(Me.table購物車.運費Column) = value End Set End Property _ Public Property 總金額() As String Get Try Return CType(Me(Me.table購物車.總金額Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '購物車' 中資料行 '總金額' 的值是 DBNull。", e) End Try End Get Set Me(Me.table購物車.總金額Column) = value End Set End Property _ Public Property 購物車編號() As String Get Try Return CType(Me(Me.table購物車.購物車編號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '購物車' 中資料行 '購物車編號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table購物車.購物車編號Column) = value End Set End Property _ Public Function Is運費Null() As Boolean Return Me.IsNull(Me.table購物車.運費Column) End Function _ Public Sub Set運費Null() Me(Me.table購物車.運費Column) = Global.System.Convert.DBNull End Sub _ Public Function Is總金額Null() As Boolean Return Me.IsNull(Me.table購物車.總金額Column) End Function _ Public Sub Set總金額Null() Me(Me.table購物車.總金額Column) = Global.System.Convert.DBNull End Sub _ Public Function Is購物車編號Null() As Boolean Return Me.IsNull(Me.table購物車.購物車編號Column) End Function _ Public Sub Set購物車編號Null() Me(Me.table購物車.購物車編號Column) = Global.System.Convert.DBNull End Sub End Class ''' '''Represents strongly named DataRow class. ''' Partial Public Class 紀錄Row Inherits Global.System.Data.DataRow Private table紀錄 As 紀錄DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.table紀錄 = CType(Me.Table,紀錄DataTable) End Sub _ Public Property 訂單編號() As String Get Return CType(Me(Me.table紀錄.訂單編號Column),String) End Get Set Me(Me.table紀錄.訂單編號Column) = value End Set End Property _ Public Property 商品編號() As String Get Try Return CType(Me(Me.table紀錄.商品編號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '紀錄' 中資料行 '商品編號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table紀錄.商品編號Column) = value End Set End Property _ Public Property 訂購數量() As String Get Try Return CType(Me(Me.table紀錄.訂購數量Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '紀錄' 中資料行 '訂購數量' 的值是 DBNull。", e) End Try End Get Set Me(Me.table紀錄.訂購數量Column) = value End Set End Property _ Public Property 價錢() As String Get Try Return CType(Me(Me.table紀錄.價錢Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '紀錄' 中資料行 '價錢' 的值是 DBNull。", e) End Try End Get Set Me(Me.table紀錄.價錢Column) = value End Set End Property _ Public Function Is商品編號Null() As Boolean Return Me.IsNull(Me.table紀錄.商品編號Column) End Function _ Public Sub Set商品編號Null() Me(Me.table紀錄.商品編號Column) = Global.System.Convert.DBNull End Sub _ Public Function Is訂購數量Null() As Boolean Return Me.IsNull(Me.table紀錄.訂購數量Column) End Function _ Public Sub Set訂購數量Null() Me(Me.table紀錄.訂購數量Column) = Global.System.Convert.DBNull End Sub _ Public Function Is價錢Null() As Boolean Return Me.IsNull(Me.table紀錄.價錢Column) End Function _ Public Sub Set價錢Null() Me(Me.table紀錄.價錢Column) = Global.System.Convert.DBNull End Sub End Class ''' '''Represents strongly named DataRow class. ''' Partial Public Class 訂購Row Inherits Global.System.Data.DataRow Private table訂購 As 訂購DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.table訂購 = CType(Me.Table,訂購DataTable) End Sub _ Public Property 會員編號() As String Get Return CType(Me(Me.table訂購.會員編號Column),String) End Get Set Me(Me.table訂購.會員編號Column) = value End Set End Property _ Public Property 商品編號() As String Get Try Return CType(Me(Me.table訂購.商品編號Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂購' 中資料行 '商品編號' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂購.商品編號Column) = value End Set End Property _ Public Property 訂購數量() As String Get Try Return CType(Me(Me.table訂購.訂購數量Column),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("資料表 '訂購' 中資料行 '訂購數量' 的值是 DBNull。", e) End Try End Get Set Me(Me.table訂購.訂購數量Column) = value End Set End Property _ Public Function Is商品編號Null() As Boolean Return Me.IsNull(Me.table訂購.商品編號Column) End Function _ Public Sub Set商品編號Null() Me(Me.table訂購.商品編號Column) = Global.System.Convert.DBNull End Sub _ Public Function Is訂購數量Null() As Boolean Return Me.IsNull(Me.table訂購.訂購數量Column) End Function _ Public Sub Set訂購數量Null() Me(Me.table訂購.訂購數量Column) = Global.System.Convert.DBNull End Sub End Class ''' '''Row event argument class ''' _ Public Class 商品RowChangeEvent Inherits Global.System.EventArgs Private eventRow As 商品Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As 商品Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As 商品Row Get Return Me.eventRow End Get End Property _ Public ReadOnly Property Action() As Global.System.Data.DataRowAction Get Return Me.eventAction End Get End Property End Class ''' '''Row event argument class ''' _ Public Class 會員RowChangeEvent Inherits Global.System.EventArgs Private eventRow As 會員Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As 會員Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As 會員Row Get Return Me.eventRow End Get End Property _ Public ReadOnly Property Action() As Global.System.Data.DataRowAction Get Return Me.eventAction End Get End Property End Class ''' '''Row event argument class ''' _ Public Class 訂單RowChangeEvent Inherits Global.System.EventArgs Private eventRow As 訂單Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As 訂單Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As 訂單Row Get Return Me.eventRow End Get End Property _ Public ReadOnly Property Action() As Global.System.Data.DataRowAction Get Return Me.eventAction End Get End Property End Class ''' '''Row event argument class ''' _ Public Class 購物車RowChangeEvent Inherits Global.System.EventArgs Private eventRow As 購物車Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As 購物車Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As 購物車Row Get Return Me.eventRow End Get End Property _ Public ReadOnly Property Action() As Global.System.Data.DataRowAction Get Return Me.eventAction End Get End Property End Class ''' '''Row event argument class ''' _ Public Class 紀錄RowChangeEvent Inherits Global.System.EventArgs Private eventRow As 紀錄Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As 紀錄Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As 紀錄Row Get Return Me.eventRow End Get End Property _ Public ReadOnly Property Action() As Global.System.Data.DataRowAction Get Return Me.eventAction End Get End Property End Class ''' '''Row event argument class ''' _ Public Class 訂購RowChangeEvent Inherits Global.System.EventArgs Private eventRow As 訂購Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As 訂購Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As 訂購Row Get Return Me.eventRow End Get End Property _ Public ReadOnly Property Action() As Global.System.Data.DataRowAction Get Return Me.eventAction End Get End Property End Class End Class Namespace 謎鹿DataSetTableAdapters ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class 商品TableAdapter Inherits Global.System.ComponentModel.Component Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter Private _connection As Global.System.Data.SqlClient.SqlConnection Private _transaction As Global.System.Data.SqlClient.SqlTransaction Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand Private _clearBeforeFill As Boolean _ Public Sub New() MyBase.New Me.ClearBeforeFill = true End Sub _ Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter Get If (Me._adapter Is Nothing) Then Me.InitAdapter End If Return Me._adapter End Get End Property _ Friend Property Connection() As Global.System.Data.SqlClient.SqlConnection Get If (Me._connection Is Nothing) Then Me.InitConnection End If Return Me._connection End Get Set Me._connection = value If (Not (Me.Adapter.InsertCommand) Is Nothing) Then Me.Adapter.InsertCommand.Connection = value End If If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then Me.Adapter.DeleteCommand.Connection = value End If If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then Me.Adapter.UpdateCommand.Connection = value End If Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) If (Not (Me.CommandCollection(i)) Is Nothing) Then CType(Me.CommandCollection(i),Global.System.Data.SqlClient.SqlCommand).Connection = value End If i = (i + 1) Loop End Set End Property _ Friend Property Transaction() As Global.System.Data.SqlClient.SqlTransaction Get Return Me._transaction End Get Set Me._transaction = value Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) Me.CommandCollection(i).Transaction = Me._transaction i = (i + 1) Loop If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then Me.Adapter.DeleteCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then Me.Adapter.InsertCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then Me.Adapter.UpdateCommand.Transaction = Me._transaction End If End Set End Property _ Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() Get If (Me._commandCollection Is Nothing) Then Me.InitCommandCollection End If Return Me._commandCollection End Get End Property _ Public Property ClearBeforeFill() As Boolean Get Return Me._clearBeforeFill End Get Set Me._clearBeforeFill = value End Set End Property _ Private Sub InitAdapter() Me._adapter = New Global.System.Data.SqlClient.SqlDataAdapter() Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() tableMapping.SourceTable = "Table" tableMapping.DataSetTable = "商品" tableMapping.ColumnMappings.Add("商品編號", "商品編號") tableMapping.ColumnMappings.Add("商品名稱", "商品名稱") tableMapping.ColumnMappings.Add("庫存數量", "庫存數量") tableMapping.ColumnMappings.Add("定價", "定價") tableMapping.ColumnMappings.Add("種類", "種類") tableMapping.ColumnMappings.Add("管理者編號", "管理者編號") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection Me._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[商品] WHERE (([商品編號] = @Original_商品編號) AND ((@IsNull_商品名稱 = 1 AN"& _ "D [商品名稱] IS NULL) OR ([商品名稱] = @Original_商品名稱)) AND ((@IsNull_庫存數量 = 1 AND [庫存數量"& _ "] IS NULL) OR ([庫存數量] = @Original_庫存數量)) AND ((@IsNull_定價 = 1 AND [定價] IS NULL) "& _ "OR ([定價] = @Original_定價)) AND ((@IsNull_種類 = 1 AND [種類] IS NULL) OR ([種類] = @Ori"& _ "ginal_種類)) AND ((@IsNull_管理者編號 = 1 AND [管理者編號] IS NULL) OR ([管理者編號] = @Original_"& _ "管理者編號)))" Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_商品名稱", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品名稱", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_庫存數量", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_庫存數量", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_定價", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_定價", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_種類", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_種類", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_管理者編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_管理者編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[商品] ([商品編號], [商品名稱], [庫存數量], [定價], [種類], [管理者編號]) VALUES (@商品編"& _ "號, @商品名稱, @庫存數量, @定價, @種類, @管理者編號);"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號 FROM"& _ " 商品 WHERE (商品編號 = @商品編號)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品名稱", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@庫存數量", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@定價", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@種類", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@管理者編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[商品] SET [商品編號] = @商品編號, [商品名稱] = @商品名稱, [庫存數量] = @庫存數量, [定價] = @定價,"& _ " [種類] = @種類, [管理者編號] = @管理者編號 WHERE (([商品編號] = @Original_商品編號) AND ((@IsNull_商品名"& _ "稱 = 1 AND [商品名稱] IS NULL) OR ([商品名稱] = @Original_商品名稱)) AND ((@IsNull_庫存數量 = 1 A"& _ "ND [庫存數量] IS NULL) OR ([庫存數量] = @Original_庫存數量)) AND ((@IsNull_定價 = 1 AND [定價] I"& _ "S NULL) OR ([定價] = @Original_定價)) AND ((@IsNull_種類 = 1 AND [種類] IS NULL) OR ([種類"& _ "] = @Original_種類)) AND ((@IsNull_管理者編號 = 1 AND [管理者編號] IS NULL) OR ([管理者編號] = @O"& _ "riginal_管理者編號)));"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號 FROM 商品 WHERE (商品編號 = "& _ "@商品編號)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品名稱", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@庫存數量", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@定價", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@種類", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@管理者編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_商品名稱", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品名稱", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_庫存數量", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_庫存數量", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_定價", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_定價", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_種類", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_種類", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_管理者編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_管理者編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.謎鹿進銷存系統.My.MySettings.Default.謎鹿ConnectionString1 End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(6) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號 FROM dbo.商品" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(1).Connection = Me.Connection Me._commandCollection(1).CommandText = "DELETE FROM 商品"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (商品編號 = @商品編號)" Me._commandCollection(1).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._commandCollection(2) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(2).Connection = Me.Connection Me._commandCollection(2).CommandText = "SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 商品"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (商品編號 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (商品名稱 LIKE @keyword) O"& _ "R"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (庫存數量 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ " (定價 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (種類 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ " (管理者編號 LIKE @keyword)" Me._commandCollection(2).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@keyword", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(3).Connection = Me.Connection Me._commandCollection(3).CommandText = "SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 商品"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (商品編號 LIKE @sql)" Me._commandCollection(3).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@sql", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(4).Connection = Me.Connection Me._commandCollection(4).CommandText = "INSERT INTO 商品"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VA"& _ "LUES (@商品編號,@商品名稱,@庫存數量,@定價,@種類,@管理者編號); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 商品編號, 商品名稱, 庫存數量, 定價,"& _ " 種類, 管理者編號 FROM 商品 WHERE (商品編號 = @商品編號)" Me._commandCollection(4).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品名稱", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@庫存數量", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@定價", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@種類", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@管理者編號", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(5).Connection = Me.Connection Me._commandCollection(5).CommandText = "UPDATE 商品"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET 商品編號 = @商品編號, 商品名稱 = @商品名稱, 庫存數量 = @庫存數"& _ "量, 定價 = @定價, 種類 = @種類, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" 管理者編號 = @管理者編號"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (商品編號 = @商品編號); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號 FROM 商品 WHERE (商品編號"& _ " = @商品編號)" Me._commandCollection(5).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品名稱", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "商品名稱", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@庫存數量", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@定價", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "定價", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@種類", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "種類", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@管理者編號", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "管理者編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(6).Connection = Me.Connection Me._commandCollection(6).CommandText = "UPDATE 商品"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET 庫存數量 = @庫存數量"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (商品編號 = @商"& _ "品編號); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號 FROM 商品 WHERE (商品編號 = @商品編號)" Me._commandCollection(6).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@庫存數量", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "庫存數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As 謎鹿DataSet.商品DataTable) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(0) If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function GetData() As 謎鹿DataSet.商品DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As 謎鹿DataSet.商品DataTable = New 謎鹿DataSet.商品DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function FillByKeyword(ByVal dataTable As 謎鹿DataSet.商品DataTable, ByVal keyword As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(2) If (keyword Is Nothing) Then Throw New Global.System.ArgumentNullException("keyword") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(keyword,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function FillBysql(ByVal dataTable As 謎鹿DataSet.商品DataTable, ByVal sql As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(3) If (sql Is Nothing) Then Throw New Global.System.ArgumentNullException("sql") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(sql,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function Update(ByVal dataTable As 謎鹿DataSet.商品DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As 謎鹿DataSet) As Integer Return Me.Adapter.Update(dataSet, "商品") End Function _ Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) End Function _ Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(dataRows) End Function _ Public Overloads Overridable Function Delete(ByVal Original_商品編號 As Integer, ByVal Original_商品名稱 As String, ByVal Original_庫存數量 As String, ByVal Original_定價 As String, ByVal Original_種類 As String, ByVal Original_管理者編號 As String) As Integer Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_商品編號,Integer) If (Original_商品名稱 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_商品名稱,String) End If If (Original_庫存數量 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_庫存數量,String) End If If (Original_定價 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = CType(Original_定價,String) End If If (Original_種類 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(8).Value = CType(Original_種類,String) End If If (Original_管理者編號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(10).Value = CType(Original_管理者編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.DeleteCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.DeleteCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Insert(ByVal 商品編號 As Integer, ByVal 商品名稱 As String, ByVal 庫存數量 As String, ByVal 定價 As String, ByVal 種類 As String, ByVal 管理者編號 As String) As Integer Me.Adapter.InsertCommand.Parameters(0).Value = CType(商品編號,Integer) If (商品名稱 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(商品名稱,String) End If If (庫存數量 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(庫存數量,String) End If If (定價 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(3).Value = CType(定價,String) End If If (種類 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(4).Value = CType(種類,String) End If If (管理者編號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(5).Value = CType(管理者編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.InsertCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.InsertCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 商品編號 As Integer, ByVal 商品名稱 As String, ByVal 庫存數量 As String, ByVal 定價 As String, ByVal 種類 As String, ByVal 管理者編號 As String, ByVal Original_商品編號 As Integer, ByVal Original_商品名稱 As String, ByVal Original_庫存數量 As String, ByVal Original_定價 As String, ByVal Original_種類 As String, ByVal Original_管理者編號 As String) As Integer Me.Adapter.UpdateCommand.Parameters(0).Value = CType(商品編號,Integer) If (商品名稱 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(1).Value = CType(商品名稱,String) End If If (庫存數量 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(2).Value = CType(庫存數量,String) End If If (定價 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(3).Value = CType(定價,String) End If If (種類 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(4).Value = CType(種類,String) End If If (管理者編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(5).Value = CType(管理者編號,String) End If Me.Adapter.UpdateCommand.Parameters(6).Value = CType(Original_商品編號,Integer) If (Original_商品名稱 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_商品名稱,String) End If If (Original_庫存數量 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = CType(Original_庫存數量,String) End If If (Original_定價 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(11).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(12).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(11).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(12).Value = CType(Original_定價,String) End If If (Original_種類 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(13).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(14).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(13).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(14).Value = CType(Original_種類,String) End If If (Original_管理者編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(15).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(16).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(15).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(16).Value = CType(Original_管理者編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.UpdateCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.UpdateCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 商品名稱 As String, ByVal 庫存數量 As String, ByVal 定價 As String, ByVal 種類 As String, ByVal 管理者編號 As String, ByVal Original_商品編號 As Integer, ByVal Original_商品名稱 As String, ByVal Original_庫存數量 As String, ByVal Original_定價 As String, ByVal Original_種類 As String, ByVal Original_管理者編號 As String) As Integer Return Me.Update(Original_商品編號, 商品名稱, 庫存數量, 定價, 種類, 管理者編號, Original_商品編號, Original_商品名稱, Original_庫存數量, Original_定價, Original_種類, Original_管理者編號) End Function _ Public Overloads Overridable Function DeleteQuery(ByVal 商品編號 As Integer) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(1) command.Parameters(0).Value = CType(商品編號,Integer) Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function InsertQuery(ByVal 商品編號 As Integer, ByVal 商品名稱 As String, ByVal 庫存數量 As String, ByVal 定價 As String, ByVal 種類 As String, ByVal 管理者編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(4) command.Parameters(0).Value = CType(商品編號,Integer) If (商品名稱 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(商品名稱,String) End If If (庫存數量 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(庫存數量,String) End If If (定價 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(定價,String) End If If (種類 Is Nothing) Then command.Parameters(4).Value = Global.System.DBNull.Value Else command.Parameters(4).Value = CType(種類,String) End If If (管理者編號 Is Nothing) Then command.Parameters(5).Value = Global.System.DBNull.Value Else command.Parameters(5).Value = CType(管理者編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function UpdateQuery(ByVal 商品編號 As Integer, ByVal 商品名稱 As String, ByVal 庫存數量 As String, ByVal 定價 As String, ByVal 種類 As String, ByVal 管理者編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(5) command.Parameters(0).Value = CType(商品編號,Integer) If (商品名稱 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(商品名稱,String) End If If (庫存數量 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(庫存數量,String) End If If (定價 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(定價,String) End If If (種類 Is Nothing) Then command.Parameters(4).Value = Global.System.DBNull.Value Else command.Parameters(4).Value = CType(種類,String) End If If (管理者編號 Is Nothing) Then command.Parameters(5).Value = Global.System.DBNull.Value Else command.Parameters(5).Value = CType(管理者編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function UpdateQueryNumber(ByVal 庫存數量 As String, ByVal 商品編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(6) If (庫存數量 Is Nothing) Then command.Parameters(0).Value = Global.System.DBNull.Value Else command.Parameters(0).Value = CType(庫存數量,String) End If If (商品編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("商品編號") Else command.Parameters(1).Value = CType(商品編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function End Class ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class 會員TableAdapter Inherits Global.System.ComponentModel.Component Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter Private _connection As Global.System.Data.SqlClient.SqlConnection Private _transaction As Global.System.Data.SqlClient.SqlTransaction Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand Private _clearBeforeFill As Boolean _ Public Sub New() MyBase.New Me.ClearBeforeFill = true End Sub _ Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter Get If (Me._adapter Is Nothing) Then Me.InitAdapter End If Return Me._adapter End Get End Property _ Friend Property Connection() As Global.System.Data.SqlClient.SqlConnection Get If (Me._connection Is Nothing) Then Me.InitConnection End If Return Me._connection End Get Set Me._connection = value If (Not (Me.Adapter.InsertCommand) Is Nothing) Then Me.Adapter.InsertCommand.Connection = value End If If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then Me.Adapter.DeleteCommand.Connection = value End If If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then Me.Adapter.UpdateCommand.Connection = value End If Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) If (Not (Me.CommandCollection(i)) Is Nothing) Then CType(Me.CommandCollection(i),Global.System.Data.SqlClient.SqlCommand).Connection = value End If i = (i + 1) Loop End Set End Property _ Friend Property Transaction() As Global.System.Data.SqlClient.SqlTransaction Get Return Me._transaction End Get Set Me._transaction = value Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) Me.CommandCollection(i).Transaction = Me._transaction i = (i + 1) Loop If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then Me.Adapter.DeleteCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then Me.Adapter.InsertCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then Me.Adapter.UpdateCommand.Transaction = Me._transaction End If End Set End Property _ Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() Get If (Me._commandCollection Is Nothing) Then Me.InitCommandCollection End If Return Me._commandCollection End Get End Property _ Public Property ClearBeforeFill() As Boolean Get Return Me._clearBeforeFill End Get Set Me._clearBeforeFill = value End Set End Property _ Private Sub InitAdapter() Me._adapter = New Global.System.Data.SqlClient.SqlDataAdapter() Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() tableMapping.SourceTable = "Table" tableMapping.DataSetTable = "會員" tableMapping.ColumnMappings.Add("會員編號", "會員編號") tableMapping.ColumnMappings.Add("帳號", "帳號") tableMapping.ColumnMappings.Add("密碼", "密碼") tableMapping.ColumnMappings.Add("姓名", "姓名") tableMapping.ColumnMappings.Add("電話", "電話") tableMapping.ColumnMappings.Add("住址", "住址") tableMapping.ColumnMappings.Add("email", "email") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection Me._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[會員] WHERE (([會員編號] = @Original_會員編號) AND ((@IsNull_帳號 = 1 AND "& _ "[帳號] IS NULL) OR ([帳號] = @Original_帳號)) AND ((@IsNull_密碼 = 1 AND [密碼] IS NULL) O"& _ "R ([密碼] = @Original_密碼)) AND ((@IsNull_姓名 = 1 AND [姓名] IS NULL) OR ([姓名] = @Orig"& _ "inal_姓名)) AND ((@IsNull_電話 = 1 AND [電話] IS NULL) OR ([電話] = @Original_電話)) AND ("& _ "(@IsNull_住址 = 1 AND [住址] IS NULL) OR ([住址] = @Original_住址)) AND ((@IsNull_email "& _ "= 1 AND [email] IS NULL) OR ([email] = @Original_email)))" Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_帳號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_帳號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_密碼", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_密碼", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_姓名", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_姓名", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_電話", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_電話", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_住址", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_住址", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_email", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_email", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[會員] ([會員編號], [帳號], [密碼], [姓名], [電話], [住址], [email]) VALUES (@會"& _ "員編號, @帳號, @密碼, @姓名, @電話, @住址, @email);"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 帳號, 密碼, 姓名, 電話, 住址, email F"& _ "ROM 會員 WHERE (會員編號 = @會員編號)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@帳號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@密碼", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@姓名", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@電話", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@住址", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@email", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[會員] SET [會員編號] = @會員編號, [帳號] = @帳號, [密碼] = @密碼, [姓名] = @姓名, [電話] = "& _ "@電話, [住址] = @住址, [email] = @email WHERE (([會員編號] = @Original_會員編號) AND ((@IsNull"& _ "_帳號 = 1 AND [帳號] IS NULL) OR ([帳號] = @Original_帳號)) AND ((@IsNull_密碼 = 1 AND [密碼"& _ "] IS NULL) OR ([密碼] = @Original_密碼)) AND ((@IsNull_姓名 = 1 AND [姓名] IS NULL) OR ("& _ "[姓名] = @Original_姓名)) AND ((@IsNull_電話 = 1 AND [電話] IS NULL) OR ([電話] = @Origina"& _ "l_電話)) AND ((@IsNull_住址 = 1 AND [住址] IS NULL) OR ([住址] = @Original_住址)) AND ((@I"& _ "sNull_email = 1 AND [email] IS NULL) OR ([email] = @Original_email)));"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會"& _ "員編號, 帳號, 密碼, 姓名, 電話, 住址, email FROM 會員 WHERE (會員編號 = @會員編號)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@帳號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@密碼", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@姓名", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@電話", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@住址", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@email", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_帳號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_帳號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_密碼", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_密碼", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_姓名", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_姓名", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_電話", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_電話", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_住址", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_住址", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_email", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_email", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.謎鹿進銷存系統.My.MySettings.Default.謎鹿ConnectionString1 End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(6) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT 會員編號, 帳號, 密碼, 姓名, 電話, 住址, email FROM dbo.會員" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(1).Connection = Me.Connection Me._commandCollection(1).CommandText = "DELETE FROM 會員"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (會員編號 = @會員編號)" Me._commandCollection(1).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._commandCollection(2) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(2).Connection = Me.Connection Me._commandCollection(2).CommandText = "SELECT 會員編號, 帳號, 密碼, 姓名, 電話, 住址, email"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 會員"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (email LIKE @nvarchar)" Me._commandCollection(2).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@nvarchar", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(3).Connection = Me.Connection Me._commandCollection(3).CommandText = "SELECT 會員編號, 帳號, 密碼, 姓名, 電話, 住址, email"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 會員"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (會員編號 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (帳號 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (密碼 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ "(姓名 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (電話 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ " (住址 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (email "& _ "LIKE @keyword)" Me._commandCollection(3).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@keyword", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(4) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(4).Connection = Me.Connection Me._commandCollection(4).CommandText = "SELECT 會員編號, 帳號, 密碼, 姓名, 電話, 住址, email"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 會員"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (會員編號 LIKE @sql)" Me._commandCollection(4).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(4).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@sql", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(5).Connection = Me.Connection Me._commandCollection(5).CommandText = "INSERT INTO 會員"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (會員編號, 帳號, 密碼, 姓名, 電話, 住址, email)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VA"& _ "LUES (@會員編號,@帳號,@密碼,@姓名,@電話,@住址,@email); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 帳號, 密碼, 姓名, 電話"& _ ", 住址, email FROM 會員 WHERE (會員編號 = @會員編號)" Me._commandCollection(5).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@帳號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@密碼", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@姓名", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@電話", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@住址", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@email", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(6).Connection = Me.Connection Me._commandCollection(6).CommandText = "UPDATE 會員"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET 會員編號 = @會員編號, 帳號 = @帳號, 密碼 = @密碼, 姓名 = "& _ "@姓名, 電話 = @電話, 住址 = @住址, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" email = @email"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ " (會員編號 = @會員編號); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 帳號, 密碼, 姓名, 電話, 住址, email FROM 會員 WHERE (會"& _ "員編號 = @會員編號)" Me._commandCollection(6).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@帳號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "帳號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@密碼", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "密碼", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@姓名", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "姓名", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@電話", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "電話", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@住址", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "住址", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@email", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "email", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As 謎鹿DataSet.會員DataTable) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(0) If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function GetData() As 謎鹿DataSet.會員DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As 謎鹿DataSet.會員DataTable = New 謎鹿DataSet.會員DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function FillByemail(ByVal dataTable As 謎鹿DataSet.會員DataTable, ByVal nvarchar As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(2) If (nvarchar Is Nothing) Then Me.Adapter.SelectCommand.Parameters(0).Value = Global.System.DBNull.Value Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(nvarchar,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function FillByKeyword(ByVal dataTable As 謎鹿DataSet.會員DataTable, ByVal keyword As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(3) If (keyword Is Nothing) Then Throw New Global.System.ArgumentNullException("keyword") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(keyword,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function FillBysql(ByVal dataTable As 謎鹿DataSet.會員DataTable, ByVal sql As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(4) If (sql Is Nothing) Then Throw New Global.System.ArgumentNullException("sql") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(sql,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function Update(ByVal dataTable As 謎鹿DataSet.會員DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As 謎鹿DataSet) As Integer Return Me.Adapter.Update(dataSet, "會員") End Function _ Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) End Function _ Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(dataRows) End Function _ Public Overloads Overridable Function Delete(ByVal Original_會員編號 As String, ByVal Original_帳號 As String, ByVal Original_密碼 As String, ByVal Original_姓名 As String, ByVal Original_電話 As String, ByVal Original_住址 As String, ByVal Original_email As String) As Integer If (Original_會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_會員編號") Else Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_會員編號,String) End If If (Original_帳號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_帳號,String) End If If (Original_密碼 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_密碼,String) End If If (Original_姓名 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = CType(Original_姓名,String) End If If (Original_電話 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(8).Value = CType(Original_電話,String) End If If (Original_住址 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(10).Value = CType(Original_住址,String) End If If (Original_email Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(11).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(12).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(11).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(12).Value = CType(Original_email,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.DeleteCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.DeleteCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Insert(ByVal 會員編號 As String, ByVal 帳號 As String, ByVal 密碼 As String, ByVal 姓名 As String, ByVal 電話 As String, ByVal 住址 As String, ByVal email As String) As Integer If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else Me.Adapter.InsertCommand.Parameters(0).Value = CType(會員編號,String) End If If (帳號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(帳號,String) End If If (密碼 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(密碼,String) End If If (姓名 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(3).Value = CType(姓名,String) End If If (電話 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(4).Value = CType(電話,String) End If If (住址 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(5).Value = CType(住址,String) End If If (email Is Nothing) Then Me.Adapter.InsertCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(6).Value = CType(email,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.InsertCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.InsertCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 會員編號 As String, ByVal 帳號 As String, ByVal 密碼 As String, ByVal 姓名 As String, ByVal 電話 As String, ByVal 住址 As String, ByVal email As String, ByVal Original_會員編號 As String, ByVal Original_帳號 As String, ByVal Original_密碼 As String, ByVal Original_姓名 As String, ByVal Original_電話 As String, ByVal Original_住址 As String, ByVal Original_email As String) As Integer If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else Me.Adapter.UpdateCommand.Parameters(0).Value = CType(會員編號,String) End If If (帳號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(1).Value = CType(帳號,String) End If If (密碼 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(2).Value = CType(密碼,String) End If If (姓名 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(3).Value = CType(姓名,String) End If If (電話 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(4).Value = CType(電話,String) End If If (住址 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(5).Value = CType(住址,String) End If If (email Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(6).Value = CType(email,String) End If If (Original_會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_會員編號") Else Me.Adapter.UpdateCommand.Parameters(7).Value = CType(Original_會員編號,String) End If If (Original_帳號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(8).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(9).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(8).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(9).Value = CType(Original_帳號,String) End If If (Original_密碼 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(10).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(11).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(10).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(11).Value = CType(Original_密碼,String) End If If (Original_姓名 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(12).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(13).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(12).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(13).Value = CType(Original_姓名,String) End If If (Original_電話 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(14).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(15).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(14).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(15).Value = CType(Original_電話,String) End If If (Original_住址 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(16).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(17).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(16).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(17).Value = CType(Original_住址,String) End If If (Original_email Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(18).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(19).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(18).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(19).Value = CType(Original_email,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.UpdateCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.UpdateCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 帳號 As String, ByVal 密碼 As String, ByVal 姓名 As String, ByVal 電話 As String, ByVal 住址 As String, ByVal email As String, ByVal Original_會員編號 As String, ByVal Original_帳號 As String, ByVal Original_密碼 As String, ByVal Original_姓名 As String, ByVal Original_電話 As String, ByVal Original_住址 As String, ByVal Original_email As String) As Integer Return Me.Update(Original_會員編號, 帳號, 密碼, 姓名, 電話, 住址, email, Original_會員編號, Original_帳號, Original_密碼, Original_姓名, Original_電話, Original_住址, Original_email) End Function _ Public Overloads Overridable Function DeleteQuery(ByVal 會員編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(1) If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else command.Parameters(0).Value = CType(會員編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function InsertQuery(ByVal 會員編號 As String, ByVal 帳號 As String, ByVal 密碼 As String, ByVal 姓名 As String, ByVal 電話 As String, ByVal 住址 As String, ByVal email As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(5) If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else command.Parameters(0).Value = CType(會員編號,String) End If If (帳號 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(帳號,String) End If If (密碼 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(密碼,String) End If If (姓名 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(姓名,String) End If If (電話 Is Nothing) Then command.Parameters(4).Value = Global.System.DBNull.Value Else command.Parameters(4).Value = CType(電話,String) End If If (住址 Is Nothing) Then command.Parameters(5).Value = Global.System.DBNull.Value Else command.Parameters(5).Value = CType(住址,String) End If If (email Is Nothing) Then command.Parameters(6).Value = Global.System.DBNull.Value Else command.Parameters(6).Value = CType(email,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function UpdateQuery(ByVal 會員編號 As String, ByVal 帳號 As String, ByVal 密碼 As String, ByVal 姓名 As String, ByVal 電話 As String, ByVal 住址 As String, ByVal email As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(6) If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else command.Parameters(0).Value = CType(會員編號,String) End If If (帳號 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(帳號,String) End If If (密碼 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(密碼,String) End If If (姓名 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(姓名,String) End If If (電話 Is Nothing) Then command.Parameters(4).Value = Global.System.DBNull.Value Else command.Parameters(4).Value = CType(電話,String) End If If (住址 Is Nothing) Then command.Parameters(5).Value = Global.System.DBNull.Value Else command.Parameters(5).Value = CType(住址,String) End If If (email Is Nothing) Then command.Parameters(6).Value = Global.System.DBNull.Value Else command.Parameters(6).Value = CType(email,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function End Class ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class 訂單TableAdapter Inherits Global.System.ComponentModel.Component Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter Private _connection As Global.System.Data.SqlClient.SqlConnection Private _transaction As Global.System.Data.SqlClient.SqlTransaction Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand Private _clearBeforeFill As Boolean _ Public Sub New() MyBase.New Me.ClearBeforeFill = true End Sub _ Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter Get If (Me._adapter Is Nothing) Then Me.InitAdapter End If Return Me._adapter End Get End Property _ Friend Property Connection() As Global.System.Data.SqlClient.SqlConnection Get If (Me._connection Is Nothing) Then Me.InitConnection End If Return Me._connection End Get Set Me._connection = value If (Not (Me.Adapter.InsertCommand) Is Nothing) Then Me.Adapter.InsertCommand.Connection = value End If If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then Me.Adapter.DeleteCommand.Connection = value End If If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then Me.Adapter.UpdateCommand.Connection = value End If Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) If (Not (Me.CommandCollection(i)) Is Nothing) Then CType(Me.CommandCollection(i),Global.System.Data.SqlClient.SqlCommand).Connection = value End If i = (i + 1) Loop End Set End Property _ Friend Property Transaction() As Global.System.Data.SqlClient.SqlTransaction Get Return Me._transaction End Get Set Me._transaction = value Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) Me.CommandCollection(i).Transaction = Me._transaction i = (i + 1) Loop If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then Me.Adapter.DeleteCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then Me.Adapter.InsertCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then Me.Adapter.UpdateCommand.Transaction = Me._transaction End If End Set End Property _ Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() Get If (Me._commandCollection Is Nothing) Then Me.InitCommandCollection End If Return Me._commandCollection End Get End Property _ Public Property ClearBeforeFill() As Boolean Get Return Me._clearBeforeFill End Get Set Me._clearBeforeFill = value End Set End Property _ Private Sub InitAdapter() Me._adapter = New Global.System.Data.SqlClient.SqlDataAdapter() Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() tableMapping.SourceTable = "Table" tableMapping.DataSetTable = "訂單" tableMapping.ColumnMappings.Add("訂單編號", "訂單編號") tableMapping.ColumnMappings.Add("付款方式", "付款方式") tableMapping.ColumnMappings.Add("取貨方式", "取貨方式") tableMapping.ColumnMappings.Add("訂單日期", "訂單日期") tableMapping.ColumnMappings.Add("會員編號", "會員編號") tableMapping.ColumnMappings.Add("購物車編號", "購物車編號") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection Me._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[訂單] WHERE (([訂單編號] = @Original_訂單編號) AND ((@IsNull_付款方式 = 1 AN"& _ "D [付款方式] IS NULL) OR ([付款方式] = @Original_付款方式)) AND ((@IsNull_取貨方式 = 1 AND [取貨方式"& _ "] IS NULL) OR ([取貨方式] = @Original_取貨方式)) AND ((@IsNull_訂單日期 = 1 AND [訂單日期] IS NU"& _ "LL) OR ([訂單日期] = @Original_訂單日期)) AND ((@IsNull_會員編號 = 1 AND [會員編號] IS NULL) OR "& _ "([會員編號] = @Original_會員編號)) AND ((@IsNull_購物車編號 = 1 AND [購物車編號] IS NULL) OR ([購物車"& _ "編號] = @Original_購物車編號)))" Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂單編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_付款方式", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_付款方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_取貨方式", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_取貨方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_訂單日期", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂單日期", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_會員編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_購物車編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_購物車編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[訂單] ([訂單編號], [付款方式], [取貨方式], [訂單日期], [會員編號], [購物車編號]) VALUES ("& _ "@訂單編號, @付款方式, @取貨方式, @訂單日期, @會員編號, @購物車編號);"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 訂單編號, 付款方式, 取貨方式, 訂單日期, 會員編號"& _ ", 購物車編號 FROM 訂單 WHERE (訂單編號 = @訂單編號)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@付款方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@取貨方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單日期", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@購物車編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[訂單] SET [訂單編號] = @訂單編號, [付款方式] = @付款方式, [取貨方式] = @取貨方式, [訂單日期] = @訂"& _ "單日期, [會員編號] = @會員編號, [購物車編號] = @購物車編號 WHERE (([訂單編號] = @Original_訂單編號) AND ((@Is"& _ "Null_付款方式 = 1 AND [付款方式] IS NULL) OR ([付款方式] = @Original_付款方式)) AND ((@IsNull_取貨"& _ "方式 = 1 AND [取貨方式] IS NULL) OR ([取貨方式] = @Original_取貨方式)) AND ((@IsNull_訂單日期 = 1 "& _ "AND [訂單日期] IS NULL) OR ([訂單日期] = @Original_訂單日期)) AND ((@IsNull_會員編號 = 1 AND [會員"& _ "編號] IS NULL) OR ([會員編號] = @Original_會員編號)) AND ((@IsNull_購物車編號 = 1 AND [購物車編號] I"& _ "S NULL) OR ([購物車編號] = @Original_購物車編號)));"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 訂單編號, 付款方式, 取貨方式, 訂單日期, 會員編號, "& _ "購物車編號 FROM 訂單 WHERE (訂單編號 = @訂單編號)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@付款方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@取貨方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單日期", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@購物車編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂單編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_付款方式", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_付款方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_取貨方式", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_取貨方式", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_訂單日期", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂單日期", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_會員編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_購物車編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_購物車編號", Global.System.Data.SqlDbType.NChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.謎鹿進銷存系統.My.MySettings.Default.謎鹿ConnectionString1 End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(2) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT 訂單編號, 付款方式, 取貨方式, 訂單日期, 會員編號, 購物車編號 FROM dbo.訂單" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(1).Connection = Me.Connection Me._commandCollection(1).CommandText = "DELETE FROM 訂單"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (訂單編號 = @訂單編號)" Me._commandCollection(1).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._commandCollection(2) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(2).Connection = Me.Connection Me._commandCollection(2).CommandText = "INSERT INTO 訂單"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (訂單編號, 付款方式, 取貨方式, 訂單日期, 會員編號, 購物車編號)"& _ ""&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES (@訂單編號,@付款方式,@取貨方式,@訂單日期,@會員編號,@購物車編號); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 訂單編號, 付款方式, 取"& _ "貨方式, 訂單日期, 會員編號, 購物車編號 FROM 訂單 WHERE (訂單編號 = @訂單編號)" Me._commandCollection(2).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@付款方式", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "付款方式", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@取貨方式", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "取貨方式", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單日期", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單日期", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@購物車編號", Global.System.Data.SqlDbType.NChar, 10, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As 謎鹿DataSet.訂單DataTable) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(0) If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function GetData() As 謎鹿DataSet.訂單DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As 謎鹿DataSet.訂單DataTable = New 謎鹿DataSet.訂單DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function Update(ByVal dataTable As 謎鹿DataSet.訂單DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As 謎鹿DataSet) As Integer Return Me.Adapter.Update(dataSet, "訂單") End Function _ Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) End Function _ Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(dataRows) End Function _ Public Overloads Overridable Function Delete(ByVal Original_訂單編號 As Integer, ByVal Original_付款方式 As String, ByVal Original_取貨方式 As String, ByVal Original_訂單日期 As String, ByVal Original_會員編號 As String, ByVal Original_購物車編號 As String) As Integer Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_訂單編號,Integer) If (Original_付款方式 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_付款方式,String) End If If (Original_取貨方式 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_取貨方式,String) End If If (Original_訂單日期 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = CType(Original_訂單日期,String) End If If (Original_會員編號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(8).Value = CType(Original_會員編號,String) End If If (Original_購物車編號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(10).Value = CType(Original_購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.DeleteCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.DeleteCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Insert(ByVal 訂單編號 As Integer, ByVal 付款方式 As String, ByVal 取貨方式 As String, ByVal 訂單日期 As String, ByVal 會員編號 As String, ByVal 購物車編號 As String) As Integer Me.Adapter.InsertCommand.Parameters(0).Value = CType(訂單編號,Integer) If (付款方式 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(付款方式,String) End If If (取貨方式 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(取貨方式,String) End If If (訂單日期 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(3).Value = CType(訂單日期,String) End If If (會員編號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(4).Value = CType(會員編號,String) End If If (購物車編號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(5).Value = CType(購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.InsertCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.InsertCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 訂單編號 As Integer, ByVal 付款方式 As String, ByVal 取貨方式 As String, ByVal 訂單日期 As String, ByVal 會員編號 As String, ByVal 購物車編號 As String, ByVal Original_訂單編號 As Integer, ByVal Original_付款方式 As String, ByVal Original_取貨方式 As String, ByVal Original_訂單日期 As String, ByVal Original_會員編號 As String, ByVal Original_購物車編號 As String) As Integer Me.Adapter.UpdateCommand.Parameters(0).Value = CType(訂單編號,Integer) If (付款方式 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(1).Value = CType(付款方式,String) End If If (取貨方式 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(2).Value = CType(取貨方式,String) End If If (訂單日期 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(3).Value = CType(訂單日期,String) End If If (會員編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(4).Value = CType(會員編號,String) End If If (購物車編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(5).Value = CType(購物車編號,String) End If Me.Adapter.UpdateCommand.Parameters(6).Value = CType(Original_訂單編號,Integer) If (Original_付款方式 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_付款方式,String) End If If (Original_取貨方式 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = CType(Original_取貨方式,String) End If If (Original_訂單日期 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(11).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(12).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(11).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(12).Value = CType(Original_訂單日期,String) End If If (Original_會員編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(13).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(14).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(13).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(14).Value = CType(Original_會員編號,String) End If If (Original_購物車編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(15).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(16).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(15).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(16).Value = CType(Original_購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.UpdateCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.UpdateCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 付款方式 As String, ByVal 取貨方式 As String, ByVal 訂單日期 As String, ByVal 會員編號 As String, ByVal 購物車編號 As String, ByVal Original_訂單編號 As Integer, ByVal Original_付款方式 As String, ByVal Original_取貨方式 As String, ByVal Original_訂單日期 As String, ByVal Original_會員編號 As String, ByVal Original_購物車編號 As String) As Integer Return Me.Update(Original_訂單編號, 付款方式, 取貨方式, 訂單日期, 會員編號, 購物車編號, Original_訂單編號, Original_付款方式, Original_取貨方式, Original_訂單日期, Original_會員編號, Original_購物車編號) End Function _ Public Overloads Overridable Function DeleteQuery(ByVal 訂單編號 As Integer) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(1) command.Parameters(0).Value = CType(訂單編號,Integer) Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function InsertQuery(ByVal 訂單編號 As Integer, ByVal 付款方式 As String, ByVal 取貨方式 As String, ByVal 訂單日期 As String, ByVal 會員編號 As String, ByVal 購物車編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(2) command.Parameters(0).Value = CType(訂單編號,Integer) If (付款方式 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(付款方式,String) End If If (取貨方式 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(取貨方式,String) End If If (訂單日期 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(訂單日期,String) End If If (會員編號 Is Nothing) Then command.Parameters(4).Value = Global.System.DBNull.Value Else command.Parameters(4).Value = CType(會員編號,String) End If If (購物車編號 Is Nothing) Then command.Parameters(5).Value = Global.System.DBNull.Value Else command.Parameters(5).Value = CType(購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function End Class ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class 購物車TableAdapter Inherits Global.System.ComponentModel.Component Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter Private _connection As Global.System.Data.SqlClient.SqlConnection Private _transaction As Global.System.Data.SqlClient.SqlTransaction Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand Private _clearBeforeFill As Boolean _ Public Sub New() MyBase.New Me.ClearBeforeFill = true End Sub _ Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter Get If (Me._adapter Is Nothing) Then Me.InitAdapter End If Return Me._adapter End Get End Property _ Friend Property Connection() As Global.System.Data.SqlClient.SqlConnection Get If (Me._connection Is Nothing) Then Me.InitConnection End If Return Me._connection End Get Set Me._connection = value If (Not (Me.Adapter.InsertCommand) Is Nothing) Then Me.Adapter.InsertCommand.Connection = value End If If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then Me.Adapter.DeleteCommand.Connection = value End If If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then Me.Adapter.UpdateCommand.Connection = value End If Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) If (Not (Me.CommandCollection(i)) Is Nothing) Then CType(Me.CommandCollection(i),Global.System.Data.SqlClient.SqlCommand).Connection = value End If i = (i + 1) Loop End Set End Property _ Friend Property Transaction() As Global.System.Data.SqlClient.SqlTransaction Get Return Me._transaction End Get Set Me._transaction = value Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) Me.CommandCollection(i).Transaction = Me._transaction i = (i + 1) Loop If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then Me.Adapter.DeleteCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then Me.Adapter.InsertCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then Me.Adapter.UpdateCommand.Transaction = Me._transaction End If End Set End Property _ Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() Get If (Me._commandCollection Is Nothing) Then Me.InitCommandCollection End If Return Me._commandCollection End Get End Property _ Public Property ClearBeforeFill() As Boolean Get Return Me._clearBeforeFill End Get Set Me._clearBeforeFill = value End Set End Property _ Private Sub InitAdapter() Me._adapter = New Global.System.Data.SqlClient.SqlDataAdapter() Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() tableMapping.SourceTable = "Table" tableMapping.DataSetTable = "購物車" tableMapping.ColumnMappings.Add("會員編號", "會員編號") tableMapping.ColumnMappings.Add("運費", "運費") tableMapping.ColumnMappings.Add("總金額", "總金額") tableMapping.ColumnMappings.Add("購物車編號", "購物車編號") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection Me._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[購物車] WHERE (([會員編號] = @Original_會員編號) AND ((@IsNull_運費 = 1 AND"& _ " [運費] IS NULL) OR ([運費] = @Original_運費)) AND ((@IsNull_總金額 = 1 AND [總金額] IS NULL"& _ ") OR ([總金額] = @Original_總金額)) AND ((@IsNull_購物車編號 = 1 AND [購物車編號] IS NULL) OR (["& _ "購物車編號] = @Original_購物車編號)))" Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_運費", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_運費", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_總金額", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_總金額", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_購物車編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_購物車編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[購物車] ([會員編號], [運費], [總金額], [購物車編號]) VALUES (@會員編號, @運費, @總金額, "& _ "@購物車編號);"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 運費, 總金額, 購物車編號 FROM 購物車 WHERE (會員編號 = @會員編號)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@運費", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@總金額", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@購物車編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[購物車] SET [會員編號] = @會員編號, [運費] = @運費, [總金額] = @總金額, [購物車編號] = @購物車編號"& _ " WHERE (([會員編號] = @Original_會員編號) AND ((@IsNull_運費 = 1 AND [運費] IS NULL) OR ([運費"& _ "] = @Original_運費)) AND ((@IsNull_總金額 = 1 AND [總金額] IS NULL) OR ([總金額] = @Origina"& _ "l_總金額)) AND ((@IsNull_購物車編號 = 1 AND [購物車編號] IS NULL) OR ([購物車編號] = @Original_購物車"& _ "編號)));"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 運費, 總金額, 購物車編號 FROM 購物車 WHERE (會員編號 = @會員編號)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@運費", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@總金額", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@購物車編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_運費", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_運費", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_總金額", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_總金額", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_購物車編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_購物車編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.謎鹿進銷存系統.My.MySettings.Default.謎鹿ConnectionString1 End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(2) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT 會員編號, 運費, 總金額, 購物車編號 FROM dbo.購物車" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(1).Connection = Me.Connection Me._commandCollection(1).CommandText = "DELETE FROM 購物車"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (會員編號 = @會員編號)" Me._commandCollection(1).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._commandCollection(2) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(2).Connection = Me.Connection Me._commandCollection(2).CommandText = "INSERT INTO 購物車"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (會員編號, 運費, 總金額, 購物車編號)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES "& _ " (@會員編號,@運費,@總金額,@購物車編號); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 運費, 總金額, 購物車編號 FROM 購物車 WHERE (會員編號 "& _ "= @會員編號)" Me._commandCollection(2).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@運費", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "運費", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@總金額", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "總金額", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@購物車編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "購物車編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As 謎鹿DataSet.購物車DataTable) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(0) If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function GetData() As 謎鹿DataSet.購物車DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As 謎鹿DataSet.購物車DataTable = New 謎鹿DataSet.購物車DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function Update(ByVal dataTable As 謎鹿DataSet.購物車DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As 謎鹿DataSet) As Integer Return Me.Adapter.Update(dataSet, "購物車") End Function _ Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) End Function _ Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(dataRows) End Function _ Public Overloads Overridable Function Delete(ByVal Original_會員編號 As String, ByVal Original_運費 As String, ByVal Original_總金額 As String, ByVal Original_購物車編號 As String) As Integer If (Original_會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_會員編號") Else Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_會員編號,String) End If If (Original_運費 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_運費,String) End If If (Original_總金額 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_總金額,String) End If If (Original_購物車編號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = CType(Original_購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.DeleteCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.DeleteCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Insert(ByVal 會員編號 As String, ByVal 運費 As String, ByVal 總金額 As String, ByVal 購物車編號 As String) As Integer If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else Me.Adapter.InsertCommand.Parameters(0).Value = CType(會員編號,String) End If If (運費 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(運費,String) End If If (總金額 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(總金額,String) End If If (購物車編號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(3).Value = CType(購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.InsertCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.InsertCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 會員編號 As String, ByVal 運費 As String, ByVal 總金額 As String, ByVal 購物車編號 As String, ByVal Original_會員編號 As String, ByVal Original_運費 As String, ByVal Original_總金額 As String, ByVal Original_購物車編號 As String) As Integer If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else Me.Adapter.UpdateCommand.Parameters(0).Value = CType(會員編號,String) End If If (運費 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(1).Value = CType(運費,String) End If If (總金額 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(2).Value = CType(總金額,String) End If If (購物車編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(3).Value = CType(購物車編號,String) End If If (Original_會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_會員編號") Else Me.Adapter.UpdateCommand.Parameters(4).Value = CType(Original_會員編號,String) End If If (Original_運費 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(6).Value = CType(Original_運費,String) End If If (Original_總金額 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_總金額,String) End If If (Original_購物車編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = CType(Original_購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.UpdateCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.UpdateCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 運費 As String, ByVal 總金額 As String, ByVal 購物車編號 As String, ByVal Original_會員編號 As String, ByVal Original_運費 As String, ByVal Original_總金額 As String, ByVal Original_購物車編號 As String) As Integer Return Me.Update(Original_會員編號, 運費, 總金額, 購物車編號, Original_會員編號, Original_運費, Original_總金額, Original_購物車編號) End Function _ Public Overloads Overridable Function DeleteQuery(ByVal 會員編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(1) If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else command.Parameters(0).Value = CType(會員編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function _ Public Overloads Overridable Function InsertQuery(ByVal 會員編號 As String, ByVal 運費 As String, ByVal 總金額 As String, ByVal 購物車編號 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(2) If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else command.Parameters(0).Value = CType(會員編號,String) End If If (運費 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(運費,String) End If If (總金額 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(總金額,String) End If If (購物車編號 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(購物車編號,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function End Class ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class 紀錄TableAdapter Inherits Global.System.ComponentModel.Component Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter Private _connection As Global.System.Data.SqlClient.SqlConnection Private _transaction As Global.System.Data.SqlClient.SqlTransaction Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand Private _clearBeforeFill As Boolean _ Public Sub New() MyBase.New Me.ClearBeforeFill = true End Sub _ Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter Get If (Me._adapter Is Nothing) Then Me.InitAdapter End If Return Me._adapter End Get End Property _ Friend Property Connection() As Global.System.Data.SqlClient.SqlConnection Get If (Me._connection Is Nothing) Then Me.InitConnection End If Return Me._connection End Get Set Me._connection = value If (Not (Me.Adapter.InsertCommand) Is Nothing) Then Me.Adapter.InsertCommand.Connection = value End If If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then Me.Adapter.DeleteCommand.Connection = value End If If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then Me.Adapter.UpdateCommand.Connection = value End If Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) If (Not (Me.CommandCollection(i)) Is Nothing) Then CType(Me.CommandCollection(i),Global.System.Data.SqlClient.SqlCommand).Connection = value End If i = (i + 1) Loop End Set End Property _ Friend Property Transaction() As Global.System.Data.SqlClient.SqlTransaction Get Return Me._transaction End Get Set Me._transaction = value Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) Me.CommandCollection(i).Transaction = Me._transaction i = (i + 1) Loop If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then Me.Adapter.DeleteCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then Me.Adapter.InsertCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then Me.Adapter.UpdateCommand.Transaction = Me._transaction End If End Set End Property _ Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() Get If (Me._commandCollection Is Nothing) Then Me.InitCommandCollection End If Return Me._commandCollection End Get End Property _ Public Property ClearBeforeFill() As Boolean Get Return Me._clearBeforeFill End Get Set Me._clearBeforeFill = value End Set End Property _ Private Sub InitAdapter() Me._adapter = New Global.System.Data.SqlClient.SqlDataAdapter() Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() tableMapping.SourceTable = "Table" tableMapping.DataSetTable = "紀錄" tableMapping.ColumnMappings.Add("訂單編號", "訂單編號") tableMapping.ColumnMappings.Add("商品編號", "商品編號") tableMapping.ColumnMappings.Add("訂購數量", "訂購數量") tableMapping.ColumnMappings.Add("價錢", "價錢") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection Me._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[紀錄] WHERE (([訂單編號] = @Original_訂單編號) AND ((@IsNull_商品編號 = 1 AN"& _ "D [商品編號] IS NULL) OR ([商品編號] = @Original_商品編號)) AND ((@IsNull_訂購數量 = 1 AND [訂購數量"& _ "] IS NULL) OR ([訂購數量] = @Original_訂購數量)) AND ((@IsNull_價錢 = 1 AND [價錢] IS NULL) "& _ "OR ([價錢] = @Original_價錢)))" Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂單編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_訂購數量", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_價錢", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_價錢", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[紀錄] ([訂單編號], [商品編號], [訂購數量], [價錢]) VALUES (@訂單編號, @商品編號, @訂購數量"& _ ", @價錢);"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 訂單編號, 商品編號, 訂購數量, 價錢 FROM 紀錄 WHERE (訂單編號 = @訂單編號)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@價錢", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[紀錄] SET [訂單編號] = @訂單編號, [商品編號] = @商品編號, [訂購數量] = @訂購數量, [價錢] = @價錢 "& _ "WHERE (([訂單編號] = @Original_訂單編號) AND ((@IsNull_商品編號 = 1 AND [商品編號] IS NULL) OR ("& _ "[商品編號] = @Original_商品編號)) AND ((@IsNull_訂購數量 = 1 AND [訂購數量] IS NULL) OR ([訂購數量] "& _ "= @Original_訂購數量)) AND ((@IsNull_價錢 = 1 AND [價錢] IS NULL) OR ([價錢] = @Original_價"& _ "錢)));"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 訂單編號, 商品編號, 訂購數量, 價錢 FROM 紀錄 WHERE (訂單編號 = @訂單編號)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@價錢", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂單編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_訂購數量", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_價錢", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_價錢", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.謎鹿進銷存系統.My.MySettings.Default.謎鹿ConnectionString1 End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(3) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT 訂單編號, 商品編號, 訂購數量, 價錢 FROM dbo.紀錄" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(1).Connection = Me.Connection Me._commandCollection(1).CommandText = "SELECT 訂單編號, 商品編號, 訂購數量, 價錢"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 紀錄"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (訂單編號 "& _ "LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (商品編號 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ " (訂購數量 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (價錢 LIK"& _ "E @keyword)" Me._commandCollection(1).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@keyword", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(2).Connection = Me.Connection Me._commandCollection(2).CommandText = "SELECT 訂單編號, 商品編號, 訂購數量, 價錢"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 紀錄"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (訂單編號 "& _ "LIKE @sql)" Me._commandCollection(2).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@sql", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(3).Connection = Me.Connection Me._commandCollection(3).CommandText = "INSERT INTO 紀錄"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (訂單編號, 商品編號, 訂購數量, 價錢)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES "& _ " (@訂單編號,@商品編號,@訂購數量,@價錢); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 訂單編號, 商品編號, 訂購數量, 價錢 FROM 紀錄 WHERE (訂單編號 = "& _ "@訂單編號)" Me._commandCollection(3).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂單編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "訂單編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂購數量", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@價錢", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "價錢", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As 謎鹿DataSet.紀錄DataTable) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(0) If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function GetData() As 謎鹿DataSet.紀錄DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As 謎鹿DataSet.紀錄DataTable = New 謎鹿DataSet.紀錄DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function FillByKeyword(ByVal dataTable As 謎鹿DataSet.紀錄DataTable, ByVal keyword As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(1) If (keyword Is Nothing) Then Throw New Global.System.ArgumentNullException("keyword") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(keyword,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function FillBysql(ByVal dataTable As 謎鹿DataSet.紀錄DataTable, ByVal sql As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(2) If (sql Is Nothing) Then Throw New Global.System.ArgumentNullException("sql") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(sql,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function Update(ByVal dataTable As 謎鹿DataSet.紀錄DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As 謎鹿DataSet) As Integer Return Me.Adapter.Update(dataSet, "紀錄") End Function _ Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) End Function _ Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(dataRows) End Function _ Public Overloads Overridable Function Delete(ByVal Original_訂單編號 As String, ByVal Original_商品編號 As String, ByVal Original_訂購數量 As String, ByVal Original_價錢 As String) As Integer If (Original_訂單編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_訂單編號") Else Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_訂單編號,String) End If If (Original_商品編號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_商品編號,String) End If If (Original_訂購數量 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_訂購數量,String) End If If (Original_價錢 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(6).Value = CType(Original_價錢,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.DeleteCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.DeleteCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Insert(ByVal 訂單編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal 價錢 As String) As Integer If (訂單編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("訂單編號") Else Me.Adapter.InsertCommand.Parameters(0).Value = CType(訂單編號,String) End If If (商品編號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(商品編號,String) End If If (訂購數量 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(訂購數量,String) End If If (價錢 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(3).Value = CType(價錢,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.InsertCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.InsertCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 訂單編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal 價錢 As String, ByVal Original_訂單編號 As String, ByVal Original_商品編號 As String, ByVal Original_訂購數量 As String, ByVal Original_價錢 As String) As Integer If (訂單編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("訂單編號") Else Me.Adapter.UpdateCommand.Parameters(0).Value = CType(訂單編號,String) End If If (商品編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(1).Value = CType(商品編號,String) End If If (訂購數量 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(2).Value = CType(訂購數量,String) End If If (價錢 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(3).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(3).Value = CType(價錢,String) End If If (Original_訂單編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_訂單編號") Else Me.Adapter.UpdateCommand.Parameters(4).Value = CType(Original_訂單編號,String) End If If (Original_商品編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(5).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(6).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(5).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(6).Value = CType(Original_商品編號,String) End If If (Original_訂購數量 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(7).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(7).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_訂購數量,String) End If If (Original_價錢 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(9).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(9).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(10).Value = CType(Original_價錢,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.UpdateCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.UpdateCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal 價錢 As String, ByVal Original_訂單編號 As String, ByVal Original_商品編號 As String, ByVal Original_訂購數量 As String, ByVal Original_價錢 As String) As Integer Return Me.Update(Original_訂單編號, 商品編號, 訂購數量, 價錢, Original_訂單編號, Original_商品編號, Original_訂購數量, Original_價錢) End Function _ Public Overloads Overridable Function InsertQuery(ByVal 訂單編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal 價錢 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(3) If (訂單編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("訂單編號") Else command.Parameters(0).Value = CType(訂單編號,String) End If If (商品編號 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(商品編號,String) End If If (訂購數量 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(訂購數量,String) End If If (價錢 Is Nothing) Then command.Parameters(3).Value = Global.System.DBNull.Value Else command.Parameters(3).Value = CType(價錢,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function End Class ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class 訂購TableAdapter Inherits Global.System.ComponentModel.Component Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter Private _connection As Global.System.Data.SqlClient.SqlConnection Private _transaction As Global.System.Data.SqlClient.SqlTransaction Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand Private _clearBeforeFill As Boolean _ Public Sub New() MyBase.New Me.ClearBeforeFill = true End Sub _ Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter Get If (Me._adapter Is Nothing) Then Me.InitAdapter End If Return Me._adapter End Get End Property _ Friend Property Connection() As Global.System.Data.SqlClient.SqlConnection Get If (Me._connection Is Nothing) Then Me.InitConnection End If Return Me._connection End Get Set Me._connection = value If (Not (Me.Adapter.InsertCommand) Is Nothing) Then Me.Adapter.InsertCommand.Connection = value End If If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then Me.Adapter.DeleteCommand.Connection = value End If If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then Me.Adapter.UpdateCommand.Connection = value End If Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) If (Not (Me.CommandCollection(i)) Is Nothing) Then CType(Me.CommandCollection(i),Global.System.Data.SqlClient.SqlCommand).Connection = value End If i = (i + 1) Loop End Set End Property _ Friend Property Transaction() As Global.System.Data.SqlClient.SqlTransaction Get Return Me._transaction End Get Set Me._transaction = value Dim i As Integer = 0 Do While (i < Me.CommandCollection.Length) Me.CommandCollection(i).Transaction = Me._transaction i = (i + 1) Loop If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then Me.Adapter.DeleteCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then Me.Adapter.InsertCommand.Transaction = Me._transaction End If If ((Not (Me.Adapter) Is Nothing) _ AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then Me.Adapter.UpdateCommand.Transaction = Me._transaction End If End Set End Property _ Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() Get If (Me._commandCollection Is Nothing) Then Me.InitCommandCollection End If Return Me._commandCollection End Get End Property _ Public Property ClearBeforeFill() As Boolean Get Return Me._clearBeforeFill End Get Set Me._clearBeforeFill = value End Set End Property _ Private Sub InitAdapter() Me._adapter = New Global.System.Data.SqlClient.SqlDataAdapter() Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() tableMapping.SourceTable = "Table" tableMapping.DataSetTable = "訂購" tableMapping.ColumnMappings.Add("會員編號", "會員編號") tableMapping.ColumnMappings.Add("商品編號", "商品編號") tableMapping.ColumnMappings.Add("訂購數量", "訂購數量") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection Me._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[訂購] WHERE (([會員編號] = @Original_會員編號) AND ((@IsNull_商品編號 = 1 AN"& _ "D [商品編號] IS NULL) OR ([商品編號] = @Original_商品編號)) AND ((@IsNull_訂購數量 = 1 AND [訂購數量"& _ "] IS NULL) OR ([訂購數量] = @Original_訂購數量)))" Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_訂購數量", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[訂購] ([會員編號], [商品編號], [訂購數量]) VALUES (@會員編號, @商品編號, @訂購數量);"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SE"& _ "LECT 會員編號, 商品編號, 訂購數量 FROM 訂購 WHERE (會員編號 = @會員編號)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[訂購] SET [會員編號] = @會員編號, [商品編號] = @商品編號, [訂購數量] = @訂購數量 WHERE (([會員編"& _ "號] = @Original_會員編號) AND ((@IsNull_商品編號 = 1 AND [商品編號] IS NULL) OR ([商品編號] = @Or"& _ "iginal_商品編號)) AND ((@IsNull_訂購數量 = 1 AND [訂購數量] IS NULL) OR ([訂購數量] = @Original_"& _ "訂購數量)));"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 商品編號, 訂購數量 FROM 訂購 WHERE (會員編號 = @會員編號)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_會員編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_商品編號", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_商品編號", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@IsNull_訂購數量", Global.System.Data.SqlDbType.Int, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, true, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_訂購數量", Global.System.Data.SqlDbType.NVarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.謎鹿進銷存系統.My.MySettings.Default.謎鹿ConnectionString1 End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(3) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT 會員編號, 商品編號, 訂購數量 FROM dbo.訂購" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(1).Connection = Me.Connection Me._commandCollection(1).CommandText = "SELECT 會員編號, 商品編號, 訂購數量"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 訂購"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (會員編號 LIKE"& _ " @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (商品編號 LIKE @keyword) OR"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ " (訂購數量 LIKE @keyword)" Me._commandCollection(1).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(1).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@keyword", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(2) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(2).Connection = Me.Connection Me._commandCollection(2).CommandText = "SELECT 會員編號, 商品編號, 訂購數量"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM 訂購"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (會員編號 LIKE"& _ " @sql)" Me._commandCollection(2).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(2).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@sql", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(3).Connection = Me.Connection Me._commandCollection(3).CommandText = "INSERT INTO 訂購"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (會員編號, 商品編號, 訂購數量)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES ("& _ "@會員編號,@商品編號,@訂購數量); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT 會員編號, 商品編號, 訂購數量 FROM 訂購 WHERE (會員編號 = @會員編號)" Me._commandCollection(3).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@會員編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "會員編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@商品編號", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "商品編號", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(3).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@訂購數量", Global.System.Data.SqlDbType.NVarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "訂購數量", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As 謎鹿DataSet.訂購DataTable) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(0) If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function GetData() As 謎鹿DataSet.訂購DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As 謎鹿DataSet.訂購DataTable = New 謎鹿DataSet.訂購DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function FillByKeyword(ByVal dataTable As 謎鹿DataSet.訂購DataTable, ByVal keyword As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(1) If (keyword Is Nothing) Then Throw New Global.System.ArgumentNullException("keyword") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(keyword,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function FillBysql(ByVal dataTable As 謎鹿DataSet.訂購DataTable, ByVal sql As String) As Integer Me.Adapter.SelectCommand = Me.CommandCollection(2) If (sql Is Nothing) Then Throw New Global.System.ArgumentNullException("sql") Else Me.Adapter.SelectCommand.Parameters(0).Value = CType(sql,String) End If If (Me.ClearBeforeFill = true) Then dataTable.Clear End If Dim returnValue As Integer = Me.Adapter.Fill(dataTable) Return returnValue End Function _ Public Overloads Overridable Function Update(ByVal dataTable As 謎鹿DataSet.訂購DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As 謎鹿DataSet) As Integer Return Me.Adapter.Update(dataSet, "訂購") End Function _ Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) End Function _ Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer Return Me.Adapter.Update(dataRows) End Function _ Public Overloads Overridable Function Delete(ByVal Original_會員編號 As String, ByVal Original_商品編號 As String, ByVal Original_訂購數量 As String) As Integer If (Original_會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_會員編號") Else Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_會員編號,String) End If If (Original_商品編號 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_商品編號,String) End If If (Original_訂購數量 Is Nothing) Then Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_訂購數量,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.DeleteCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.DeleteCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Insert(ByVal 會員編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String) As Integer If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else Me.Adapter.InsertCommand.Parameters(0).Value = CType(會員編號,String) End If If (商品編號 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(商品編號,String) End If If (訂購數量 Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(訂購數量,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.InsertCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.InsertCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 會員編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal Original_會員編號 As String, ByVal Original_商品編號 As String, ByVal Original_訂購數量 As String) As Integer If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else Me.Adapter.UpdateCommand.Parameters(0).Value = CType(會員編號,String) End If If (商品編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(1).Value = CType(商品編號,String) End If If (訂購數量 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(2).Value = CType(訂購數量,String) End If If (Original_會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("Original_會員編號") Else Me.Adapter.UpdateCommand.Parameters(3).Value = CType(Original_會員編號,String) End If If (Original_商品編號 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(4).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(4).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(5).Value = CType(Original_商品編號,String) End If If (Original_訂購數量 Is Nothing) Then Me.Adapter.UpdateCommand.Parameters(6).Value = CType(1,Object) Me.Adapter.UpdateCommand.Parameters(7).Value = Global.System.DBNull.Value Else Me.Adapter.UpdateCommand.Parameters(6).Value = CType(0,Object) Me.Adapter.UpdateCommand.Parameters(7).Value = CType(Original_訂購數量,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then Me.Adapter.UpdateCommand.Connection.Open End If Try Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery Return returnValue Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then Me.Adapter.UpdateCommand.Connection.Close End If End Try End Function _ Public Overloads Overridable Function Update(ByVal 商品編號 As String, ByVal 訂購數量 As String, ByVal Original_會員編號 As String, ByVal Original_商品編號 As String, ByVal Original_訂購數量 As String) As Integer Return Me.Update(Original_會員編號, 商品編號, 訂購數量, Original_會員編號, Original_商品編號, Original_訂購數量) End Function _ Public Overloads Overridable Function InsertQuery(ByVal 會員編號 As String, ByVal 商品編號 As String, ByVal 訂購數量 As String) As Integer Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(3) If (會員編號 Is Nothing) Then Throw New Global.System.ArgumentNullException("會員編號") Else command.Parameters(0).Value = CType(會員編號,String) End If If (商品編號 Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value Else command.Parameters(1).Value = CType(商品編號,String) End If If (訂購數量 Is Nothing) Then command.Parameters(2).Value = Global.System.DBNull.Value Else command.Parameters(2).Value = CType(訂購數量,String) End If Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then command.Connection.Open End If Dim returnValue As Integer Try returnValue = command.ExecuteNonQuery Finally If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then command.Connection.Close End If End Try Return returnValue End Function End Class ''' '''TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios ''' _ Partial Public Class TableAdapterManager Inherits Global.System.ComponentModel.Component Private _updateOrder As UpdateOrderOption Private _商品TableAdapter As 商品TableAdapter Private _會員TableAdapter As 會員TableAdapter Private _訂單TableAdapter As 訂單TableAdapter Private _購物車TableAdapter As 購物車TableAdapter Private _紀錄TableAdapter As 紀錄TableAdapter Private _訂購TableAdapter As 訂購TableAdapter Private _backupDataSetBeforeUpdate As Boolean Private _connection As Global.System.Data.IDbConnection _ Public Property UpdateOrder() As UpdateOrderOption Get Return Me._updateOrder End Get Set Me._updateOrder = value End Set End Property _ Public Property 商品TableAdapter() As 商品TableAdapter Get Return Me._商品TableAdapter End Get Set Me._商品TableAdapter = value End Set End Property _ Public Property 會員TableAdapter() As 會員TableAdapter Get Return Me._會員TableAdapter End Get Set Me._會員TableAdapter = value End Set End Property _ Public Property 訂單TableAdapter() As 訂單TableAdapter Get Return Me._訂單TableAdapter End Get Set Me._訂單TableAdapter = value End Set End Property _ Public Property 購物車TableAdapter() As 購物車TableAdapter Get Return Me._購物車TableAdapter End Get Set Me._購物車TableAdapter = value End Set End Property _ Public Property 紀錄TableAdapter() As 紀錄TableAdapter Get Return Me._紀錄TableAdapter End Get Set Me._紀錄TableAdapter = value End Set End Property _ Public Property 訂購TableAdapter() As 訂購TableAdapter Get Return Me._訂購TableAdapter End Get Set Me._訂購TableAdapter = value End Set End Property _ Public Property BackupDataSetBeforeUpdate() As Boolean Get Return Me._backupDataSetBeforeUpdate End Get Set Me._backupDataSetBeforeUpdate = value End Set End Property _ Public Property Connection() As Global.System.Data.IDbConnection Get If (Not (Me._connection) Is Nothing) Then Return Me._connection End If If ((Not (Me._商品TableAdapter) Is Nothing) _ AndAlso (Not (Me._商品TableAdapter.Connection) Is Nothing)) Then Return Me._商品TableAdapter.Connection End If If ((Not (Me._會員TableAdapter) Is Nothing) _ AndAlso (Not (Me._會員TableAdapter.Connection) Is Nothing)) Then Return Me._會員TableAdapter.Connection End If If ((Not (Me._訂單TableAdapter) Is Nothing) _ AndAlso (Not (Me._訂單TableAdapter.Connection) Is Nothing)) Then Return Me._訂單TableAdapter.Connection End If If ((Not (Me._購物車TableAdapter) Is Nothing) _ AndAlso (Not (Me._購物車TableAdapter.Connection) Is Nothing)) Then Return Me._購物車TableAdapter.Connection End If If ((Not (Me._紀錄TableAdapter) Is Nothing) _ AndAlso (Not (Me._紀錄TableAdapter.Connection) Is Nothing)) Then Return Me._紀錄TableAdapter.Connection End If If ((Not (Me._訂購TableAdapter) Is Nothing) _ AndAlso (Not (Me._訂購TableAdapter.Connection) Is Nothing)) Then Return Me._訂購TableAdapter.Connection End If Return Nothing End Get Set Me._connection = value End Set End Property _ Public ReadOnly Property TableAdapterInstanceCount() As Integer Get Dim count As Integer = 0 If (Not (Me._商品TableAdapter) Is Nothing) Then count = (count + 1) End If If (Not (Me._會員TableAdapter) Is Nothing) Then count = (count + 1) End If If (Not (Me._訂單TableAdapter) Is Nothing) Then count = (count + 1) End If If (Not (Me._購物車TableAdapter) Is Nothing) Then count = (count + 1) End If If (Not (Me._紀錄TableAdapter) Is Nothing) Then count = (count + 1) End If If (Not (Me._訂購TableAdapter) Is Nothing) Then count = (count + 1) End If Return count End Get End Property ''' '''Update rows in top-down order. ''' _ Private Function UpdateUpdatedRows(ByVal dataSet As 謎鹿DataSet, ByVal allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow), ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer Dim result As Integer = 0 If (Not (Me._商品TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.商品.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) If ((Not (updatedRows) Is Nothing) _ AndAlso (0 < updatedRows.Length)) Then result = (result + Me._商品TableAdapter.Update(updatedRows)) allChangedRows.AddRange(updatedRows) End If End If If (Not (Me._會員TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.會員.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) If ((Not (updatedRows) Is Nothing) _ AndAlso (0 < updatedRows.Length)) Then result = (result + Me._會員TableAdapter.Update(updatedRows)) allChangedRows.AddRange(updatedRows) End If End If If (Not (Me._訂單TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.訂單.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) If ((Not (updatedRows) Is Nothing) _ AndAlso (0 < updatedRows.Length)) Then result = (result + Me._訂單TableAdapter.Update(updatedRows)) allChangedRows.AddRange(updatedRows) End If End If If (Not (Me._購物車TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.購物車.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) If ((Not (updatedRows) Is Nothing) _ AndAlso (0 < updatedRows.Length)) Then result = (result + Me._購物車TableAdapter.Update(updatedRows)) allChangedRows.AddRange(updatedRows) End If End If If (Not (Me._紀錄TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.紀錄.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) If ((Not (updatedRows) Is Nothing) _ AndAlso (0 < updatedRows.Length)) Then result = (result + Me._紀錄TableAdapter.Update(updatedRows)) allChangedRows.AddRange(updatedRows) End If End If If (Not (Me._訂購TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.訂購.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) If ((Not (updatedRows) Is Nothing) _ AndAlso (0 < updatedRows.Length)) Then result = (result + Me._訂購TableAdapter.Update(updatedRows)) allChangedRows.AddRange(updatedRows) End If End If Return result End Function ''' '''Insert rows in top-down order. ''' _ Private Function UpdateInsertedRows(ByVal dataSet As 謎鹿DataSet, ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer Dim result As Integer = 0 If (Not (Me._商品TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.商品.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._商品TableAdapter.Update(addedRows)) allAddedRows.AddRange(addedRows) End If End If If (Not (Me._會員TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.會員.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._會員TableAdapter.Update(addedRows)) allAddedRows.AddRange(addedRows) End If End If If (Not (Me._訂單TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.訂單.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._訂單TableAdapter.Update(addedRows)) allAddedRows.AddRange(addedRows) End If End If If (Not (Me._購物車TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.購物車.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._購物車TableAdapter.Update(addedRows)) allAddedRows.AddRange(addedRows) End If End If If (Not (Me._紀錄TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.紀錄.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._紀錄TableAdapter.Update(addedRows)) allAddedRows.AddRange(addedRows) End If End If If (Not (Me._訂購TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.訂購.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._訂購TableAdapter.Update(addedRows)) allAddedRows.AddRange(addedRows) End If End If Return result End Function ''' '''Delete rows in bottom-up order. ''' _ Private Function UpdateDeletedRows(ByVal dataSet As 謎鹿DataSet, ByVal allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer Dim result As Integer = 0 If (Not (Me._訂購TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.訂購.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._訂購TableAdapter.Update(deletedRows)) allChangedRows.AddRange(deletedRows) End If End If If (Not (Me._紀錄TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.紀錄.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._紀錄TableAdapter.Update(deletedRows)) allChangedRows.AddRange(deletedRows) End If End If If (Not (Me._購物車TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.購物車.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._購物車TableAdapter.Update(deletedRows)) allChangedRows.AddRange(deletedRows) End If End If If (Not (Me._訂單TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.訂單.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._訂單TableAdapter.Update(deletedRows)) allChangedRows.AddRange(deletedRows) End If End If If (Not (Me._會員TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.會員.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._會員TableAdapter.Update(deletedRows)) allChangedRows.AddRange(deletedRows) End If End If If (Not (Me._商品TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.商品.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._商品TableAdapter.Update(deletedRows)) allChangedRows.AddRange(deletedRows) End If End If Return result End Function ''' '''Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first ''' _ Private Function GetRealUpdatedRows(ByVal updatedRows() As Global.System.Data.DataRow, ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Global.System.Data.DataRow() If ((updatedRows Is Nothing) _ OrElse (updatedRows.Length < 1)) Then Return updatedRows End If If ((allAddedRows Is Nothing) _ OrElse (allAddedRows.Count < 1)) Then Return updatedRows End If Dim realUpdatedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow) = New Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)() Dim i As Integer = 0 Do While (i < updatedRows.Length) Dim row As Global.System.Data.DataRow = updatedRows(i) If (allAddedRows.Contains(row) = false) Then realUpdatedRows.Add(row) End If i = (i + 1) Loop Return realUpdatedRows.ToArray End Function ''' '''Update all changes to the dataset. ''' _ Public Overridable Function UpdateAll(ByVal dataSet As 謎鹿DataSet) As Integer If (dataSet Is Nothing) Then Throw New Global.System.ArgumentNullException("dataSet") End If If (dataSet.HasChanges = false) Then Return 0 End If If ((Not (Me._商品TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._商品TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("所有以 TableAdapterManager 管理的 TableAdapters 必須使用相同的連接字串。") End If If ((Not (Me._會員TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._會員TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("所有以 TableAdapterManager 管理的 TableAdapters 必須使用相同的連接字串。") End If If ((Not (Me._訂單TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._訂單TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("所有以 TableAdapterManager 管理的 TableAdapters 必須使用相同的連接字串。") End If If ((Not (Me._購物車TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._購物車TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("所有以 TableAdapterManager 管理的 TableAdapters 必須使用相同的連接字串。") End If If ((Not (Me._紀錄TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._紀錄TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("所有以 TableAdapterManager 管理的 TableAdapters 必須使用相同的連接字串。") End If If ((Not (Me._訂購TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._訂購TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("所有以 TableAdapterManager 管理的 TableAdapters 必須使用相同的連接字串。") End If Dim workConnection As Global.System.Data.IDbConnection = Me.Connection If (workConnection Is Nothing) Then Throw New Global.System.ApplicationException("TableAdapterManager 未包含連接資訊。請將每個 TableAdapterManager 的 TableAdapter 屬性設成有效的 Table"& _ "Adapter 執行個體。") End If Dim workConnOpened As Boolean = false If ((workConnection.State And Global.System.Data.ConnectionState.Broken) _ = Global.System.Data.ConnectionState.Broken) Then workConnection.Close End If If (workConnection.State = Global.System.Data.ConnectionState.Closed) Then workConnection.Open workConnOpened = true End If Dim workTransaction As Global.System.Data.IDbTransaction = workConnection.BeginTransaction If (workTransaction Is Nothing) Then Throw New Global.System.ApplicationException("無法開始異動。目前的資料連接不支援異動或是目前的狀態不允許異動開始。") End If Dim allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow) = New Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)() Dim allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow) = New Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)() Dim adaptersWithAcceptChangesDuringUpdate As Global.System.Collections.Generic.List(Of Global.System.Data.Common.DataAdapter) = New Global.System.Collections.Generic.List(Of Global.System.Data.Common.DataAdapter)() Dim revertConnections As Global.System.Collections.Generic.Dictionary(Of Object, Global.System.Data.IDbConnection) = New Global.System.Collections.Generic.Dictionary(Of Object, Global.System.Data.IDbConnection)() Dim result As Integer = 0 Dim backupDataSet As Global.System.Data.DataSet = Nothing If Me.BackupDataSetBeforeUpdate Then backupDataSet = New Global.System.Data.DataSet() backupDataSet.Merge(dataSet) End If Try '---- Prepare for update ----------- ' If (Not (Me._商品TableAdapter) Is Nothing) Then revertConnections.Add(Me._商品TableAdapter, Me._商品TableAdapter.Connection) Me._商品TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._商品TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._商品TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._商品TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._商品TableAdapter.Adapter) End If End If If (Not (Me._會員TableAdapter) Is Nothing) Then revertConnections.Add(Me._會員TableAdapter, Me._會員TableAdapter.Connection) Me._會員TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._會員TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._會員TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._會員TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._會員TableAdapter.Adapter) End If End If If (Not (Me._訂單TableAdapter) Is Nothing) Then revertConnections.Add(Me._訂單TableAdapter, Me._訂單TableAdapter.Connection) Me._訂單TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._訂單TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._訂單TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._訂單TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._訂單TableAdapter.Adapter) End If End If If (Not (Me._購物車TableAdapter) Is Nothing) Then revertConnections.Add(Me._購物車TableAdapter, Me._購物車TableAdapter.Connection) Me._購物車TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._購物車TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._購物車TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._購物車TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._購物車TableAdapter.Adapter) End If End If If (Not (Me._紀錄TableAdapter) Is Nothing) Then revertConnections.Add(Me._紀錄TableAdapter, Me._紀錄TableAdapter.Connection) Me._紀錄TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._紀錄TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._紀錄TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._紀錄TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._紀錄TableAdapter.Adapter) End If End If If (Not (Me._訂購TableAdapter) Is Nothing) Then revertConnections.Add(Me._訂購TableAdapter, Me._訂購TableAdapter.Connection) Me._訂購TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._訂購TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._訂購TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._訂購TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._訂購TableAdapter.Adapter) End If End If ' '---- Perform updates ----------- ' If (Me.UpdateOrder = UpdateOrderOption.UpdateInsertDelete) Then result = (result + Me.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)) result = (result + Me.UpdateInsertedRows(dataSet, allAddedRows)) Else result = (result + Me.UpdateInsertedRows(dataSet, allAddedRows)) result = (result + Me.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)) End If result = (result + Me.UpdateDeletedRows(dataSet, allChangedRows)) ' '---- Commit updates ----------- ' workTransaction.Commit If (0 < allAddedRows.Count) Then Dim rows((allAddedRows.Count) - 1) As Global.System.Data.DataRow allAddedRows.CopyTo(rows) Dim i As Integer = 0 Do While (i < rows.Length) Dim row As Global.System.Data.DataRow = rows(i) row.AcceptChanges i = (i + 1) Loop End If If (0 < allChangedRows.Count) Then Dim rows((allChangedRows.Count) - 1) As Global.System.Data.DataRow allChangedRows.CopyTo(rows) Dim i As Integer = 0 Do While (i < rows.Length) Dim row As Global.System.Data.DataRow = rows(i) row.AcceptChanges i = (i + 1) Loop End If Catch ex As Global.System.Exception workTransaction.Rollback '---- Restore the dataset ----------- If Me.BackupDataSetBeforeUpdate Then Global.System.Diagnostics.Debug.Assert((Not (backupDataSet) Is Nothing)) dataSet.Clear dataSet.Merge(backupDataSet) Else If (0 < allAddedRows.Count) Then Dim rows((allAddedRows.Count) - 1) As Global.System.Data.DataRow allAddedRows.CopyTo(rows) Dim i As Integer = 0 Do While (i < rows.Length) Dim row As Global.System.Data.DataRow = rows(i) row.AcceptChanges row.SetAdded i = (i + 1) Loop End If End If Throw ex Finally If workConnOpened Then workConnection.Close End If If (Not (Me._商品TableAdapter) Is Nothing) Then Me._商品TableAdapter.Connection = CType(revertConnections(Me._商品TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._商品TableAdapter.Transaction = Nothing End If If (Not (Me._會員TableAdapter) Is Nothing) Then Me._會員TableAdapter.Connection = CType(revertConnections(Me._會員TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._會員TableAdapter.Transaction = Nothing End If If (Not (Me._訂單TableAdapter) Is Nothing) Then Me._訂單TableAdapter.Connection = CType(revertConnections(Me._訂單TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._訂單TableAdapter.Transaction = Nothing End If If (Not (Me._購物車TableAdapter) Is Nothing) Then Me._購物車TableAdapter.Connection = CType(revertConnections(Me._購物車TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._購物車TableAdapter.Transaction = Nothing End If If (Not (Me._紀錄TableAdapter) Is Nothing) Then Me._紀錄TableAdapter.Connection = CType(revertConnections(Me._紀錄TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._紀錄TableAdapter.Transaction = Nothing End If If (Not (Me._訂購TableAdapter) Is Nothing) Then Me._訂購TableAdapter.Connection = CType(revertConnections(Me._訂購TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._訂購TableAdapter.Transaction = Nothing End If If (0 < adaptersWithAcceptChangesDuringUpdate.Count) Then Dim adapters((adaptersWithAcceptChangesDuringUpdate.Count) - 1) As Global.System.Data.Common.DataAdapter adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters) Dim i As Integer = 0 Do While (i < adapters.Length) Dim adapter As Global.System.Data.Common.DataAdapter = adapters(i) adapter.AcceptChangesDuringUpdate = true i = (i + 1) Loop End If End Try Return result End Function _ Protected Overridable Sub SortSelfReferenceRows(ByVal rows() As Global.System.Data.DataRow, ByVal relation As Global.System.Data.DataRelation, ByVal childFirst As Boolean) Global.System.Array.Sort(Of Global.System.Data.DataRow)(rows, New SelfReferenceComparer(relation, childFirst)) End Sub _ Protected Overridable Function MatchTableAdapterConnection(ByVal inputConnection As Global.System.Data.IDbConnection) As Boolean If (Not (Me._connection) Is Nothing) Then Return true End If If ((Me.Connection Is Nothing) _ OrElse (inputConnection Is Nothing)) Then Return true End If If String.Equals(Me.Connection.ConnectionString, inputConnection.ConnectionString, Global.System.StringComparison.Ordinal) Then Return true End If Return false End Function ''' '''Update Order Option ''' _ Public Enum UpdateOrderOption InsertUpdateDelete = 0 UpdateInsertDelete = 1 End Enum ''' '''Used to sort self-referenced table's rows ''' _ Private Class SelfReferenceComparer Inherits Object Implements Global.System.Collections.Generic.IComparer(Of Global.System.Data.DataRow) Private _relation As Global.System.Data.DataRelation Private _childFirst As Integer _ Friend Sub New(ByVal relation As Global.System.Data.DataRelation, ByVal childFirst As Boolean) MyBase.New Me._relation = relation If childFirst Then Me._childFirst = -1 Else Me._childFirst = 1 End If End Sub _ Private Function GetRoot(ByVal row As Global.System.Data.DataRow, ByRef distance As Integer) As Global.System.Data.DataRow Global.System.Diagnostics.Debug.Assert((Not (row) Is Nothing)) Dim root As Global.System.Data.DataRow = row distance = 0 Dim traversedRows As Global.System.Collections.Generic.IDictionary(Of Global.System.Data.DataRow, Global.System.Data.DataRow) = New Global.System.Collections.Generic.Dictionary(Of Global.System.Data.DataRow, Global.System.Data.DataRow)() traversedRows(row) = row Dim parent As Global.System.Data.DataRow = row.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.[Default]) Do While ((Not (parent) Is Nothing) _ AndAlso (traversedRows.ContainsKey(parent) = false)) distance = (distance + 1) root = parent traversedRows(parent) = parent parent = parent.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.[Default]) Loop If (distance = 0) Then traversedRows.Clear traversedRows(row) = row parent = row.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.Original) Do While ((Not (parent) Is Nothing) _ AndAlso (traversedRows.ContainsKey(parent) = false)) distance = (distance + 1) root = parent traversedRows(parent) = parent parent = parent.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.Original) Loop End If Return root End Function _ Public Function Compare(ByVal row1 As Global.System.Data.DataRow, ByVal row2 As Global.System.Data.DataRow) As Integer Implements Global.System.Collections.Generic.IComparer(Of Global.System.Data.DataRow).Compare If Object.ReferenceEquals(row1, row2) Then Return 0 End If If (row1 Is Nothing) Then Return -1 End If If (row2 Is Nothing) Then Return 1 End If Dim distance1 As Integer = 0 Dim root1 As Global.System.Data.DataRow = Me.GetRoot(row1, distance1) Dim distance2 As Integer = 0 Dim root2 As Global.System.Data.DataRow = Me.GetRoot(row2, distance2) If Object.ReferenceEquals(root1, root2) Then Return (Me._childFirst * distance1.CompareTo(distance2)) Else Global.System.Diagnostics.Debug.Assert(((Not (root1.Table) Is Nothing) _ AndAlso (Not (root2.Table) Is Nothing))) If (root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2)) Then Return -1 Else Return 1 End If End If End Function End Class End Class End Namespace