Neuigkeiten:

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

Mobiles Hauptmenü

Wenn berechneter Bestand in Abfrage =0 dann nicht anzeigen...

Begonnen von FrankPB, September 25, 2024, 15:43:24

⏪ vorheriges - nächstes ⏩

FrankPB

Hallo an alle,
ich habe wahrscheinlich gerade einen Knoten im Kopf...
Ich habe eine Tabelle "Lagerbuchung". In der werden Zu- und Abgänge gebucht.  Dazu wird die "Buchungsmenge" sowie der "Buchungswert" (+1 für Zugänge und -1 für Abgänge) gespeichert.  Der Bestand ist also die Summe aller Zugänge (Buchungsmenge * +1) und Abgänge (Buchungsmenge * -1). Funktioniert hervorragend.
Jetzt habe ich eine Abfrage erstellt, die u.a.ein berechnetes Feld hat "Lagerbestand: Summe([Buchungsmenge]*[Buchungswert])" Funktioniert ebenfalls.
Mein Problem jetzt ist, wenn der (errechnete) Lagerbestand = 0 ist, möchte ich, das das nicht in der Abfrage (und danach in einem Bericht) angezeigt wird. Habe schon das Kriterium auf ">0" oder auch "<>0" gesetzt, aber trotzdem wird mir der 0-Bestand noch angezeigt. Wo liegt mein Fehler??Sie dürfen in diesem Board keine Dateianhänge sehen.Sie dürfen in diesem Board keine Dateianhänge sehen. 

MzKlMu

Hallo,
<>0 oder >0 solte funktionieren.

Was ist denn die LagerNr, die sollte glaube ich nicht in die Abfrage.

Zeige bitte mal die Abfrage als SQL Text.
Gruß Klaus

FrankPB

Hallo Klaus, die Lagernr. kann noch weg. Hatte früher mal überlegt, verschiedene Läger anzugeben.

Hier die SQL:
SELECT DISTINCTROW t_Lagerbuchung.ArtikelNr, t_Artikel.Artikelbezeichnung, t_Lagerbuchung.Lagernr, t_Artikel.Beistellung, Sum([Buchungsmenge]*[Buchungswert]) AS Lagerbestand, t_Artikel.LEK, ([Lagerbestand]*[LEK]/100) AS Inventarwert
FROM t_Artikel_zu_Lieferanten, t_Artikel INNER JOIN t_Lagerbuchung ON t_Artikel.Artikelnummer = t_Lagerbuchung.ArtikelNr
GROUP BY t_Lagerbuchung.ArtikelNr, t_Artikel.Artikelbezeichnung, t_Lagerbuchung.Lagernr, t_Artikel.Beistellung, t_Artikel.LEK, t_Artikel.ArtikelgruppeKZ
HAVING (((t_Artikel.Beistellung)=No) AND ((Sum([Buchungsmenge]*[Buchungswert]))<>0) AND ((t_Artikel.ArtikelgruppeKZ)="HFT")) OR (((t_Artikel.ArtikelgruppeKZ)="VKT"))
ORDER BY t_Artikel.LEK;

MzKlMu

Hallo,
Du hast die Tabelle "t_Artikel_zu_Lieferanten" in der Abfrage, die kann raus.
Ebenso das Schlüsselwort DISTINCTROW.

SELECT ArtikelNr
    ,Artikelbezeichnung
    ,Beistellung
    ,Sum([Buchungsmenge] * [Buchungswert]) AS Lagerbestand
    ,LEK
    ,([Lagerbestand] * [LEK] / 100) AS Inventarwert
FROM t_Artikel
INNER JOIN t_Lagerbuchung ON t_Artikel.Artikelnummer = t_Lagerbuchung.ArtikelNr
GROUP BY ArtikelNr
    ,Artikelbezeichnung
    ,Beistellung
    ,LEK
    ,ArtikelgruppeKZ
HAVING (
        ((Beistellung) = No)
        AND ((Sum([Buchungsmenge] * [Buchungswert])) > 0)
        AND ((ArtikelgruppeKZ) = "HFT")
        )
    OR (((ArtikelgruppeKZ) = "VKT"))
ORDER BY LEK
Gruß Klaus

FrankPB

Guten Morgen Klaus,
ich habe deine SQL-Anweisung jetzt übernommen.
Leider ist das Ergebnis immer noch das Gleiche. Die "0"-Werte werden angezeigt.

Habe gerade noch etwas rumexperimentiert und wohl die Lösung gefunden.
Der Fehler lag in den Kriterien der letzten Anweisung "Artikelkennzeichen (leider hatte ich die nicht mit auf dem Screenshot).
Ursprünglich waren die Kriterien untereinander geschrieben "HFT" und "VKT"
Jetzt habe ich die in EINER Zeile "VKT" Oder "HFT" eingetragen und es klappt.
Ws ist zwar schön, das ich die Lösung habe, leider weiß ich nicht den Grund. Die SQL-Anweisung ist - aus meiner Sicht - identisch....

Die SQL zum Vergleich:
SELECT t_Lagerbuchung.ArtikelNr, t_Artikel.Artikelbezeichnung, t_Artikel.Beistellung, Sum([Buchungsmenge]*[Buchungswert]) AS Lagerbestand, t_Artikel.LEK, ([Lagerbestand]*[LEK]/100) AS Inventarwert
FROM t_Artikel INNER JOIN t_Lagerbuchung ON t_Artikel.Artikelnummer = t_Lagerbuchung.ArtikelNr
GROUP BY t_Lagerbuchung.ArtikelNr, t_Artikel.Artikelbezeichnung, t_Artikel.Beistellung, t_Artikel.LEK, t_Artikel.ArtikelgruppeKZ
HAVING (((t_Artikel.Beistellung)=No) AND ((Sum([Buchungsmenge]*[Buchungswert]))>0) AND ((t_Artikel.ArtikelgruppeKZ)="VKT" Or (t_Artikel.ArtikelgruppeKZ)="HFT"))
ORDER BY t_Artikel.LEK;

Trotzdem vielen Dank für die Hilfe und allen eine schöne Restwoche....