MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Visual Studio /.NET > Visual Studio .NET (alle Produkte: C#, VB.NET etc.)
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 26.06.2018, 11:28   #1
chbahn
MOF User
MOF User
Standard VB - Klassen und Collection

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"
chbahn ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.06.2018, 14:58   #2
chbahn
Threadstarter Threadstarter
MOF User
MOF User
Standard

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"
chbahn ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.