Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Dom-Abfrage mit negativen Werten

Begonnen von Jochen1, Dezember 09, 2012, 12:21:44

⏪ vorheriges - nächstes ⏩

Jochen1

Hallo,

in Ergänzung zu meinen gestrigen Abfrageüberlegungen habe ich eine weitere Abfrage erstellt:

Ausdruck1= DomSumme("[Wert1]";"[Abfragename]";"[Wert2]>Zahl")

Die Abfrage soll alle Datensätze aufsummieren, bei denen der Wert2 einen bestimmten Wert übersteigt. Das funktionert.

Das Problem liegt aber in den Fällen, in denen die Abfrage in weiteren Spalten die Datensätze aufsummieren soll, bei denen der Wert2 negativ ist:

Ausdruck2: DomSumme("[Wert1]";"[Abfragename]";"[Wert2]<Zahl")

Ergebnis ist, dass nun alle Werte1 addiert werden mit positivem Kriterium "Wert2", nicht aber die mit negativem Kriterium. In meinem gestrigem Posting funktioniert die Abfrage

DomSumme("[Wert1]";"[Abfragename]";"[Wert2]<Zahl") auch bei negativen "Wert2".

Es ist mir rätselhaft.

Hat jemand eine Idee ?
Vielen Dank im Voraus !

Jochen

_______________
Access 2010

MzKlMu

Hallo,
mit anderen Worten, das Vorzeichen spielt keine Rolle?
[Wert2]<Zahl
Dieses Kriterium heist aber, es wird alles summiert dessen Wert2 kleiner ist als die Zahl. Du verwendest ja das < (kleiner) Zeichen.
Gruß Klaus

Jochen1

#2
Hallo,

ja, das müsste m.E. so stimmen. Hintergrund: Die Abfrage erstellt in verschiedenen Spalten Werte nach Kriterien, dabei gibt es Kriterien (Wert2), die oberhalb oder unterhalb 0 liegen. Der Wert1 ist dann ebenfalls positiv oder negativ.

Beispiel: Wert2 = -5; Zahl = -3; dann müsste der Ausdruck2 sein:

Ausdruck2: DomSumme("[Wert1]";"[Abfragename]";"-5<-3"), und der Wert1 müsste addiert werden.

Im positiven Fall

Ausdruck2: DomSumme("[Wert1]";"[Abfragename]";"5>3") funktioniert es.

Grüße,
Jochen
_______________
Access 2010

MzKlMu

Hallo,
Zitatund der Wert1 müsste addiert werden.
und wird er nicht?

Füge mal zur Prüfung als berechnetes Feld ein:
X: [Wert2]>Zahl
Die Werte mit Wahr in der Spalte "X" werden addiert.
Gruß Klaus

DF6GL

Hallo,

beschreib nochmal die Bedingungsvorgabe.. Ich werde da nicht schlau draus...

Ich könnte allenfalls herauslesen , dass etwa sowas gemeint ist:

DomSumme("[Wert1]";"[Abfragename]";"IIF( [Zahl >0 ,[Wert2]> [Zahl] , [Wert2] < [Zahl] )")

Jochen1

Hallo Franz,

also, ich möchte Folgendes tun:

Wenn Feld [Wert2] > eine bestimmte Zahl ist (z.B. 3), summiere alle Felder [Wert1] der Datensätze, für die diese Bedingung erfüllt ist.

Wenn Feld [Wert2] < eine bestimmte Zahl ist (z.B. -2), summiere alle Felder [Wert1] der Datensätze, für die diese Bedingung erfüllt ist. In der Regel sind die Felder [Wert1] ebenfalls positiv oder negativ wie Feld [Wert2].

Jedes Kriterium hat eine eigene Spalte in der Abfrage; Für die positiven Werte erfolgt die Addition.

Eigentlich möchte ich die Werte nach Intervallen berechnen, z.B. wenn [Wert2] zwischen 1 und 2, dann addiere das Feld [Wert1] für die Datensätze, für die das Intervall zutrifft. Bei den Dom-Abfragen bekomme ich aber regelmässig Fehlermeldungen wenn ich das mit "Zwischen X und Y" probiere. daher muss ich in der Abfrage bei den Ausdrücken die jeweils anderen ermittelten Werte der höheren (niedrigeren) Intervalle addieren/abziehen. Das ist aber nicht so ein Problem, auch wenn es umständlich ist.

@MzKlMu: Das habe ich mit X: [Wert2]<1 gemacht, hier werden zutreffend die Datensätze angezeigt.   

Grüße,
Jochen
_______________
Access 2010

DF6GL

Hallo,

muss irgendwie heute am Schneetreiben liegen...  ;)






Woher kommt denn diese "bestimmte Zahl" ?




"Jedes Kriterium hat eine eigene Spalte in der Abfrage"

Du meinst statt "Kriterium"   eine Berechnung (die DomSumme-Funktion)   ?   


" Für die positiven Werte erfolgt die Addition. "

Die Domsumme SUMMIERT nach mathematischen Regeln die Werte in der angebenen Spalte und aus den Datensätzen , die durch das Kriterium in der Funktion bestimmt werden.

Ob nun positiv oder negativ....




"Bei den Dom-Abfragen bekomme ich aber regelmässig Fehlermeldungen wenn ich das mit "Zwischen X und Y" probiere."


Naja, WIE hißen denn die Fehlermelddungen?

Ich schlage vor, diesen Fehler zu eliminierte, bevor er fragwürdig durch

"in der Abfrage bei den Ausdrücken die jeweils anderen ermittelten Werte der höheren (niedrigeren) Intervalle addieren/abziehen. "   

umschifft werden soll.

Ausdruck2: DomSumme("[Wert1]";"[Abfragename]";"[Wert2] between 3 and -3") funktioniert ...  wobei, wie oben gesagt, es unklar ist , woher die "Zahl" nun stammt.



Vielleicht wäre es auch sinnvoll, anhand eines konkreten und vollständigen Tabellen-Beispiels die Sachlage zu verdeutlichen und das erwartete Ergebnis aufzuzeigen...

Jochen1

Hallo Franz,

die "Zahl" ist keine Berechnung, sondern die Zahl, welche den Anfang oder das Ende des Intervalles definiert. Ich werde den Ausdruck mit "Between"

ZitatAusdruck2: DomSumme("[Wert1]";"[Abfragename]";"[Wert2] between 3 and -3")

eingeben/ausprobieren. Kann ich leider erst morgen Abend machen.

Bis dahin schon mal vielen Dank und Grüße aus dem Schneetreiben in München.

Jochen
_______________
Access 2010

Jochen1

Hallo Franz,

ich habe es eingegeben, z.B.

RM8: Wert(DomSumme("[Wert1]";"[Abfragename]";"[Wert2] Between -1 and -1.5")), es funktioniert mit den Intervallen. Die Grafik wird auch gut.

Wenn ich nun eine weitere Reihe RM9 erstellen möchte, dafür die Spalte RM8 kopiere, und als neue Spalte RM9 unverändert einfüge, taucht in der Datenblattansicht auch die Reihe RM9 auf, mit dem gleichen Ergebnis für [Wert1] wie in RM8, also soweit alles o.k..

Aber nun
: Ich ändere in RM9 das Kriteriums-Intervall auf "[Wert2] Between -1.5 and -2", dann kommt die Fehlermeldung: "Datentypenkofikt in Kriterienausdruck"   ???. Sonst habe ich nichts verändert. Kann es sein, dass Access 2010 nur 9 Reihen (RM0-RM8) akzeptiert ? Kann ich mir nicht vorstellen. Mit der Hilfe komme ich auch nicht weiter.

Was mache ich falsch ?

Danke und Grüße,
Jochen
_______________
Access 2010

DF6GL

#9
Hallo,

nein, glaube nicht, dass das etwas mit einer Spaltenbegrenzung zu tun hat...
Gibt es denn überhaupt einen Wert für dieses Kriterium ?

Vielleicht ist sowas nötig:

Wert(Nz ( DomSumme("[Wert1]";"[Abfragename]";"[Wert2] Between -1.5 and -2");0))

oder evtl:

Wert(DomSumme("nz([Wert1],0)";"[Abfragename]";"[Wert2] Between -1.5 and -2")),



Mit "woher kommt die Zahl" meinte ich , dass es nicht empfehlenswert ist, "magic numbers"  (also feste Größen (Zahlen) ,deren Bedeutung nicht ohne Weiteres erkennbar ist, in Code jeglicher Art (hier in der Where-Klausel)  zu verwenden...

Jochen1

Hallo Franz,

Volltreffer  :). Es lag tatsächlich daran, wobei ich meine, dass sich von der Fehlermeldung "Datenkonflikt" für einen Laien nicht sofort ein Lösungsweg anbietet. Toll, wieder etwas gelernt.

Zitat"magic numbers"  (also feste Größen (Zahlen) ,deren Bedeutung nicht ohne Weiteres erkennbar ist,

Die Bedeutung meiner Kriterien ist schon real, auch wenn ich die Bandbreiten noch -nicht statistisch- verfeinern muss. Es handelt sich darum, wieviele Werte (und mit welcher Geldeinheit) in bestimmte Risikokategorien fallen, wenn ein vorher definiertes Risiko den Wert von -1 hat.

ZitatGibt es denn überhaupt einen Wert für dieses Kriterium ?
Ja, das ist genau der Grund, warum ich diese Abfrage bzw. Graphik generieren möchte, um es herauszufinden, ohne alle Datensätze durchsuchen zu müssen ;D. Und das klappt jetzt wunderbar.

Ich muss noch etwas meine Hausafgaben machen, testen und Graphik basteln, aber die Unterstützung von Dir/diesem Forum ist wirklich klasse, insbesondere die Schnelligkeit und die Ideen,  ich möchte mich an dieser Stelle nochmal für die Unterstützung bedanken, es hat mir als Access-Laien echt weitergeholfen. :)

Grüße,
Jochen
_______________
Access 2010