Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Leere Felder mit Formel füllen

Begonnen von K a t j a, Juli 26, 2024, 10:44:28

⏪ vorheriges - nächstes ⏩

K a t j a

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:
Sie dürfen in diesem Board keine Dateianhänge sehen.
Wennabfrage:
Sie dürfen in diesem Board keine Dateianhänge sehen.
Ergebnis Wennabfrage
Sie dürfen in diesem Board keine Dateianhänge sehen. 
Ergebnis Kriterium:
Sie dürfen in diesem Board keine Dateianhänge sehen.

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.

Beaker s.a.

Zeige ein Bild des Beziehungsfensters.
Ohne dem wird Hilfe schwierig, - schätze ich.
--
Frauen aller Länder vereinigt euch! Wir brauchen eine Wiedergeburt des Matriarchats.
Und schickt den Papst in die Wüste! Da kann er 40 Tage auf God(o)t warten.

K a t j a

In den Anhängen ist ein Bild mit dem Namen 2-Tabellen-Beziehung. Könnt Ihr das nicht sehen?

MzKlMu

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.
Gruß
Klaus

PhilS

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
;

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

K a t j a

#5
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.