vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Richtige Verwendung einer Klasse 
Autor: Manfred X
Datum: 05.11.14 07:35

Hallo!

Collections besitzen eine schreibgeschützte LONG-Eigenschaft "Count".
Der Wert dieser Eigenschaft ändert sich bei jedem Hinzufügen oder Entfernen eines Items.

Du kapselst in Deiner Klasse die Collection BestlCol.
Die zusätzlichen Properties "GesamtHS", "GesamtHF" und "GesamtSG" sind in gleicher
Weise von den Items der Collection abhängig, d.h. ihre Werte werden bei jedem Hinzufügen
oder Entfernen eines Items intern neu bestimmt (Private) und können von außen (Public)
nur abgefragt werden.

Einen Zusammenhang gibt es auch zwischen den Properties Deiner Item-Klasse "clsBestLeisungen",
wenn sie durch die Methode "Bestl_Einlesen" gefüllt werden. Die Beziehung zwischen den
Werten der Eigenschaften einer Klassen-Instanz sind dabei durch die Felder eines "Record" gegeben.
(Ob zusätzlich eine öffentliche Methode "AddItem" benötigt wird, kann ich nicht beurteilen.)

So wie Du die Collection-Klasse programmierst, ergibt sich eine Ansammlung von Eigenschaften und
Routinen ohne klar definierten Bezug zueinander, denen beliebig Werte zugewiesen werden können.

Es kann sein, daß Du ein derartiges Verhalten benötigst. Diese Klasse gestaltest Du besser
durch die Verwendung von Methoden (Function) statt von Properties.
Option Explicit
 
Private BestlCol As Collection
 
Public Property Get item(ByVal Index As Long) As clsBestLeistungen
    Set item = BestlCol(Index)
End Property
 
Public Property Get count() As Long
   count = BestlCol.count
End Property
 
Public Sub remove(ByVal Index As Integer)
    BestlCol.remove Index
End Sub
 
Private Sub Class_Initialize()
   Set BestlCol = New Collection
End Sub
 
Private Sub Class_Terminate()
   Set BestlCol = Nothing
End Sub
 
 
Private Sub Add(Datum As Date, _
   Name As String, hs As String, _
   SG As String, hf As String)
 
   Dim DSnew As clsBestLeistungen
   Set DSnew = New clsBestLeistungen
   With DSnew
     .Datum = Datum
     .Name = Name
     .hs = hs
     .SG = SG
     .hf = hf
   End With
   BestlCol.Add DSnew
End Sub
 
 
Public Sub Bestl_einlesen(ByVal Spieltg As String, ByVal Spi As String)
 
   'Deklariere strDSQ, rsdat
 
   strDSQ = "SELECT * FROM Bestleistungen WHERE Datum=" & Format(Spieltg, _
        "\#yyyy\-mm\-dd\#") & " AND Name='" & Spi & "'"
   Set rsdat = DB.OpenRecordset(strDSQ, dbOpenDynaset)
   With rsdat
      If .EOF = True And .BOF = True Then
         Call Meldanz("Bisher keine Bestleistungen" & _
          "für " & Chr(13) & Spi, 3000)
          Add Spieltg, Spi, 0, 0, 0
      Else
         .MoveFirst
         Do While Not .EOF
            Add Spieltg, Spi, .Fields(3), .Fields(4), .Fields(5)
            .MoveNext
        Loop
        .Close
      End If
  End With
 
  Set rsdat = Nothing
End Sub
 
 
Public Function GesamtHF() As String
    GesamtHF = ""
    Dim it As clsBestLeistungen
    Dim i As Integer
    For i = 1 To BestlCol.count
        Set it = BestlCol(i)
        If Not it.hf = "0" Then
            If GesamtHF = "" Then
               GesamtHF = item(i).hf
            Else
               GesamtHF = GesamtHF + "," + item(i).hf
            End If
        End If
    Next i
End Function
 
 
Public Function GesamtSG() As String
    GesamtSG = ""
    Dim it As clsBestLeistungen
    Dim i As Integer
    For i = 1 To BestlCol.count
       Set it = BestlCol(i)
       If Not it.SG = "0" Then
          If GesamtSG = "" Then
             GesamtSG = item(i).SG
          Else
             GesamtSG = GesamtSG + "," + item(i).SG
          End If
      End If
    Next i
End Function
 
 
Public Function GesamtHS()
  GesamtHS = ""
  Dim it As clsBestLeistungen
  Dim i As Integer
  Dim c As Integer: c = 0
  For i = 1 To BestlCol.count
     Set it = BestlCol(i)
     If Not it.hs = "0" Then c = c + 1
  Next i
  GesamtHS = CStr(c)
End Function
Deklariere Deine Variablen Explicit.
Die Function "Bestl_Anzeigen" gehört nicht in diese Klasse,
sondern in das entsprechende Formular.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Richtige Verwendung einer Klasse2.193guenni25503.11.14 12:48
Re: Richtige Verwendung einer Klasse1.479Manfred X04.11.14 06:25
Re: Richtige Verwendung einer Klasse1.378guenni25504.11.14 09:14
Re: Richtige Verwendung einer Klasse1.375Manfred X04.11.14 10:28
Re: Richtige Verwendung einer Klasse1.425guenni25504.11.14 16:49
Re: Richtige Verwendung einer Klasse1.318Manfred X04.11.14 17:24
Re: Richtige Verwendung einer Klasse1.357guenni25504.11.14 17:44
Re: Richtige Verwendung einer Klasse1.336Manfred X04.11.14 18:00
Re: Richtige Verwendung einer Klasse1.318guenni25504.11.14 18:19
Re: Richtige Verwendung einer Klasse1.392Manfred X04.11.14 18:53
Re: Richtige Verwendung einer Klasse1.349guenni25504.11.14 23:12
Re: Richtige Verwendung einer Klasse1.375Manfred X05.11.14 07:35
Re: Richtige Verwendung einer Klasse1.341guenni25505.11.14 16:28

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel