4.8k Aufrufe
Gefragt in Datenbanken von
Hi,
ich berechne in einer Access Abfrage einen Ausdruck. Inhalt Feld x geteilt durch Feld y. Funktioniert ohne Problems.
Es kann vorkommen, dass y = 0 ist und dann gibts (math. korrekt) einen Error in der Anzeige "'#Fehler". Ich möchte nun statt #Fehler dann eine "0" dort stehen haben. Habs mit dem Kriterium "Feld y ist nicht null" versucht, haut aber nicht hin.
Was läuft da schief ?

Danke

12 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
SELECT DeineTabelle.zahlx, DeineTabelle.zahly, IIf([zahly]>0,[zahlx]/[zahly],0) AS Quotient
FROM DeineTabelle;


Durcch 0 kann man nicht dividieren, also darfste die Division nur aufhren, wenn y nicht 0 ist.

Gruß Marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Sorry für die Rechtschreibfehler, meine Tastatur klemmt mal wieder
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Alsonochmal, falls Du neuling bist:

den obigen Code in die SQL-Ansicht der Abfrage, oder in der Entwurfsansicht der Abfrage:
Wenn (y > 0; x / y; 0)
0 Punkte
Beantwortet von janschmitte Mitglied (145 Punkte)
Zur Erklärung vllt noch einmal:

Der Haken "Feld y ist nicht NULL" bedeutet nicht, dass dort nicht die Zahl Null drin ist, sondern dass das Feld überhaupt gefüllt sein muss!

Das Datenbank-Null beschreibt, dass in dem Feld GAR NICHTS drin ist.

Der Haken bedeutet also nur, dass irgend etwas in diesem Feld gespeichert werden muss, es darf nicht leer sein. Auch die Zahl 0 ist ein Inhalt, deswegen hat Dir dieser Haken auch praktisch nichts gebracht...

Ich weiss allerdings momentan nicht, womit Access versucht zu rechnen, wenn das Feld y tatsächlich NULL (also leer) wäre, würde vermutlich auch einen Fehler geben.


MfG, Jan
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Nein, mit
Wenn (y > 0; x / y; 0)
ist die Bedingung ja gegeben, dass nur dann gerechnet wird, wenn y > 0 ist. Allerdings bringt das nichts, wenn auch negative Zahlen möglich sind, dann würde auch 0 erscheinen, also müsste man in diesem Fall konkret n ur die Nullwerte ausschließen. Warten wir mal die Antwort ab, ob es nötig ist.

Gruß marie
0 Punkte
Beantwortet von
Danke für die Antworten.
ja, ich bin Neuling und ins "kalte Wasser geworfen" worden.

Jetzt etwas ausführlicher:

es handelt sich um Inhalte einer verknüpftenTabelle von Feldern (zahlen), die mittels eines Ausdrucks in einer Auswahlabfrage berechnet werden.
Von mir genanntes Feld y heisst "teilnahmen" , x heisst "quersumme".
Quersumme kann auch negative Zahl enthalten.

Bei einem Fall ist "teilnahmen" in der Tabelle =0.
Logo: Divident darf nicht 0 sein, daher #Fehler !
Mit der SQL-Ansicht kann ich noch nichts anfangen, habe also in der Entwurfsabsicht der Abfrage unter Kriterien folgendes eingegeben:

Wenn("teilnahmen">0;"quersumme/teilnahmen";0)
(Hochkomma wurde vom System gesetzt)

Fehlermeldung: Datentypen in Kriterienausdruck unverträglich.
Was tun?
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
probiere es mal mit
Wenn([teilnahmen]>0;[quersumme]/[teilnahmen];0)

Gruß
Ralf
0 Punkte
Beantwortet von marie Experte (2k Punkte)
na wenn Quersumme negative zahlen enthält ist das nicht schlimm, nur wenn teilnahmen negative zahlen enthalten kann, dann geht es so nicht.

gruß Marie
0 Punkte
Beantwortet von
Nach Eingabe lt. Rolf, Fehlermeldung: Überlauf

Nur Quersumme kann negative Werte enthalten,

Gruss Robby
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Ja ich versteh auch nicht wo Du das hinschreibst?? Wieso in kriterien, und bei was in kriterien?? Ich dachte Du brauchst ein berechnetes feld, Wenn Du das zum Beispieil Quotient nennst, dann schreibst Du in der Entwurfsansicht der Abfrage in die oberste zeile:
Quotient: Wenn([teilnahmen]>0;[quersumme]/[teilnahmen];0)

Und wenn Du das jetzt nicht kapierst, dann machste mal eine neue Abfrage, gehst in Ansicht SQL und schreibst das mal rein wie ich schon in Antwort 1 geschrieben habe:

SELECT DeineTabelle.quersumme, DeineTabelle.teilnahmen, IIf([teilnahmen]>0,[quersumme]/[teilnahmen],0) AS Quotient
FROM DeineTabelle;


Das Wort "Deine Tabelle" musste nur noch mit dem Namen deiner Herkunftstabelle ersetzen, zahlx und zahly hab ich schon ersetzt mit deinen Ausdrücken. Wenn Du dann die Entwurfsansicht aufmachst siehst Du was Du hättest schreiben müssen.

Gruß marie
...