und schließlich eine geeignete Collection dafür...
'------------------------------------------------------------------------------
' ----------------------------------------------------------------------
' clsObject Collection collectionContries
' Author: Gregor Böhme
' Letzte Änderung: Mittwoch, 29. September 2004 um 10:09:31
'------------------------------------------------------------------------------
' ----------------------------------------------------------------------
Public Class collectionContries : Inherits dbiObjCollection
#Region "Interne Deklarationen"
Private _contriesCollection As New Collection()
Private _contriesCollectionChanges As New Collection()
Private _collectionTypeName As String = "clsContries"
#End Region
#Region "Konstruktoren"
' Lese alle Objekte aus der Datenbank und füge sie in die Collection
Public Sub New()
Dim connection As New SqlClient.SqlConnection( _
trainingsmanager.TmConnectionString)
Try
Dim objSelectQuery As String = "SELECT contryID, contryName," & _
"deleteFlag, updateAccountID, updateTimestamp FROM tm_contries"
connection.Open()
Dim selectRequest As New SqlClient.SqlCommand(objSelectQuery, _
connection)
Dim selectReader As SqlClient.SqlDataReader = _
selectRequest.ExecuteReader
While selectReader.Read
Dim _contryID As Integer ' DB:int identity(4)
Dim _contryName As String ' DB:varchar(255)
Dim _deleteFlag As Boolean ' DB:bit(1)
Dim _updateAccountID As Integer ' DB:int(4)
Dim _updateTimestamp As DateTime ' DB:datetime(16)
_contryID = selectReader.Item("contryID")
_contryName = selectReader.Item("contryName")
_deleteFlag = selectReader.Item("deleteFlag")
_updateAccountID = selectReader.Item("updateAccountID")
_updateTimestamp = selectReader.Item("updateTimestamp")
Dim newContries As New clsContries(_contryID, _contryName, _
_deleteFlag, _updateAccountID, _updateTimestamp)
_contriesCollection.Add(newContries, _contryID.ToString)
End While
connection.Close()
Catch
connection.Close()
End Try
End Sub
#End Region
#Region "Eigenschaften"
Public ReadOnly Property contries() As Collection
Get
Return _contriesCollection
End Get
End Property
Public ReadOnly Property CollectionTypeName() As String
Get
Return _collectionTypeName
End Get
End Property
Public Overrides ReadOnly Property Data() As Collection
Get
Return _contriesCollection
End Get
End Property
#End Region
#Region "Methoden und Funktionen"
' Suche ein Element in der Collection und liefere Referenz zurück
Public Function GetItemRef(ByVal myContryID As Integer) As clsContries
Return _contriesCollection.Item(myContryID.ToString)
End Function
' Empfängt Änderungen in der Collection und fügt sie in die Warteschlange ein
Public Overrides Function ReceiveChanges(ByVal myChanges As _
clsDatabaseChanges)
_contriesCollectionChanges.Add(myChanges, myChanges.FilterString & ":" _
& myChanges.RowAction)
End Function
' Arbeitet die in der Warteschlange befindlichen Änderungen ein
Public Overrides Sub DoUpdate()
Dim currChange As clsDatabaseChanges
For Each currChange In _contriesCollectionChanges
Dim pkArray() As String
pkArray = currChange.FilterString.Replace("AND", ";").Split(";")
Dim _contryID As Integer = pkArray(0).Trim.Substring(pkArray( _
0).Trim.IndexOf("=") + 1)
Select Case currChange.RowAction
Case "update"
CType(_contriesCollection.Item(_contryID.ToString), _
clsContries).UpdateFromDb()
Case "insert"
Try
Dim newContries As New clsContries(_contryID, True)
_contriesCollection.Add(newContries, _contryID.ToString)
Catch
End Try
Case "delete"
_contriesCollection.Remove(_contryID.ToString)
End Select
_contriesCollectionChanges.Remove(currChange.FilterString & ":" & _
currChange.RowAction)
Next
End Sub
' Fügt ein dbiObjekt in die Collection und die Datenbank ein
Public Sub AddItem(ByVal myContryName As String)
Dim tmpContries As New clsContries(myContryName)
_contriesCollection.Add(tmpContries,tmpContries.ContryID.ToString)
End Sub
#End Region
End Class 'collectionContries |