Hallo,
ich muss mich derzeit in Access einarbeiten und habe noch nicht allzu viel Erfahrung, daher hoffe ich, ihr erfahrenen Hasen könnt mir weiter helfen ;-)
Ich habe in einer Abfrage eine Spalte mit eindeutiger ID und einer Menge. Dabei kommen Mengen mehrfach vor. Nun möchte ich eine neue fortlaufende Nummer erstellen, nachdem die Daten nach der größe der Menge sortiert wurden. Bei Gleichheit der Menge soll die eindeutige ID die Reihenfolge bestimmen. Die fortlaufende Nummer soll ohne Doppelte vergabe und Lücke entstehen.
Mein Ansatz:
LaufNummer: DomAnzahl("Id";"Abfrage";"Menge<" & [Menge])+1
Dabei entstehen aber doppelte und Lücken.
Kann mir jmd weiterhelfen?
Liebe Grüße
Lisa
Hallo,
erkläre bitte zunächst den Sinn des Unterfangens...
Hallo Lisa,
Standardantwort auf deine Frage:
Schau hier: http://www.donkarl.com?FAQ3.11 (http://www.donkarl.com?FAQ3.11)
Wobei Franz' Frage vielleicht auch nicht unbeantwortet bleiben sollte.
gruss ekkehard
@Beaker: Danke, aber da habe ich ja meinen Lösungsansatz her. Aber ich komme damit eben nicht weiter.
@DF6GL: Ich möchte danach die Mengenanteile an der Gesamtmenge Kumulieren. Dabei müssen die Mengen aber der Größe nach Sortiert sein.
Liebe Grüße
Lisa
Für eine Sortierung benötigt man keine laufende Nummer:
ORDER BY Menge DESC, ID
Für eine laufende Summe in einer Abfrage benötigt man keine eingestellte Sortierung, weil in Abfragen Reihenfolgen allermeist nicht verwendet werden und daher überflüssig sind.
Wenn es gleiche Mengen gibt, brauchst Du mindestens ein zweites Kriterium zur Unterscheidung, die ID wäre da geeignet, ist aber auch etwas willkürlich.
Zum Vergleich müsste dann aus Menge und ID ein Kunstwert erzeugt werden, dessen Berechnung man aus den vorhandenen Werten von Menge und ID ableiten müsste.
Beispiel:
LaufSumme: DomSumme("Menge";"Abfrage";"Menge + ID / 10000 <" & [Menge] * [ID] / 10000)
Hallo,
Zitat
Ich möchte danach die Mengenanteile an der Gesamtmenge Kumulieren. Dabei müssen die Mengen aber der Größe nach Sortiert sein.
Das musst Du näher erklären. Bei einer Summierung ist es völlig egal, wie die Reihenfolge der Summanden ist.
Selbst wenn die Mengen nach Größe sortiert werden müssen (??) , dann könnte gleich der Mengenwert sortiert werden. Dafür ist kein zusätzliches Kennzeichen erforderlich.
Zitat von: DF6GL am Mai 12, 2016, 08:53:44
Das musst Du näher erklären. Bei einer Summierung ist es völlig egal, wie die Reihenfolge der Summanden ist.
Selbst wenn die Mengen nach Größe sortiert werden müssen (??) , dann könnte gleich der Mengenwert sortiert werden. Dafür ist kein zusätzliches Kennzeichen erforderlich.
Beim Summieren ist die Reihenfolge egal, aber nicht beim Kumulieren.
Wenn ich dann die Prozentualen Mengenanteile der Größe nach habe, kann ich dann sagen:
Alle bis 80% sind A Teile, alle bis 95% B Teile und so weiter.
Ohne zusätzliche Kennzeichen ist doch aber die Reihenfolge über die Menge nicht eindeutig gegeben oder?
Zitat von: ebs17 am Mai 12, 2016, 08:51:33
LaufSumme: DomSumme("Menge";"Abfrage";"Menge + ID / 10000 <" & [Menge] * [ID] / 10000)
Mit diesem Code komm ich der Sache glaube ich schon recht Nahe. Allerdings kommt beim Ausführen folgender Fehler: syntaxfehler (komma) in abfrageausdruck ";"Menge + ID / 10000 <" & [Menge] * [ID] / 10000)
Was bedeudet dies? Habe Versucht mit dieser Str-Funktion das Problem zu beheben: Ergebnis: Fehlermeldung weg, aber im Ausgabefeld steht einfach nur noch Fehler :-(
Korrekt, durch die Berechnung entsteht eine Dezimalzahl, und die muss im Kriterium mit Str behandelt werden:
... & Str([Menge] * [ID] / 10000))
Danke Eberhard! Habe es nun hinbekommen. :D
Allerdings braucht der Rechner seine Zeit, dabei sind es gerade mal 800 Datensätze. :-\
Liebe Grüße
Lisa
Hallo,
versuche es mal mit dieser Variante:
LaufSumme: DomSumme("Menge";"Abfrage";"Menge < " & [Menge] & " OR Menge = " & [Menge] & " AND ID < " & [ID])