Access: Leere Zellen als 0 berechnen

Hallo Wissende,
ich habe ein Problem mit unserer Mitgliederdatei. Die wurde irgendwann mal angelegt, und der Standardwert für die Beiträge (zu zahlende und gezahlte) steht auch auf 0 - möglicherweise wurde das aber erst später, als schon einige Daten drin waren, eingestellt.
Nun möchte ich in einer Abfrage die offenen Beiträge zusammenzählen - bis hierhin kein Problem.
Nur will ich alles ab 2003 rechnen lassen, und einige sind erst später eingetreten, so dass die entsprechenden Felder leer sind. Das Feld „offen gesamt“ ist dort leider auch leer.
Ich habe in der Access-Hilfe nachgesehen und entdeckt, dass man leere Zellen in 0 konviertieren kann; hierzu habe ich die Beispielsformel
Nz([Zwischensumme],0)+Nz([Frachtkosten],0) gefunden,
die mir aber leider nicht weiterhilft, da ich nicht weiß, wo ich sie eintragen soll.
Kann mir jemand eine Möglichkeit aufzeigen, die ich verwenden kann, ohne eine Ahnung von VBA zu haben?? Das wäre einfach super!
Gruß Verena

Hallo.

Das Feld „offen gesamt“ ist dort leider auch leer.

Öffne eine neue Abfrage. Geh in die SQL-Ansicht. Dort trägst Du ein

UPDATE _DeineTabelle_ SET [offen gesamt] = 0 WHERE [offen gesamt] Is Null;

"DeineTabelle musst Du natürlich mit dem Tabellennamen ersetzen. Dann haust Du auf das Ausrufezeichen und bestätigst die Änderung. Fertsch.

Gruß Eillicht zu Vensre

Vielen :heart::heart::heart::heart:lichen Dank!

Habe folgende Schritte unternommen:

UPDATE Zahlungen SET [Soll 2003] = 0 WHERE [Soll 2003] Is Null;
und in einer zweiten Abfrage
UPDATE Zahlungen SET [Soll 2004] = 0 WHERE [Soll 2004] Is Null;

… und wurde dann gefragt, ob ich die Tabelle aktualisieren will.
Nach dem Kopieren :wink: - vorsichtshalber - habe ich ja gesagt, aber so richtig rechnen will da anscheinend noch nichts … muss wohl die bezahlten Beträge auch noch aktualisieren.

Geht das irgendwie in einem Schritt? (Ich probier das schon mal über eine auf der Tabelle Zahlung basierende Aktualisierungsabfrage.)

Nochmals D A N K E ! Das gibt ein Sternchen!

Verena

Öffne eine neue Abfrage. Geh in die SQL-Ansicht. Dort trägst
Du ein

UPDATE DeineTabelle SET [offen gesamt] = 0
WHERE [offen gesamt] Is Null;

"DeineTabelle musst
Du natürlich mit dem Tabellennamen ersetzen. Dann haust Du auf
das Ausrufezeichen und bestätigst die Änderung. Fertsch.

Gruß Eillicht zu Vensre

(Ich probier das schon mal über eine auf der Tabelle Zahlung
basierende Aktualisierungsabfrage.)

Genau so ist es richtig. Du kannst natürlich mit einer Aktualisierungsabfrage mehrere Felder füllen. Nur daran denken: In der Entwurfsansicht sind zwei Kriterien, die in der gleichen Zeile stehen, mit AND verknüpft; OR braucht eine neue Zeile …

VBA ist aber einfacher zu handhaben, indem Du einfach eine Funktion schreibst, die welches Feld auch immer auf Null prüft

Public Function NullWech(ByVal var\_EingFeld As Variant) As Variant
If IsNull(var\_EingFeld) Then
 NullWech=0
Else
 NullWech=var\_EingFeld
End If
End Function

und das als Modul abspeicherst. Dann kannst Du einfach jedes numerische Feld mit einem Schlag ändern, indem Du in die Zeile „Aktualisieren“ im Abfrageentwurf schreibst

NullWech(_feldname_)

Je nach Anzahl der betroffenen Felder spart das viel Gefummele mit AND und OR …

Gruß Eillicht zu Vensre

1 Like

*knuddel Eillicht zu Vensre*

Ich hab doch noch nie mit VBA gearbeitet, aber das mit dem Modul probier ich gleich nachher mal aus.

Gruß Verena

P. S.: Den Ausdruck „NullWech“ find ich ja zum Kringeln … :slight_smile:

VBA ist aber einfacher zu handhaben, indem Du einfach eine
Funktion schreibst, die welches Feld auch immer auf Null
prüft

Public Function NullWech(ByVal var_EingFeld As
Variant) As Variant
If IsNull(var_EingFeld) Then
NullWech=0
Else
NullWech=var_EingFeld
End If
End Function

und das als Modul abspeicherst. Dann kannst
Du einfach jedes numerische Feld mit einem Schlag
ändern, indem Du in die Zeile „Aktualisieren“ im
Abfrageentwurf schreibst

NullWech(feldname)

Je
nach Anzahl der betroffenen Felder spart das viel Gefummele
mit AND und OR …

Gruß Eillicht zu Vensre

Liebe/r Eillicht zu Vensre,

also 1. - versteh ich das richtig, dass ich das dann trotzdem mehrfach schreiben muss? Also NullWech(Soll 2003) - übrigens, nicht mit eckigen Klammern? - und NullWech(Soll 2004) etc. in die entsprechenden Felder?
und 2. wurden bei mir „wegen Typumwandlungsfehlern (alle) Datensätze nicht aktualisiert“ …
Ich bin wohl doch zu blöd dazu.

Gruß Verena

VBA ist aber einfacher zu handhaben, indem Du einfach eine
Funktion schreibst, die welches Feld auch immer auf Null
prüft

Public Function NullWech(ByVal var_EingFeld As
Variant) As Variant
If IsNull(var_EingFeld) Then
NullWech=0
Else
NullWech=var_EingFeld
End If
End Function

und das als Modul abspeicherst. Dann kannst
Du einfach jedes numerische Feld mit einem Schlag
ändern, indem Du in die Zeile „Aktualisieren“ im
Abfrageentwurf schreibst

NullWech(feldname)

Je
nach Anzahl der betroffenen Felder spart das viel Gefummele
mit AND und OR …

Gruß Eillicht zu Vensre

Hallo Verena,

also 1. - versteh ich das richtig, dass ich das dann trotzdem
mehrfach schreiben muss? Also NullWech(Soll 2003) - übrigens,
nicht mit eckigen Klammern?

nur so funktiniert es: NullWech([Soll 2003])

  • und NullWech(Soll 2004)

nur so funktiniert es auch hier: NullWech([Soll 2004])

etc. in die entsprechenden Felder?
und 2. wurden bei mir „wegen Typumwandlungsfehlern (alle)
Datensätze nicht aktualisiert“ …
Ich bin wohl doch zu blöd dazu.

nö bist du nicht, das ist doch klar: „Soll 2003“ in ein Zahlenfeld speichern geht doch nicht :smile:

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

… Aber ausprobieren kann ich das erst am Wochenende, weil ich meine Kopie jetzt erst mal weggeschmissen habe … da waren nämlich alle Soll- und Ist-Beträge auf Null gesetzt *grins*

Außerdem raucht mir der Kopf.

Schönes Wochenende Euch beiden!

:heart:lichst, Verena

Hallo Verena,

nur so funktiniert es: NullWech([Soll 2003])

Ich bin wohl doch zu blöd dazu.

nö bist du nicht, das ist doch klar: „Soll 2003“ in ein
Zahlenfeld speichern geht doch nicht :smile:

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Nur als Anmerkung: Für so etwas gibt es die eingebaute Funktion „NZ“.

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

Ich hab das jetzt so gelöst, dass ich die paar Nullen, die fehlten (es waren wirklich nur wenige), manuell nachgetragen habe.
Da aber für nachträglich hinzugefügte Datensätze (= neue Mitglieder) die Nullen evtl. auch nicht eingetragen werden - und vor allem nicht die Nullen für nächstes Jahr -, werde ich Eure Tipps dazu verwenden, für 2008 dann die Daten aus 2007 zu übernehmen. :slight_smile:

Gruß Verena

Na, am besten setzt du den Standardwert für das Feld auf „0“ - und verbietest für das Feld NULL-Werte („Eingabe erforderlich: ja“)

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)