Hallo zusammen,
ich finde hier keine Lösung zu meinem Problem - sehr wahrscheinlich weil ich 'falsch' suche, aber ich kann mich gerade nicht anders ausdrücken...
Meine Daten sind eine Abfrage, die schon div. Tabellen kombiniert hat:
SpalteA SpalteB SpalteC SpalteD (gewünscht)
Gebiet1 Kurs1 ... 1
Gebiet1 Kurs2 ... 0
Gebiet1 Kurs3 ... 0
Gebiet2 Kurs4 ... 1
Gebiet2 Kurs5 ... 0
Ich suche eine Möglichkeit in einer zusätzlichen Spalte eine Markierung zu setzen, wenn sich in SpalteA der Wert zur vorherigen Zeile ändert - Also eine Art Gruppenwechsel-Markierer.
Habt Ihr da evtl. eine Idee für mich?
(Hintergrund zu dieser Anfrage: Ich kann hier keinen Bericht nutzen. Die Daten werden als CSV exportiert und dann in einem Word-Serienbrief umgesetzt... Mit dem Gruppenwechsel-Markierer kann dann ein passender Umbruch generiert werden...)
Grüße,
Daniel Merbecks
In einer Abfrage müsstest Du definieren, was die "vorherige Zeile" ist (aktuelle ID - 1 ??), weil es im Unterschied zu einer Exceltabelle oder einem Recordset keine Reihenfolgen gibt.
Mit der angesprochenen Definition wäre dann Dein Anliegen kein Problem.
Hallo ebs17,
danke für die Antwort.
Die von mir erstellte Abfrage ist sortiert nach SpalteA, SpalteB (das habe ich vergessen zu erwähnen, sorry). Dementsprechend muss ich noch eine Spalte einfügen, die praktisch von 1-n jede Ergebniszeile 'durchnummeriert'?
Tatsächlich kann es sein, dass die Kurse nicht durchnummeriert sind, ein Kurs mit niedrigerere Nummer in einem anderen Gebiet stattfinden kann etc. Daher muss ich dann die dumme Frage stellen: Wie kann ich die Access-Abfrage mit einer Nummerierung versehen wenn ich keine eindeutige ID habe? Gibt es so etwas wie mssql_rownum? Die Sortierung ist eindeutig da die Kursnummern nicht mehrfach vorkommen können und ein Kurs immer nur einem Gebiet zugeordnet werden kann.
Grüße,
Daniel Merbecks
Eine laufende Nummer ist in Jet so erstellbar: Laufende Nummer/Summe in Abfragen (http://www.donkarl.com?FAQ3.11)
Das ist aber intern aufwändig und damit ab gewissen Datenmengen dann recht langsam.
Nebenfrage: Welcher Art sind sind die Inhalte von Gebiet und Kurs?
Man könnte aus beiden Teilen einen eindeutigen Ausdruck zusammensetzen und diesen dann nachfolgend verwenden.
Hallo Eberhard,
danke für deine Infos. Mit der Nebenfrage hast Du mir geholfen, ich habe jetzt im Abfrageergebnis eine ID-Spalte mit einer laufenden Nummer bauen können.
SELECT ...,
--Laufnummer als separate Spalte, wenn Index über 2 Spalten gebildet werden kann
(SELECT count(t1.ID)
from
tabKurse As t1, tabGebiet as t2
Where
t1.GebietID=t2.ID and
((t2.Reihenfolge < tabGebiet.Reihenfolge)
or (t2.Reihenfolge = tabGebiet.Reihenfolge and t1.Nummer <= tabKurse.Nummer)))
AS LaufNummer,...
Jetzt kann ich prüfen, ob die 'vorherige Zeile' (Sprich LaufNummer-1 dieselbe GebietsID hat. Ist die ID dieselbe, bringt mir die Subtraktion eine 0, ansonsten eine Zahl <>0.
Perfekt und Danke schön!
Daniel Merbecks