Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: K a t j a am Juli 26, 2024, 10:44:28

Titel: Leere Felder mit Formel füllen
Beitrag von: K a t j a am Juli 26, 2024, 10:44:28
Hallo Zusammen,
ich bin ganz neu hier und arbeite erst seit kurzem mit Access, bitte habt Mitleid. ;)

Ich habe ein vermutlich simples Problem, bei dem ich nicht weiter komme. Ich habe 2 Tabellen gematched. Dabei werden alle Werte aus Tabelle 1 übernommen und nur die passenden Werte aus der 2. Tabelle übernommen. Ergo entstehen zwangsläufig leere Felder bei den Werten aus T1, wo keine Daten da sind.


In der Ergebnistabelle möchte ich nun in einer Spalte die leeren Felder durch einen berechneten Wert ersetzen. Problem: Ich bekomme die leeren Felder nicht angesprochen. Egal, ob ich eine Spalte mit Zahlen oder Texten wähle, er ignoriert mich. Hier hab ich mal ein Beispiel mit IIf([Land]="" unten rein gestellt. Ich habe auch schon Istleer, IstNull, 0 und ähnliches erfolglos probiert. Entweder, er findet gar keine Zeilen oder die Felder bleiben weiterhin leer. Auch als Kriterium habe ich es schon versucht - nix. Was mach ich falsch?

Ausgangstabelle:
Ausgangstabelle.png
Wennabfrage:
ergebnis wennabfrage1.png
Ergebnis Wennabfrage
ergebnis wennabfrage1.png 
Ergebnis Kriterium:
ergebnis Kriterium.png

Hier mein Code:
SELECT
tbl2c_Nichtamaz_AnzArt_D.Re_Nr,
tbl2c_Nichtamaz_AnzArt_D.Artikelanzahl_Paket,
tbl2c_Nichtamaz_AnzArt_D.[Anteil VK in %],
tbl2c_Nichtamaz_AnzArt_D.ArtNr,
tbl2c_Nichtamaz_AnzArt_D.Bez,
tbl2c_Nichtamaz_AnzArt_D.Menge,
tbl2c_Nichtamaz_AnzArt_D.Einzel_EK,
tbl2c_Nichtamaz_AnzArt_D.Netto_VK,
tbl2c_Nichtamaz_AnzArt_D.Land,
tbl2c_Nichtamaz_AnzArt_D.Max2,
tbl2c_Nichtamaz_AnzArt_D.DB,
tbl2c_Nichtamaz_AnzArt_D.[DB Stück],
tbl2c_Nichtamaz_AnzArt_D.WE,
IIf([Land]="",[Max2]*3.94,[WE]) AS Paketkosten
INTO [tbl24_VK & VE_Nichtamazon_D]

FROM tbl2c_Nichtamaz_AnzArt_D

GROUP BY
tbl2c_Nichtamaz_AnzArt_D.Re_Nr,
tbl2c_Nichtamaz_AnzArt_D.Artikelanzahl_Paket,
tbl2c_Nichtamaz_AnzArt_D.[Anteil VK in %],
tbl2c_Nichtamaz_AnzArt_D.ArtNr,
tbl2c_Nichtamaz_AnzArt_D.Bez,
tbl2c_Nichtamaz_AnzArt_D.Menge,
tbl2c_Nichtamaz_AnzArt_D.Einzel_EK,
tbl2c_Nichtamaz_AnzArt_D.Netto_VK,
tbl2c_Nichtamaz_AnzArt_D.Land,
tbl2c_Nichtamaz_AnzArt_D.Max2,
tbl2c_Nichtamaz_AnzArt_D.DB,
tbl2c_Nichtamaz_AnzArt_D.[DB Stück],
tbl2c_Nichtamaz_AnzArt_D.WE;

PS: Bitte entschuldigt den kryptischen Tabellennamen.
Titel: Re: Leere Felder mit Formel füllen
Beitrag von: Beaker s.a. am Juli 26, 2024, 11:14:11
Zeige ein Bild des Beziehungsfensters.
Ohne dem wird Hilfe schwierig, - schätze ich.
Titel: Re: Leere Felder mit Formel füllen
Beitrag von: K a t j a am Juli 26, 2024, 11:32:17
In den Anhängen ist ein Bild mit dem Namen 2-Tabellen-Beziehung. Könnt Ihr das nicht sehen?
Titel: Re: Leere Felder mit Formel füllen
Beitrag von: MzKlMu am Juli 26, 2024, 11:46:16
Hallo,
Zitatist ein Bild mit dem Namen 2-Tabellen-Beziehung
Das ist keine Beziehung, das ist eine Verknüpfung von 2 Tabellen innerhalb einer Abfrage. Mit Beziehungen hat das nichts zu tun. Eine solche Verknüpfung kann sich auch von den Beziehungen unterscheiden. Beziehungen werden im Beziehungsfenster angelegt und gelten für die ganze DB.

ZitatIIf([Land]=""
Ein leeres Feld hat nicht den Inhalt "" (Leerstring) das ist ein Trugschluss. Ein leeres Feld ist NULL.
Du kannst es mal mit Nz probieren.
Z.B. so:
=Nz(Land;Formel)
Nz kannst Du in der Access OH nachschlagen.
Titel: Re: Leere Felder mit Formel füllen
Beitrag von: PhilS am Juli 26, 2024, 11:52:35
Zitat von: K a t j a am Juli 26, 2024, 10:44:28Hier hab ich mal ein Beispiel mit IIf([Land]="" unten rein gestellt. Ich habe auch schon Istleer, IstNull, 0 und ähnliches erfolglos probiert.
Damit hast du in die richtige Richtung gedacht. Wenn durch einen Outer Join ohne Treffer "leere" Felder entstehen, ist deren Wert NULL.
Das kann man entweder mit der IsNull Funktion prüfen oder den SQL Operator IS NULL verwenden. - In diesem Fall ist es relativ egal, aber wenn du in den Kriterien aus NULL prüfen willst, ist IS NULL wesentlich effizienter.

SELECT
   tbl2c_Nichtamaz_AnzArt_D.Land,
   tbl2c_Nichtamaz_AnzArt_D.Max2,
   tbl2c_Nichtamaz_AnzArt_D.WE,
   IIf([Land] IS NULL,[Max2]*3.94,[WE]) AS Paketkosten_A,
   IIf(IsNull([Land]),[Max2]*3.94,[WE]) AS Paketkosten_B
FROM tbl2c_Nichtamaz_AnzArt_D
;

Titel: Re: Leere Felder mit Formel füllen
Beitrag von: K a t j a am Juli 26, 2024, 12:11:57
Perfekt, mit IstNull klappt es.
Vielen Dank!  *Yippy*  :)

Ich hatte es eigentlich schon damit probiert ohne Erfolg. Ich vermute, da war irgendwo ein Schreibfehler. Jetzt geht es.