Access Langlaufrennen

Dieses Thema im Forum "Office-Programme" wurde erstellt von schilling, 26. Februar 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. schilling

    schilling Byte

    Registriert seit:
    18. April 2000
    Beiträge:
    19
    Hallo Access-Experten,
    ich habe folgendes Problem:
    Ich möchte für ein Ski-Langlaufrennen ein einfaches Auswertungsprogramm mit Access erstellen. Ist auch alles nicht schwer, habe nur ein Problem: Es gibt zwei Tabellen, in der einen werden die Starter erfaßt, in der anderen werden die Startklassen verwaltet. Zu jedem Läufer wird in einem Formular neben Name und Geschlecht etc auch das Geburtsjahr (z.B. 1973) erfaßt. Die zugehörige Startklasse soll anhand des Geschlechts (w oder m) und des Geburtsjahres automatisch aus der Tabelle Startklassen ermittelt werden. Das Problem liegt darin, dass es Startklassen gibt, die für mehrere Jahrgänge gelten (z.B. 1970 ? 1975). Wie kann ich über eine Aktualisierungsabfrage (oder auch anders) die jeweilige Klasse finden und dem Starter in die Tabelle schreiben? In der Tabelle Startklassen habe ich zwei Felder ?Jahrgang ab? und ?Jahrgang bis? angelegt, die Tabelle Strater hat das Feld Startklasse.
    Vielen Dank für Eure Hilfe.
     
  2. castanho

    castanho Kbyte

    Registriert seit:
    4. März 2003
    Beiträge:
    292
    Jain und nein.
    Also das gesamte Konstrukt ist VBA. Allerdings erzeuge ich einen SQL-String (strSQL = " ...") , also eine Anweisung, die die Jet DB-Engine versteht. Den übergebe ich an die Datenbankengine (dbs.openrecordset(strsql)) und fülle damit ein Recordsetobjekt (Rst).
    Prinzipiell ist es möglich, Abfragen zusammenzuklicken, und natürlich kann man dann den SQL-Text auch kopieren. Im vorliegenden Fall müssen aber noch die Inhalte von Formularfeldern als Vergleichsoperanden (..." & Me.Feldname & "...) eingefügt werden.
    Natürlich ist die Routine noch nicht vollständig, auch wenn sie so bereits lauffähig wäre. Allerdings ist ja denkbar, daß die Abfrage keinen Datensatz findet, das Recordsetobjekt (Rst) wäre dann leer. Bei dem Versuch, darauf zuzugreifen gäbe es einen Laufzeitfehler, den man abfangen müßte.
     
  3. Vyasa

    Vyasa Kbyte

    Registriert seit:
    6. Januar 2002
    Beiträge:
    160
    Ich verstehe zwar nix davon, aber es sieht sauberer, besser und auch interessanter aus als mein Vorschlag :-).
    Ist das SQL?
    Kann ich sowas auch per Mausklick bei den Abfragen erzeugen? Vermutlich nicht, oder?
     
  4. castanho

    castanho Kbyte

    Registriert seit:
    4. März 2003
    Beiträge:
    292
    Dim Dbs as Database
    Dim Rst as recordset
    dim strSQL as string

    set dbs = currentdb
    strsql = "SELECT Startklassen.Startklasse FROM Startklassen WHERE Startklassen.[Jahrgang ab] >= " & Me.Geburtsjahr & " AND Startklassen.[Jahrgang bis] <= " & Me.Geburtsjahr & " AND Startklassen.Geschlecht = " & Me.Geschlecht & ";"
    set rst = dbs.openrecordset(strsql)
    Me.Startklasse = rst!Startklasse

    Den Quelltext einem Button oder einem Formularereignis zuweisen und das Formular sucht sich die passende Startklasse selber.
    [Diese Nachricht wurde von castanho am 05.03.2003 | 11:13 geändert.]
     
  5. schilling

    schilling Byte

    Registriert seit:
    18. April 2000
    Beiträge:
    19
    Jau, Danke so geht es natürlich auch. Hätte ich auch selber drauf kommen können, aber ich hatte einen anderen Weg im Kopf. Habe aber Deine Empfehlung genutzt.
    Gruß Ralf
     
  6. Vyasa

    Vyasa Kbyte

    Registriert seit:
    6. Januar 2002
    Beiträge:
    160
    Kannst Du nicht einfach in einer Tabelle ein Jahresfeld und ein Startklassenfeld anlegen?

    Dann gehört zu jedem Jahr auf jeden Fall immer das richtige Startklassenfeld.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen