Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Poker-Ranglisten System mit Abghängigkeit vom Datum ...

Begonnen von Hellfire3004, Januar 13, 2015, 12:19:23

⏪ vorheriges - nächstes ⏩

Hellfire3004

Hallo zusammen,

ich hab seit neuestem Access2013 (vorher mit 2010 gearbeitet) und kenn mich nicht so gut aus mit Access. Folgende Aufgabenstellung:

Es gibt einen Poker-Club, für den ich jährlich eine Rangliste erstelle.
Es werden Mittwoch, Donnerstag, Freitag & Sonntags Turniere gespielt.

Mittwoch & Sonntags gibt es folgende Punkteverteilung:
Platz 1 : 4,5 Punkte
Platz 2 : 4 Punkte
Platz 3 : 3,5 Punkte
Platz 4 : 3 Punkte
Platz 5 : 2,5 Punkte
Platz 6 : 2 Punkte
Platz 7 : 1,5 Punkte
Platz 8 : 1 Punkt
Platz 9 : 0,5 Punkte

Am Donnerstag gibt es eine andere Punkteverteilung:
Platz 1 : 9 Punkte
Platz 2 : 8 Punkte
Platz 3 : 7 Punkte
Platz 4 : 6 Punkte
Platz 5 : 5 Punkte
Platz 6 : 4 Punkte
Platz 7 : 3 Punkte
Platz 8 : 2 Punkte
Platz 9 : 1 Punkt

Außerdem gibt es ca.2 Turniere im Jahr (sog. Big Events) mit folgender Punkteverteilung:
Platz 1 : 13,5 Punkte
Platz 2 : 12 Punkte
Platz 3 : 10,5 Punkte
Platz 4 : 9 Punkte
Platz 5 : 7,5 Punkte
Platz 6 : 6 Punkte
Platz 7 : 4,5 Punkte
Platz 8 : 3 Punkte
Platz 9 : 1,5 Punkte

Ich hab es letztes Jahr schon hingebracht, dass ich ein Eingabefenster hatte, bei dem ich lediglich den Namen für den jeweiligen Platz eingeben musste (vorher das Datum auswählen), dann musste ich allerdings die Punkte selber eingeben. Ich weíß nicht, wie ich das elegant lösen kann. Access soll mir anhand des Datums sofort die richtigen Punkte für die Platzierung übernehmen...?!

Am Ende des Jahres soll dann eine Rangliste erstellt werden und wenn es geht, eine Grafik, die anzeigt, wie oft ein Spieler welche Platzierungen erreicht hat (auch welche Art von Turnier ((Mi&So oder Do&Fr oder Big)) ?!

Ich hab noch meine Schwächen beim Aufbau der Datenbank, dh. wenn ich falsch anfange, dann wird das nix. Ich hoffe, ihr könnt mir schon beim Beginn helfen und wir gehen das dann zusammen durch ;)

Ich hoffe, ich habe alles verständlich erklärt und dass jemand Zeit & Lust hat, an dem Projekt mitzuarbeiten ;)  8)

MaggieMay

Hallo,

die Berechnung der Punkte anhand des Rangs und des Wochentags sollte doch kein Problem sein.
Hier mal ein Vorschlag:Private Sub Teilnehmer_AfterUpdate()
    Dim faktor As Single
    If Me.Parent.bigEvent Then
        faktor = 1.5
    Else
        Select Case Weekday(Me.Datum, vbMonday)
        Case 3, 7
            faktor = 0.5
        Case 4, 5
            faktor = 1
        Case Else
            faktor = 0
        End Select
    End If
    Me.Punkte = 10 * faktor - Me.Rang * faktor
End Sub

Freundliche Grüße
MaggieMay

Hellfire3004

Und wo genau soll der Code hin ? Ich hatte ja ein Eingabefenster, in der ich die Punkte eingetragen hab, wie füge ich stattdessen diesen Code ein ?

Ich schick heute Abend mal n paar Screens, von der DB, die ich letztes Jahr hatte... dann kann man das vielleicht besser nachvollziehen.

Ich hab seit letztem Jahr nichts mehr an der DB gemacht, bin also wieder total aus der Übung  ::)


MaggieMay

ZitatIch hatte ja ein Eingabefenster, in der ich die Punkte eingetragen hab
Was ist denn das für ein "Fenster"? Ich dachte, du gibst die Daten über ein Formular ein. Dort kannst du dann im Ereignis "Nach Aktualisierung" des Feldes für den Teilnehmer die Ereignisprozedur nutzen.
Freundliche Grüße
MaggieMay

Hellfire3004

Sorry, ja, natürlich is das ein Formular, wie gesagt, bin erst heute Abend wieder zu Hause, dann schick ich n paar Screens... Bzw. wär es toll, wenn ich die komplette DB irgendwo hochladen könnte, dann kann man ja zusammen dran arbeiten ?!

MaggieMay

Du kannst die DB komprimiert und gezippt hier im Forum hochladen.
Freundliche Grüße
MaggieMay

Hellfire3004

Hatte gestern keine Zeit mehr, sorry. Wollte gerade die DB hochladen, aber die max. Größe beträgt 300KB ... Sogar gezippt hat meine DB 970KB (normalerweise 1.7 MB)  :-\

MaggieMay

Und du hast sie vorher mit Access komprimiert? Gibt es Bilder oder andere Objekte, die die DB so "fett" machen?
Freundliche Grüße
MaggieMay

Hellfire3004


MaggieMay

Freundliche Grüße
MaggieMay

Hellfire3004


MaggieMay

#11
Hallo,

du solltest in der Ergebnistabelle den Fremdschlüssel aus der Tabelle "Namensliste" (besser: "tblTeilnehmer") speichern und nicht den Namen selbst.

Im Hauptformular fehlt der Schalter für den "Big Event" und im Unterformular fehlt das Feld "Punkte".
Nachdem du beides hinzugefügt hast, kannst du folgende Ereignisprozedur einsetzen:Private Sub Platz_AfterUpdate()
    Dim faktor As Single
    If Nz(Me.Parent.bigEvent, 0) Then
        faktor = 1.5
    Else
        Select Case Weekday(Me.Turnierdatum, vbMonday)
        Case 3, 7
            faktor = 0.5
        Case 4, 5
            faktor = 1
        Case Else
            faktor = 0
        End Select
    End If
    Me.Punkte = 10 * faktor - Me.Platz * faktor
End Sub

Die Tabelle "Punkte" brauchst du dafür eigentlöich nicht. Du könntest höchstens den Berechnungsfaktor mit Hilfe einer Tabelle dynamisch halten.

Wozu du aber das Hauptformular ebenfalls an die Ergebnistabelle gebunden hast, ist mir unklar.
Freundliche Grüße
MaggieMay

Hellfire3004

ZitatNachdem du beides hinzugefügt hast, kannst du folgende Ereignisprozedur einsetzen:
- Wo und wie einsetzen ?

ZitatWozu du aber das Hauptformular ebenfalls an die Ergebnistabelle gebunden hast, ist mir unklar.
-Wie, gebunden ?

Habs jetzt mal geändert, wie Du es geschrieben hast, aber mit dem BigEvent Knopf und dem Code passiert iwie nix  :-[

MaggieMay

#13
Ich hatte angenommen, dass die Platzierungen im Unterformular eingegeben werden, dort würde dann auch die Ereignisprozedur hingehören.

Das Kennzeichen "Big Event" sollte ein Kontrollkästchen und kein Optionsfeld sein und es sollte nicht nur mit "Big Event" beschriftet werden sondern auch den Namen "BigEvent" (ohne Leerzeichen!) erhalten.

Das HF unterscheidet sich insofern zu deiner Eingangs-Beschreibung, dass es nicht nur das Veranstaltungsdatum enthält, sondern auch die ganzen Ergebnisdatensätze. Ich verstehe nicht ganz, wie du dir den Zweck dieses Formulars gedacht hast. Das solltest du also noch genauer beschreiben.

ZitatIch hab es letztes Jahr schon hingebracht, dass ich ein Eingabefenster hatte, bei dem ich lediglich den Namen für den jeweiligen Platz eingeben musste (vorher das Datum auswählen), dann musste ich allerdings die Punkte selber eingeben.
Wär nicht schlecht, wenn man diese Lösung noch einsehen könnte, denn darauf baut sich eigentlich mein Vorschlag auf.
Freundliche Grüße
MaggieMay

Hellfire3004

So, hab mal ein Bild gemacht (Word-Dokument), auf dem man sieht, wie das ganze am Ende aussehen soll. Natürlich bin ich für Verbesserungsvorschläge offen ;)

Dok ist im Anhang  8)