Rangberechnung

Hallo zusammen, (Vers. Access 2007)
mit den u.g. Code habe ich folgendes Problem. Die Rangberechnug ist bei allen soweit ok, nur wenn die Laufzeiten innerhalb der Geschlechter gleich ist, aber die Länge der Strecke unterschiedlich gibt es den Rang 1 nicht aus. z. B. Laufzeit = 50000 sekunden bei zwei Läufern der eine hat die Stecke 66 km u. der andere 80 km gewählt. Dann wird der Rang bei beiden Strecken z.B. auf 6 gesetzt wobei die eine 6 richtig ist aber die andere müsste 1 bei 80 km sein. Wo liegt in dem Code der Fehler? Für einen Tipp bin ich Dankbar!

MerkJahr= das Veranstaltungsjahr,
MerkKlasse= weibl, männl.,
MerkStrecke= die länge der Laufstrecke (66 km, oder 80 km…), ZeitSekGesamt= die gesamte Laufzeit in Sekunden.

Private Sub BerRang_Click()
Dim AktZeit, MerkRang, AktRang, MerkStrecke, MerkJahr, MerkKlasse, DB As Database, rs As Recordset
Set DB = CurrentDb()
Set rs = DB.OpenRecordset(„SELECT * FROM tblStartliste ORDER BY VERJAHR, Geschlecht2, Strecke, ZeitSekGesamt“, dbOpenDynaset)
AktZeit = 0
Do While Not rs.EOF
If rs!VERJAHR MerkJahr Then MerkRang = 0
AktRang = AktRang + 0
If rs!GESCHLECHT2 MerkKlasse Then AktRang = 0
AktRang = AktRang + 0
If rs!STRECKE MerkStrecke Then AktRang = 0
AktRang = AktRang + 1
If AktZeit rs!ZeitSekGesamt Then MerkRang = AktRang
AktZeit = rs!ZeitSekGesamt
rs.Edit
rs!Rang = MerkRang
rs.UpDate
MerkJahr = rs!VERJAHR
MerkKlasse = rs!GESCHLECHT2
MerkStrecke = rs!STRECKE
rs.MoveNext
Loop
rs.Close
Me.Requery
End Sub

Gruß - Wolfgang

Moin, Wolfgang,

aus dem Code lässt sich nicht erkennen, welche Rangfolge gewünscht ist, die Angabe

wobei die eine 6
richtig ist aber die andere müsste 1 bei 80 km sein.

hilft da auch nicht weiter.

Wenn die Daten bereits richtig sortiert gelesen werden, ergibt sich der Rang doch zwangsläufig, mit einer Abfrage à la

 SELECT 
 (Select Count (\*) FROM AktivesMitglied as Temp 
 WHERE Temp.mitglied 
wird die laufende Nummer dazugestellt und als Rang verkleidet.

Nach welchen Regeln eine gemeinsame Rangfolge für die beiden Wettbewerbe zusammengerührt wird, erschließt sich mir leider nicht.

Gruß Ralf

Hallo Ralf,
danke für deine Antwort.
Das Muster der DB ist nach der u.g. Lösung (s. Link)aufgebaut. Nur soll eben wenn die Laufzeiten gleich sind aber die Strecke unterschiedlich ist der eine den Rang (hier 66km) 6 und der andere den Rang (hier bei 80 km)1. anzeigen. Leider macht der Code bei beiden den 6. Rang obwohl die Sortierung schon stimmt. Angezeigt wird der eine bei 66 km und der andere bei 80 km aber eben der 6. Rang u. nicht der 1. bei 80 km.

http://www.dbwiki.de/upload/AccSampleRang.zip

Gruß - Wolfgang

Moin, Wolfgang,

ich sehe nur das:

StartNr Klasse Rang Zeit Name

4 Damen 1 15 Diaphragma Meier
6 Damen 2 17 Gundula della Casa
8 Damen 2 17 Euphorbia Canarensis
11 Damen 4 18 Renata Müller
2 Damen 5 22 Homina Sapienta
5 Damen 5 22 Karla Kolumna
7 Herren 1 11 Theodosius Hinderer
1 Herren 2 12 Karl de la Costa
12 Herren 2 12 Leonardo Carlsen
3 Herren 4 14 Eusebius Schulze
9 Herren 4 14 Gandalf Gnottenwurm
10 Herren 6 16 Hans di Caprio

Gruß Ralf

Servus Ralf,

ja das ist schon richtig, dass du nur die Einteilung in weibl. u. mämnnl. siehst. Ich habe es erweitert um die Laufstrecken und Jahre. Diese sollten eben richtige Ränge ausgeben. Aber wie gesagt bei Zeitgleichheit wird bei beiden Laufstrecken der gleiche Rang ausgegeben (hier z.B. 6).

Gruß - Wolfgang

Hallo,

so ganz genau versteh ich nicht, was da mit Rang bei 66 km und bei 80 km gemeint ist.

Wenn es sich dabei um unterschiedliche „Klassen“ (Disziplinien) handelt, dann muß nach diesen Klassen gruppiert (nicht sortiert) werden und für jede Klasse eine eigene Rangberechnung erfolgen.

Viele Grüße vom Bodensee
Franz, DF6GL

Moin, Wolfgang,

in fremder Leute Code rumzustochern ist wenig vergnüglich; sobald ein Problem sauber beschrieben ist (hier hätte das Stichwort Allzeit-Rangliste geholfen), liegt meist die Lösung eh schon nahe.

Wenn ich (m)eine Anforderung nicht verstehe, was durchaus des öfteren vorkommt, sortiere ich mir die Daten so lang, bis sie in der richtigen Reihen- bzw. Rangfolge gezeigt werden. Erst dann mache ich mich über den Code her.

Gruß Ralf

Servus Franz,

ich gruppiere bereits nach den Geschlechtern, Laufstreccken (66 km 80km usw.(Disziplinen)). Leider geht aus dem Code die Berechnung nicht ganz auf. Wie eben im Vorfeld schon gedeutet.
Alles andere funktioniert super gut. Nur die eine Berechnung feigelt bei Zeitgleichheit.

Gruß - Wolfgang