#Fehler
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
Antwort schreiben
Antwort 1 von Marie vom 01.03.2021, 11:54 Options
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
Antwort 2 von Marie vom 01.03.2021, 11:55 Options
Sorry für die Rechtschreibfehler, meine Tastatur klemmt mal wieder
Antwort 3 von Marie vom 01.03.2021, 12:03 Options
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)
Antwort 4 von JanSchmitte vom 01.03.2021, 12:26 Options
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
Antwort 5 von Marie vom 01.03.2021, 12:55 Options
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
Antwort 6 von Big-Robby vom 01.03.2021, 13:53 Options
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?
Antwort 7 von RaHi vom 01.03.2021, 14:19 Options
probiere es mal mit
Wenn([teilnahmen]>0;[quersumme]/[teilnahmen];0)
Gruß
Ralf
Antwort 8 von Marie vom 01.03.2021, 14:27 Options
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
Antwort 9 von Big-Robby vom 01.03.2021, 18:23 Options
Nach Eingabe lt. Rolf, Fehlermeldung: Überlauf
Nur Quersumme kann negative Werte enthalten,
Gruss Robby
Antwort 10 von Marie vom 01.03.2021, 18:32 Options
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
Antwort 11 von Big-Robby vom 02.03.2021, 22:33 Options
Vielen Dank, es hat geklappt !
Wusste nicht, dass man bei der Definition eines Ausdrucks eine Wenn-Abfrage stellen kann und meinte, ich müsste diese unter Kriterien aufführen.
Tut mir leid, Marie, wenn ich Dir so viel Mühe gemacht habe.
Gruß Robby
Antwort 12 von Marie vom 02.03.2021, 23:51 Options
macht nix, schon okay
gruß marie