Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Gruppenwechsel in Abfragen mit separater Spalte 'markieren'

Begonnen von Merbecks, November 19, 2014, 10:06:31

⏪ vorheriges - nächstes ⏩

Merbecks

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

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

Merbecks

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

ebs17

Eine laufende Nummer ist in Jet so erstellbar: Laufende Nummer/Summe in Abfragen
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.
Mit freundlichem Glück Auf!

Eberhard

Merbecks

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