'------------------------------------------------------------------------------ ' ' Este código fue generado por una herramienta. ' Versión de runtime:4.0.30319.42000 ' ' Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si ' se vuelve a generar el código. ' '------------------------------------------------------------------------------ Option Strict Off Option Explicit On ''' '''Represents a strongly typed in-memory cache of data. ''' _ Partial Public Class InversionesDEVDataSet3 Inherits Global.System.Data.DataSet Private tableBAN1 As BAN1DataTable 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("BAN1")) Is Nothing) Then MyBase.Tables.Add(New BAN1DataTable(ds.Tables("BAN1"))) 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 BAN1() As BAN1DataTable Get Return Me.tableBAN1 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 InversionesDEVDataSet3 = CType(MyBase.Clone,InversionesDEVDataSet3) 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("BAN1")) Is Nothing) Then MyBase.Tables.Add(New BAN1DataTable(ds.Tables("BAN1"))) 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.tableBAN1 = CType(MyBase.Tables("BAN1"),BAN1DataTable) If (initTable = true) Then If (Not (Me.tableBAN1) Is Nothing) Then Me.tableBAN1.InitVars End If End If End Sub _ Private Sub InitClass() Me.DataSetName = "InversionesDEVDataSet3" Me.Prefix = "" Me.Namespace = "http://tempuri.org/InversionesDEVDataSet3.xsd" Me.EnforceConstraints = true Me.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema Me.tableBAN1 = New BAN1DataTable() MyBase.Tables.Add(Me.tableBAN1) End Sub _ Private Function ShouldSerializeBAN1() 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 InversionesDEVDataSet3 = New InversionesDEVDataSet3() 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 BAN1RowChangeEventHandler(ByVal sender As Object, ByVal e As BAN1RowChangeEvent) ''' '''Represents the strongly named DataTable class. ''' _ Partial Public Class BAN1DataTable Inherits Global.System.Data.TypedTableBase(Of BAN1Row) Private columnId As Global.System.Data.DataColumn Private columnCodBanco As Global.System.Data.DataColumn Private columnCodEmpr As Global.System.Data.DataColumn Private columnNumCuenta As Global.System.Data.DataColumn Private columnActivo As Global.System.Data.DataColumn Private columnNombreCuenta As Global.System.Data.DataColumn Private columnTipoCuenta As Global.System.Data.DataColumn _ Public Sub New() MyBase.New Me.TableName = "BAN1" 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 IdColumn() As Global.System.Data.DataColumn Get Return Me.columnId End Get End Property _ Public ReadOnly Property CodBancoColumn() As Global.System.Data.DataColumn Get Return Me.columnCodBanco End Get End Property _ Public ReadOnly Property CodEmprColumn() As Global.System.Data.DataColumn Get Return Me.columnCodEmpr End Get End Property _ Public ReadOnly Property NumCuentaColumn() As Global.System.Data.DataColumn Get Return Me.columnNumCuenta End Get End Property _ Public ReadOnly Property ActivoColumn() As Global.System.Data.DataColumn Get Return Me.columnActivo End Get End Property _ Public ReadOnly Property NombreCuentaColumn() As Global.System.Data.DataColumn Get Return Me.columnNombreCuenta End Get End Property _ Public ReadOnly Property TipoCuentaColumn() As Global.System.Data.DataColumn Get Return Me.columnTipoCuenta 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 BAN1Row Get Return CType(Me.Rows(index),BAN1Row) End Get End Property _ Public Event BAN1RowChanging As BAN1RowChangeEventHandler _ Public Event BAN1RowChanged As BAN1RowChangeEventHandler _ Public Event BAN1RowDeleting As BAN1RowChangeEventHandler _ Public Event BAN1RowDeleted As BAN1RowChangeEventHandler _ Public Overloads Sub AddBAN1Row(ByVal row As BAN1Row) Me.Rows.Add(row) End Sub _ Public Overloads Function AddBAN1Row(ByVal CodBanco As String, ByVal CodEmpr As String, ByVal NumCuenta As String, ByVal Activo As Boolean, ByVal NombreCuenta As String, ByVal TipoCuenta As String) As BAN1Row Dim rowBAN1Row As BAN1Row = CType(Me.NewRow,BAN1Row) Dim columnValuesArray() As Object = New Object() {Nothing, CodBanco, CodEmpr, NumCuenta, Activo, NombreCuenta, TipoCuenta} rowBAN1Row.ItemArray = columnValuesArray Me.Rows.Add(rowBAN1Row) Return rowBAN1Row End Function _ Public Overrides Function Clone() As Global.System.Data.DataTable Dim cln As BAN1DataTable = CType(MyBase.Clone,BAN1DataTable) cln.InitVars Return cln End Function _ Protected Overrides Function CreateInstance() As Global.System.Data.DataTable Return New BAN1DataTable() End Function _ Friend Sub InitVars() Me.columnId = MyBase.Columns("Id") Me.columnCodBanco = MyBase.Columns("CodBanco") Me.columnCodEmpr = MyBase.Columns("CodEmpr") Me.columnNumCuenta = MyBase.Columns("NumCuenta") Me.columnActivo = MyBase.Columns("Activo") Me.columnNombreCuenta = MyBase.Columns("NombreCuenta") Me.columnTipoCuenta = MyBase.Columns("TipoCuenta") End Sub _ Private Sub InitClass() Me.columnId = New Global.System.Data.DataColumn("Id", GetType(Integer), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnId) Me.columnCodBanco = New Global.System.Data.DataColumn("CodBanco", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnCodBanco) Me.columnCodEmpr = New Global.System.Data.DataColumn("CodEmpr", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnCodEmpr) Me.columnNumCuenta = New Global.System.Data.DataColumn("NumCuenta", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnNumCuenta) Me.columnActivo = New Global.System.Data.DataColumn("Activo", GetType(Boolean), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnActivo) Me.columnNombreCuenta = New Global.System.Data.DataColumn("NombreCuenta", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnNombreCuenta) Me.columnTipoCuenta = New Global.System.Data.DataColumn("TipoCuenta", GetType(String), Nothing, Global.System.Data.MappingType.Element) MyBase.Columns.Add(Me.columnTipoCuenta) Me.columnId.AutoIncrement = true Me.columnId.AutoIncrementSeed = -1 Me.columnId.AutoIncrementStep = -1 Me.columnId.AllowDBNull = false Me.columnId.ReadOnly = true Me.columnCodBanco.MaxLength = 30 Me.columnCodEmpr.MaxLength = 10 Me.columnNumCuenta.MaxLength = 50 Me.columnNombreCuenta.MaxLength = 100 Me.columnTipoCuenta.MaxLength = 10 End Sub _ Public Function NewBAN1Row() As BAN1Row Return CType(Me.NewRow,BAN1Row) End Function _ Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow Return New BAN1Row(builder) End Function _ Protected Overrides Function GetRowType() As Global.System.Type Return GetType(BAN1Row) End Function _ Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanged(e) If (Not (Me.BAN1RowChangedEvent) Is Nothing) Then RaiseEvent BAN1RowChanged(Me, New BAN1RowChangeEvent(CType(e.Row,BAN1Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowChanging(e) If (Not (Me.BAN1RowChangingEvent) Is Nothing) Then RaiseEvent BAN1RowChanging(Me, New BAN1RowChangeEvent(CType(e.Row,BAN1Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleted(e) If (Not (Me.BAN1RowDeletedEvent) Is Nothing) Then RaiseEvent BAN1RowDeleted(Me, New BAN1RowChangeEvent(CType(e.Row,BAN1Row), e.Action)) End If End Sub _ Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) MyBase.OnRowDeleting(e) If (Not (Me.BAN1RowDeletingEvent) Is Nothing) Then RaiseEvent BAN1RowDeleting(Me, New BAN1RowChangeEvent(CType(e.Row,BAN1Row), e.Action)) End If End Sub _ Public Sub RemoveBAN1Row(ByVal row As BAN1Row) 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 InversionesDEVDataSet3 = New InversionesDEVDataSet3() 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 = "BAN1DataTable" 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 BAN1Row Inherits Global.System.Data.DataRow Private tableBAN1 As BAN1DataTable _ Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) MyBase.New(rb) Me.tableBAN1 = CType(Me.Table,BAN1DataTable) End Sub _ Public Property Id() As Integer Get Return CType(Me(Me.tableBAN1.IdColumn),Integer) End Get Set Me(Me.tableBAN1.IdColumn) = value End Set End Property _ Public Property CodBanco() As String Get Try Return CType(Me(Me.tableBAN1.CodBancoColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("El valor de la columna 'CodBanco' de la tabla 'BAN1' es DBNull.", e) End Try End Get Set Me(Me.tableBAN1.CodBancoColumn) = value End Set End Property _ Public Property CodEmpr() As String Get Try Return CType(Me(Me.tableBAN1.CodEmprColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("El valor de la columna 'CodEmpr' de la tabla 'BAN1' es DBNull.", e) End Try End Get Set Me(Me.tableBAN1.CodEmprColumn) = value End Set End Property _ Public Property NumCuenta() As String Get Try Return CType(Me(Me.tableBAN1.NumCuentaColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("El valor de la columna 'NumCuenta' de la tabla 'BAN1' es DBNull.", e) End Try End Get Set Me(Me.tableBAN1.NumCuentaColumn) = value End Set End Property _ Public Property Activo() As Boolean Get Try Return CType(Me(Me.tableBAN1.ActivoColumn),Boolean) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("El valor de la columna 'Activo' de la tabla 'BAN1' es DBNull.", e) End Try End Get Set Me(Me.tableBAN1.ActivoColumn) = value End Set End Property _ Public Property NombreCuenta() As String Get Try Return CType(Me(Me.tableBAN1.NombreCuentaColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("El valor de la columna 'NombreCuenta' de la tabla 'BAN1' es DBNull.", e) End Try End Get Set Me(Me.tableBAN1.NombreCuentaColumn) = value End Set End Property _ Public Property TipoCuenta() As String Get Try Return CType(Me(Me.tableBAN1.TipoCuentaColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("El valor de la columna 'TipoCuenta' de la tabla 'BAN1' es DBNull.", e) End Try End Get Set Me(Me.tableBAN1.TipoCuentaColumn) = value End Set End Property _ Public Function IsCodBancoNull() As Boolean Return Me.IsNull(Me.tableBAN1.CodBancoColumn) End Function _ Public Sub SetCodBancoNull() Me(Me.tableBAN1.CodBancoColumn) = Global.System.Convert.DBNull End Sub _ Public Function IsCodEmprNull() As Boolean Return Me.IsNull(Me.tableBAN1.CodEmprColumn) End Function _ Public Sub SetCodEmprNull() Me(Me.tableBAN1.CodEmprColumn) = Global.System.Convert.DBNull End Sub _ Public Function IsNumCuentaNull() As Boolean Return Me.IsNull(Me.tableBAN1.NumCuentaColumn) End Function _ Public Sub SetNumCuentaNull() Me(Me.tableBAN1.NumCuentaColumn) = Global.System.Convert.DBNull End Sub _ Public Function IsActivoNull() As Boolean Return Me.IsNull(Me.tableBAN1.ActivoColumn) End Function _ Public Sub SetActivoNull() Me(Me.tableBAN1.ActivoColumn) = Global.System.Convert.DBNull End Sub _ Public Function IsNombreCuentaNull() As Boolean Return Me.IsNull(Me.tableBAN1.NombreCuentaColumn) End Function _ Public Sub SetNombreCuentaNull() Me(Me.tableBAN1.NombreCuentaColumn) = Global.System.Convert.DBNull End Sub _ Public Function IsTipoCuentaNull() As Boolean Return Me.IsNull(Me.tableBAN1.TipoCuentaColumn) End Function _ Public Sub SetTipoCuentaNull() Me(Me.tableBAN1.TipoCuentaColumn) = Global.System.Convert.DBNull End Sub End Class ''' '''Row event argument class ''' _ Public Class BAN1RowChangeEvent Inherits Global.System.EventArgs Private eventRow As BAN1Row Private eventAction As Global.System.Data.DataRowAction _ Public Sub New(ByVal row As BAN1Row, ByVal action As Global.System.Data.DataRowAction) MyBase.New Me.eventRow = row Me.eventAction = action End Sub _ Public ReadOnly Property Row() As BAN1Row 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 InversionesDEVDataSet3TableAdapters ''' '''Represents the connection and commands used to retrieve and save data. ''' _ Partial Public Class BAN1TableAdapter 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 = "BAN1" tableMapping.ColumnMappings.Add("Id", "Id") tableMapping.ColumnMappings.Add("CodBanco", "CodBanco") tableMapping.ColumnMappings.Add("CodEmpr", "CodEmpr") tableMapping.ColumnMappings.Add("NumCuenta", "NumCuenta") tableMapping.ColumnMappings.Add("Activo", "Activo") tableMapping.ColumnMappings.Add("NombreCuenta", "NombreCuenta") tableMapping.ColumnMappings.Add("TipoCuenta", "TipoCuenta") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[BAN1] ([CodBanco], [CodEmpr], [NumCuenta], [Activo], [NombreCu"& _ "enta], [TipoCuenta]) VALUES (@CodBanco, @CodEmpr, @NumCuenta, @Activo, @NombreCu"& _ "enta, @TipoCuenta)" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@CodBanco", Global.System.Data.SqlDbType.VarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "CodBanco", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@CodEmpr", Global.System.Data.SqlDbType.VarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "CodEmpr", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@NumCuenta", Global.System.Data.SqlDbType.VarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "NumCuenta", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Activo", Global.System.Data.SqlDbType.Bit, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "Activo", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@NombreCuenta", Global.System.Data.SqlDbType.VarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "NombreCuenta", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@TipoCuenta", Global.System.Data.SqlDbType.VarChar, 0, Global.System.Data.ParameterDirection.Input, 0, 0, "TipoCuenta", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Private Sub InitConnection() Me._connection = New Global.System.Data.SqlClient.SqlConnection() Me._connection.ConnectionString = Global.Inversiones.My.MySettings.Default.InversionesConnectionString End Sub _ Private Sub InitCommandCollection() Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(0) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT Id, CodBanco, CodEmpr, NumCuenta, Activo, NombreCuenta, TipoCuenta FROM db"& _ "o.BAN1" Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text End Sub _ Public Overloads Overridable Function Fill(ByVal dataTable As InversionesDEVDataSet3.BAN1DataTable) 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 InversionesDEVDataSet3.BAN1DataTable Me.Adapter.SelectCommand = Me.CommandCollection(0) Dim dataTable As InversionesDEVDataSet3.BAN1DataTable = New InversionesDEVDataSet3.BAN1DataTable() Me.Adapter.Fill(dataTable) Return dataTable End Function _ Public Overloads Overridable Function Update(ByVal dataTable As InversionesDEVDataSet3.BAN1DataTable) As Integer Return Me.Adapter.Update(dataTable) End Function _ Public Overloads Overridable Function Update(ByVal dataSet As InversionesDEVDataSet3) As Integer Return Me.Adapter.Update(dataSet, "BAN1") 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 Insert(ByVal CodBanco As String, ByVal CodEmpr As String, ByVal NumCuenta As String, ByVal Activo As Global.System.Nullable(Of Boolean), ByVal NombreCuenta As String, ByVal TipoCuenta As String) As Integer If (CodBanco Is Nothing) Then Me.Adapter.InsertCommand.Parameters(0).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(0).Value = CType(CodBanco,String) End If If (CodEmpr Is Nothing) Then Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(1).Value = CType(CodEmpr,String) End If If (NumCuenta Is Nothing) Then Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(2).Value = CType(NumCuenta,String) End If If (Activo.HasValue = true) Then Me.Adapter.InsertCommand.Parameters(3).Value = CType(Activo.Value,Boolean) Else Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value End If If (NombreCuenta Is Nothing) Then Me.Adapter.InsertCommand.Parameters(4).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(4).Value = CType(NombreCuenta,String) End If If (TipoCuenta Is Nothing) Then Me.Adapter.InsertCommand.Parameters(5).Value = Global.System.DBNull.Value Else Me.Adapter.InsertCommand.Parameters(5).Value = CType(TipoCuenta,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 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 _bAN1TableAdapter As BAN1TableAdapter 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 BAN1TableAdapter() As BAN1TableAdapter Get Return Me._bAN1TableAdapter End Get Set Me._bAN1TableAdapter = 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._bAN1TableAdapter) Is Nothing) _ AndAlso (Not (Me._bAN1TableAdapter.Connection) Is Nothing)) Then Return Me._bAN1TableAdapter.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._bAN1TableAdapter) 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 InversionesDEVDataSet3, 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._bAN1TableAdapter) Is Nothing) Then Dim updatedRows() As Global.System.Data.DataRow = dataSet.BAN1.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._bAN1TableAdapter.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 InversionesDEVDataSet3, ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer Dim result As Integer = 0 If (Not (Me._bAN1TableAdapter) Is Nothing) Then Dim addedRows() As Global.System.Data.DataRow = dataSet.BAN1.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) If ((Not (addedRows) Is Nothing) _ AndAlso (0 < addedRows.Length)) Then result = (result + Me._bAN1TableAdapter.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 InversionesDEVDataSet3, ByVal allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer Dim result As Integer = 0 If (Not (Me._bAN1TableAdapter) Is Nothing) Then Dim deletedRows() As Global.System.Data.DataRow = dataSet.BAN1.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) If ((Not (deletedRows) Is Nothing) _ AndAlso (0 < deletedRows.Length)) Then result = (result + Me._bAN1TableAdapter.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 InversionesDEVDataSet3) 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._bAN1TableAdapter) Is Nothing) _ AndAlso (Me.MatchTableAdapterConnection(Me._bAN1TableAdapter.Connection) = false)) Then Throw New Global.System.ArgumentException("Todos los TableAdapters administrados por un TableAdapterManager deben usar la mi"& _ "sma cadena de conexión.") End If Dim workConnection As Global.System.Data.IDbConnection = Me.Connection If (workConnection Is Nothing) Then Throw New Global.System.ApplicationException("TableAdapterManager no contiene información de conexión. Establezca cada propieda"& _ "d TableAdapterManager TableAdapter en una instancia TableAdapter válida.") 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("La transacción no puede comenzar. La conexión de datos actual no es compatible co"& _ "n las transacciones o el estado actual no permite que comience la transacción.") 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._bAN1TableAdapter) Is Nothing) Then revertConnections.Add(Me._bAN1TableAdapter, Me._bAN1TableAdapter.Connection) Me._bAN1TableAdapter.Connection = CType(workConnection,Global.System.Data.SqlClient.SqlConnection) Me._bAN1TableAdapter.Transaction = CType(workTransaction,Global.System.Data.SqlClient.SqlTransaction) If Me._bAN1TableAdapter.Adapter.AcceptChangesDuringUpdate Then Me._bAN1TableAdapter.Adapter.AcceptChangesDuringUpdate = false adaptersWithAcceptChangesDuringUpdate.Add(Me._bAN1TableAdapter.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._bAN1TableAdapter) Is Nothing) Then Me._bAN1TableAdapter.Connection = CType(revertConnections(Me._bAN1TableAdapter),Global.System.Data.SqlClient.SqlConnection) Me._bAN1TableAdapter.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