Anzeige:
Ergebnis 1 bis 8 von 8

Thema: access : autowerte für spez. Ereignisse?

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    26

    access : autowerte für spez. Ereignisse?

    hallo zusammen,

    ich schustere grade an einer Accessdb, welche User , deren Gruppen und einige Daten speichert.


    Meine Tabelle für die Gruppe sieht momentan so aus:
    gruppe(gr_id,startdatum)

    Ich würde gerne noch ein 3. Feld hinzufügen, in dem noch ein Autowert steht, welcher aber stadardmäßig auf "1" steht. Nur wenn an einem Tag zb 2 (oder mehr) Gruppen gestartet werden, soll dieser hochgezählt werden.

    Kann mir jmd sagen, wie ich einen Autowert in Abhängigkeit zum Datum erstellen kann?

    Danke!

    juan

    //edit: nur zur Übersicht:
    gruppe(gr_id,startdatum,datum_nr)

    Code:
    gr_id | startdatum | datum_nr
    -----------------------------
    1     | 12.02.2008 | 1
    2     | 13.02.2008 | 1
    3     | 13.02.2008 | 2
    ----------------------------

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.11.2005
    Beiträge
    16
    Access kennt leider keine Trigger, das wäre meiner Meinung nach der eleganteste Weg.
    So bleibt wohl nur, vor dem Einfügen die Anzahl der Datensätze manuell zu ermitteln. Dann solltest du aber vorher die Tabelle sperren, nicht dass ein anderer Zugriff dazwischen funkt.

    Eine andere Möglichkeit fällt mir gerade noch ein: Du definierst die Nr als autoinkrement und kümmerst dich beim Einfügen nicht weiter darum. Die Anzahl Gruppen pro Tag lässt sich einfach ermitteln und jede Gruppe hat eine eigene Nummer. Brauchst du trotzdem eine Nummerierung pro Tag, kannst du bei der Anzeige einfach die erste Nummer von den anderen subtrahieren, wenn du nacheinander die Datensätze deiner Abfrage durchgehst. Da kann ich dir auch ein Beispiel basteln.

    Edit:
    Gerade ausprobiert: Einfach und elegant geht es mit einer Abfrage auf deiner Tabelle, wenn wie oben erwähnt Nummer ein autowert ist, die in der SQL-Ansicht so aussieht:
    Code:
    SELECT Tabelle1.gr_id, Tabelle1.startdatum, (SELECT count(*) FROM Tabelle1 as t WHERE t.datum_nr<=Tabelle1.datum_nr AND t.startdatum=Tabelle1.startdatum) AS Rang
    FROM Tabelle1;
    Gruß,
    Paul
    Geändert von paule (10-03-2008 um 21:28 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    26
    mhh, erstmal Danke.

    Aber irgendwie lüppert das noch nicht so ganz.

    Ich habe dein Abfrage so übernommen, wie sie ist.Allerding addiert "Rang" nur und zählt nicht von 1-x.
    Wenn ich jetzt überall eine x-beliebige Zahl eintrage, wird korrekt gezählt (sofern sie sich untereinander unterscheiden)!

    Außerdem bitte ich um eine Erklärung, was du mit "t" meinst.


    Vielen Dank!

    ciao

    //edit:
    ich habe grade meine Abfrage so gestaltet :
    Code:
    SELECT Tabelle1.gr_id, Tabelle1.startdatum, (SELECT count(*) FROM Tabelle1 as t WHERE t.gruppen_id<=Tabelle1.gruppen_id AND t.startdatum=Tabelle1.startdatum) AS Rang
    und es scheint erstmal zu klappen. so würde ich mir auch die "unnötige" Spalte der datum_nr'n ersparen und es wäre sichergestellt, dass sich die Zahlen unterscheiden. Es klappt auch soweit (beim ersten und zweiten Eindruck). Spricht irgendwas dagegen, es so zu lassen?
    Geändert von juan_ (17-03-2008 um 10:24 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von juan_ Beitrag anzeigen
    ...Außerdem bitte ich um eine Erklärung, was du mit "t" meinst.
    "t" ist ein Tabellenalias für "Tabelle1", genauso wie RANG ein Alias für die Pseudospalte aus dem select ist.

    Code:
    SELECT Tabelle1.gr_id, Tabelle1.startdatum, (SELECT count(*) FROM Tabelle1 as t WHERE t.gruppen_id<=Tabelle1.gruppen_id AND t.startdatum=Tabelle1.startdatum) AS Rang FROM Tabelle1
    fehlte da wohl noch.

    Gegen diesen SELECT spricht erstmal syntaktisch nichts - nur u. U. die Performance, der Subselect wird ja im Prinzip für jeden Ergebnissatz des Hauptselects ausgeführt. Kann bei großen Tabellen leicht ins Geld gehen ;-)

    Jan

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    26
    Gut, dieses Risiko gehe ich ein

    das From habe ich vergessen zu pasten.
    Aber so lange das jetzt erstmal läuft, bin ich zu frieden.
    Dann kann ich ja bald mein nächstes Problem zur Lösung freigeben!

    ciao
    Geändert von juan_ (18-03-2008 um 11:47 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    02.11.2005
    Beiträge
    16
    Es fehlt ein Komma nach Tabelle1.op_art. Wenn das nur ein Fehler beim Abschreiben war, schreib noch mal.

    edit: Hat er wohl selbst bemerkt und sein edit wieder gelöscht.

    Grüße,
    Paul
    Geändert von paule (18-03-2008 um 12:05 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    26
    Hallo Paule,
    danke für deine Hilfe.

    Das Problem lag nicht am Komma, sondern daran, dass ich nicht wusste, dass man das t.op_art noch mal neu ausgeben musste: (AS Rang, op_art)

    So sieht nun meine Lösung aus:

    ->
    Code:
    SELECT gruppen.gruppen_id, gruppen.startdatum, gruppen.op_art (SELECT count(*) FROM gruppen as t WHERE t.gruppen_id<=gruppen.gruppen_id AND t.startdatum=gruppen.startdatum AND t.op_art=gruppen.op_art) AS Rang, op_art
    FROM gruppen;
    ciao

  8. #8
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    26
    moin,

    ich pushe noch mal kurz:
    und zwar habe ich jetzt noch eine weitere Abfrage, in welcher auch der Rang aufgeführt werden soll:

    Code:
    SELECT suchform_abfrage.name, suchform_abfrage.vorname, suchform_abfrage.startdatum, suchform_abfrage.Rang, suchform_abfrage.op_art FROM suchform_abfrage WHERE (((suchform_abfrage.name) Like "*" & Formulare!GUI!suche_ & "*") OR ((suchform_abfrage.vorname) Like "*" & Formulare!GUI!suche_ & "*") OR ((suchform_abfrage.startdatum) Like "*" & Formulare!GUI!suche_ & "*") OR ((suchform_abfrage.op_art) Like "*" & Formulare!GUI!suche_ & "*")) ORDER BY suchform_abfrage.name, suchform_abfrage.vorname, suchform_abfrage.startdatum, suchform_abfrage.Rang;
    leider zählt die Schleife nicht mehr richtig, aber ich bekomms irgenwie nicht vernünftig eingebaut

    könnte mir jmd helfen?

    vielen dank!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •