Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Access SQL Nur Felder anzeigen wo Value >0 (https://www.delphipraxis.net/215152-access-sql-nur-felder-anzeigen-wo-value-0-a.html)

HCB 18. Mai 2024 12:38

Datenbank: Access • Version: 2003 • Zugriff über: FireDac

Access SQL Nur Felder anzeigen wo Value >0
 
Hallo, ich habe auf den Tipp von Delphi.Narium mal die KI bemüht, hat aber leider nicht den gewünschten Erfolg gebracht. Deshalb wende ich mich nochmals hier an die wirklichen Profis.
Ich habe eine Tabelle in der nur eine Zeile (mit 170 Feldern) steht. In dieser befinden sich u.a. sechs Felder die ich auslesen muss. Es sollen aber nur die Felder von den 6 gelistet werden die auch einen Wert > 0 haben. Der folgende Code bringt mir aber auch die Felder, die den Wert 0 haben. Es sind Felder vom Typ Currency.

Delphi-Quellcode:
SELECT FKAbfPreisEinheit_0,FKAbfPreisEinheit_1,FKAbfPreisEinheit_2,FKAbfPreisEinheit_3,FKAbfPreisEinheit_4,FKAbfPreisEinheit_5
FROM sABFKons
WHERE FKAbfPreisEinheit_0 > 0 OR FKAbfPreisEinheit_1 > 0 OR FKAbfPreisEinheit_2 > 0 OR FKAbfPreisEinheit_3 > 0 OR FKAbfPreisEinheit_4 > 0 OR FKAbfPreisEinheit_5 > 0;
Kann jemend erkennen warum das so ist, oder wie man das umschreibt?
Für Eure Unterstützung würde ich mich sehr freuen.

LG Harry

Uwe Raabe 18. Mai 2024 13:10

AW: Access SQL Nur Felder anzeigen wo Value >0
 
Die Abfrage bewirkt ja, dass bei einem Datensatz immer alle sechs Felder ausgegeben werden, solange mindestes eines einen Wert > 0 hat.
Zitat:

Zitat von HCB (Beitrag 1536820)
Es sollen aber nur die Felder von den 6 gelistet werden die auch einen Wert > 0 haben.

Man kann keine Abfrage erstellen, bei der die Anzahl der ausgegebenen Felder für einzelne Datensätze unterschiedlich ist.

Musst du denn wissen, wie die jeweiligen Felder mit Wert > 0 heißen oder bist du nur an den Werten interessiert?

Uwe Raabe 18. Mai 2024 13:21

AW: Access SQL Nur Felder anzeigen wo Value >0
 
Eine Möglichkeit wäre vielleicht sowas:
SQL-Code:
SELECT FKAbfPreisEinheit_0 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_0 > 0
UNION ALL
SELECT FKAbfPreisEinheit_1 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_1 > 0
UNION ALL
SELECT FKAbfPreisEinheit_2 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_2 > 0
UNION ALL
SELECT FKAbfPreisEinheit_3 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_3 > 0
UNION ALL
SELECT FKAbfPreisEinheit_4 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_4 > 0
UNION ALL
SELECT FKAbfPreisEinheit_5 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_5 > 0
Das liefert dir 0 bis 5 Datensätze mit den Werten. Willst du noch wissen, welche Nummer der Wert hat, kannst du die jeweiligen SELECTs um diese ergänzen:
SQL-Code:
SELECT 0 AS Nr, FKAbfPreisEinheit_0 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_0 > 0
UNION ALL
SELECT 1 AS Nr, FKAbfPreisEinheit_1 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_1 > 0
UNION ALL
SELECT 2 AS Nr, FKAbfPreisEinheit_2 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_2 > 0
UNION ALL
SELECT 3 AS Nr, FKAbfPreisEinheit_3 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_3 > 0
UNION ALL
SELECT 4 AS Nr, FKAbfPreisEinheit_4 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_4 > 0
UNION ALL
SELECT 5 AS Nr, FKAbfPreisEinheit_5 AS FKAbfPreisEinheit
FROM sABFKons
WHERE FKAbfPreisEinheit_5 > 0

DaCoda 18. Mai 2024 14:52

AW: Access SQL Nur Felder anzeigen wo Value >0
 
Wenn ich dich richtig verstanden habe, dann Eventuell so:

Code:
SELECT FKAbfPreisEinheit_0,FKAbfPreisEinheit_1,FKAbfPreisEinheit_2,FKAbfPreisEinheit_3,FKAbfPreisEinheit_4,FKAbfPreisEinheit_5
FROM sABFKons
WHERE FKAbfPreisEinheit_0 <> 0 AND FKAbfPreisEinheit_1 <> 0 AND FKAbfPreisEinheit_2 <> 0 AND FKAbfPreisEinheit_3 <> 0 AND FKAbfPreisEinheit_4 <> 0 AND FKAbfPreisEinheit_5 <> 0;

HCB 18. Mai 2024 16:36

AW: Access SQL Nur Felder anzeigen wo Value >0
 
Hallo und Danke!
Uwes erste Möglichkeit war genau das was ich brauche. Super!

LG Harry


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz