Ich habe Deinen Code mal auf die Schnelle als Klasse zurechtgebogen.
Nicht getestet, nur anschauen!
Option Explicit
Private mGesamtHS As String
Private mGesamtSG As String
Private mGesamtHF As String
Public Property Get GesamtHS() As String
GesamtHS = mGesamtHS
End Property
Public Property Get GesamtSG() As String
GesamtSG = mGesamtSG
End Property
Public Property Get GesamtHF() As String
GesamtHF = mGesamtHF
End Property
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
ermitteln_GesamtHS
ermitteln_GesamtSG
ermitteln_GesamtHF
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 AddItem(Datum As Date, _
Name As String, HS As String, _
SG As String, HF As String)
Add Datum, Name, HS, SG, HF
ermitteln_GesamtHS
ermitteln_GesamtSG
ermitteln_GesamtHF
End Sub
Public Sub Bestl_einlesen(Spi As String)
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): NewBestl.Add Spieltg, Spi, 0, 0, 0
Else
.MoveFirst
Do While Not .EOF
NewBestl.Add Spieltg, Spi, .Fields(3), .Fields(4), .Fields(5)
.MoveNext
Loop
.Close
End If
End With
End Sub
Call ermitteln_GesamtHS
Call ermitteln_GesamtSG
Call ermitteln_GesamtHF
Call Bestl_anzeigen
Set rsdat = Nothing
End Sub
Private Function ermitteln_GesamtHF()
GesamtHF = ""
Dim it As clsBestleistungen
For i = 1 To BestlCol.count
Set it = BestlCol(i)
If Not it.HF = "0" Then
If GesamtHF = "" Then
GesamtHF = NewBestl.item(i).HF
Else
GesamtHF = GesamtHF + "," + NewBestl.item(i).HF
End If
End If
Next
End Function
Private Function ermitteln_GesamtSG()
GesamtSG = ""
Dim it As clsBestleistungen
For i = 1 To BestlCol.count
Set it = BestlCol(i)
If Not it.SG = "0" Then
If GesamtSG = "" Then
GesamtSG = NewBestl.item(i).SG
Else
GesamtSG = GesamtSG + "," + NewBestl.item(i).SG
End If
End If
Next i
End Function
Private Function ermitteln_GesamtHS()
GesamtHS = ""
Dim it As clsBestleistungen
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
Private Function Bestl_anzeigen()
With frmBestl
.lblBestlSpieler.Caption = NewBestl.item(1).Name
If NewBestl.GesamtHS <> "0" Then
.txtHS.Text = NewBestl.GesamtHS
Else
.txtHS.Text = ""
End If
If NewBestl.GesamtSG <> "0" Then
.txtSG.Text = NewBestl.GesamtSG
Else
.txtSG.Text = ""
End If
If NewBestl.GesamtHF <> "0" Then
.txtHFAnzeige.Text = NewBestl.GesamtHF
Else
.txtHFAnzeige.Text = ""
End If
End With
End Function |