online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Big-Robby vom 01.03.2021, 09:27 Options

Lösung

#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

Ähnliche Themen

Access 2003 Datanbank Bestellabwicklung Fehler 3201
Pommes69  13.10.2007 - 69 Hits - 1 Antwort

festplatten fehler
quadau  26.10.2007 - 67 Hits - 7 Antworten

autowert -5213664899 Fehler
wasa  19.11.2007 - 76 Hits - 5 Antworten

Excel Datei in CSV konvertieren und Ä Ü Ö Fehler vermeiden
Terraboy  18.11.2008 - 17 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026