![]() |
|
![]() |
#1 |
![]() MOF User |
![]() Hallo,
mein Ziel ist es eine Klasse zu erstellen die ein Projekt definiert! Zum dem Projekt gehören mehrer Tabellen und Felder! Aber schon bei den Tabellen kommt es bei mir zu Problemen, die ich nicht lösen kann. Ich habe eine Klasse mit dem Namen Project erstellt. In der Klasse habe ich eine weitere Klasse mit dem namen Tables erstellt. Nun möchte ich dem Project mehrere Tabellen hinzufügen. Da habe ich mir gedacht, diese speichere in eine Collection. Aber leider bekomme ich immer nur den gleichen Wert zurück, nämlich den letzten den ich hinzugefügt habe! Was mache ich falsch, oder ist das eine falsche Herangehensweise die ich hier nutze? Für jede Hilfe und oder Anregung bin ich dankbar! Hier mein Testcode: Code: Module Module1 Sub Main() Dim objProject As New Project Dim objTable As New Project.Table objProject.ProjectName = "Testproject" With objTable .TableName = "Tabelle1" .TableID = 1 .TableDescription = "Beschreibung der Tabelle 1" End With objProject.TableAdd(objTable) With objTable .TableName = "Tabelle2" .TableID = 2 .TableDescription = "Beschreibung der Tabelle 2" End With objProject.TableAdd(objTable) Debug.Print("Anzahl der Tabllen=" & objProject.TableCount) For Each tbl As Project.Table In objProject.Tables Debug.Print(tbl.TableName) Next Debug.Print("TableName für Tabelle 1 =" & objProject.TableGet("Tabelle1").TableName) Debug.Print("TableName für Index(1) =" & objProject.TableGet(1).TableName) Debug.Print("TableName für Index(2) =" & objProject.TableGet(2).TableName) End Sub End Module Public Class Project Public Property ProjectName As String Private objTables As Collection = New Collection Public Function Tables() As Collection Return objTables End Function Public Sub TableAdd(ByVal Tabledata As Project.Table) objTables.Add(Tabledata, Tabledata.TableName) End Sub Public Function TableGet(ByVal TableName As String) As Project.Table Return objTables.Item(TableName) End Function Public Function TableGet(ByVal Index As Integer) As Project.Table Return objTables.Item(Index) End Function Public Function TableCount() As Int16 Return objTables.Count End Function Public Class Table Public Property TableID As Int16 Public Property TableName As String Public Property TableDescription As String Public Property TableActive As Boolean Public Property TableAutoIncrement As Boolean Public Property TabelSQLForNewID As String Public Property TableIDSQLField As String End Class End Class __________________ "Programmers never die, they just GOSUB without RETURN" |
![]() |
![]() ![]() |
![]() |
#2 |
Threadstarter
![]() ![]() MOF User |
![]() Habe das problem selber gefunden!
Ich habe immer nur das bestehende Objekt geändert! Mit diesem Code funktioniert es! Code: Module Module1 Sub Main() Dim objProject As New Project Dim objTable As New Project.Table objProject.ProjectName = "Testproject" objTable = New Project.Table With objTable .TableName = "Tabelle1" .TableID = 1 .TableDescription = "Beschreibung der Tabelle 1" End With objProject.TableAdd(objTable) objTable = New Project.Table With objTable .TableName = "Tabelle2" .TableID = 2 .TableDescription = "Beschreibung der Tabelle 2" End With objProject.TableAdd(objTable) Debug.Print("Anzahl der Tabllen=" & objProject.TableCount) For Each tbl As Project.Table In objProject.Tables Debug.Print(tbl.TableName) Next Debug.Print("TableName für Tabelle 1 =" & objProject.TableGet("Tabelle1").TableName) Debug.Print("TableName für Index(1) =" & objProject.TableGet(1).TableName) Debug.Print("TableName für Index(2) =" & objProject.TableGet(2).TableName) End Sub End Module Public Class Project Public Property ProjectName As String Private objTables As Collection = New Collection Public Function Tables() As Collection Return objTables End Function Public Sub TableAdd(ByVal Tabledata As Project.Table) objTables.Add(Tabledata, Tabledata.TableName) End Sub Public Function TableGet(ByVal TableName As String) As Project.Table Return objTables.Item(TableName) End Function Public Function TableGet(ByVal Index As Integer) As Project.Table Return objTables.Item(Index) End Function Public Function TableCount() As Int16 Return objTables.Count End Function Public Class Table Public Property TableID As Int16 Public Property TableName As String Public Property TableDescription As String Public Property TableActive As Boolean Public Property TableAutoIncrement As Boolean Public Property TabelSQLForNewID As String Public Property TableIDSQLField As String End Class End Class __________________ "Programmers never die, they just GOSUB without RETURN" |
![]() |
![]() ![]() |