Abfragen mit Filter

Alles rund um den Report Designer in ACMP
Antworten
hdreg
Beiträge: 11
Registriert: Di Jul 20, 2021 9:44 am

Hallo,

ich versuche mir einen Report zu basteln der mir den Füllstand vom Systemaufwerk C: berichtet. Das geht doch schnell, dachte ich.

Leider ergab sich für mich ein Problem beim Erstellen der entsprechnden Abfrage. Ich habe mir folgendes für die Abfrage zusammengesucht:
Felder: "Computer Name", "Laufwerk ID", "Laufwerk Benutzung".
Filter: UND [Laufwerk ID gleich "C:"]
Angeordnet nach: "Logical Drives"
sortiert nach Füllstand

Leider greift der Filter nicht wie gewüscht, es sollen nur Ergebnisse vom Laufwerk C: angezeigt werden. Alle anderen Laufwerke nicht.
Wenn ich den Filter in der Ergebnistabelle anwende arbeitet die Befilterung wie gewünscht. Das hilft mir aber beim Report nicht weiter da dort wieder alle Laufwerke gelistet werden.

Was mache ich falsch ?


MfG HDReg
DerFreistaat
Beiträge: 10
Registriert: Mo Feb 28, 2022 3:55 pm

Servus HDReg,

ähnliches Problem hatte ich heute morgen auch.
In dem Fall musst du den Filter im Report setzen

öffne mal deinen Bericht im FastReport, Doppelklick auf dein MasterData1, dort kannst du einen Filter setzen.

Wenn ichs richig verstehe müsste
POS( lowercase('C:'),lowercase(<Laufwerk ID>) ) > 0
den gewünschten Effekt haben.

(vermutlich heißt die Variable bei dir noch anders)

Gruß
Florian
hdreg
Beiträge: 11
Registriert: Di Jul 20, 2021 9:44 am

Hallo Florian,

danke für deine Antwort.
Ich habe deinen Tipp ausprobiert. Beim Ausführen des Reports erhalte ich eine Fehlermeldung: "Folgende(r) Fehler traten auf: Unbekannte Variable oder Datenfeld: Laufwerk ID Variante des Typs (Null) konnte nicht in Typ (OleStr) konvertiert werden"

Habe ich die Funktion des Filters in einer Abfrage falsch verstanden? Oder ist das ein Programmbug? Nach einer Weile herumprobieren habe ich festgestellt das der Filter eigentlich nur nach "Computer Name" zuverlässig filtert. Tests mit "Laufwerksbezeichnung"/"Drive Label" like "Daten" haben nicht gegriffen.

Vielleicht kann Jemand etwas damit anfangen, hier der SQL Code des Filters:

"CLT_CLIENTS"."CLIENTID" IN (
SELECT "CLT_CLIENTS"."CLIENTID" FROM "CLT_CLIENTS" WITH (READUNCOMMITTED)
INTERSECT (
SELECT "CLT_CLIENTS"."CLIENTID" FROM "CLT_CLIENTS" WITH (READUNCOMMITTED)
LEFT JOIN "CLT_HDW_LDRIVES" ON
"CLT_HDW_LDRIVES"."CLIENTID" =
"CLT_CLIENTS"."CLIENTID"
WHERE
("CLT_HDW_LDRIVES"."DRIVENAME"
=
N'C:')
)
)


MfG HDReg
DerFreistaat
Beiträge: 10
Registriert: Mo Feb 28, 2022 3:55 pm

Servus,

bzgl der Abfragen: da falle ich auch regelmäßig auf die Nase. ACMP "denkt" da ein bisschen anders:

Deine Abfrage sagt: Suche mir alle Computer die eine Platte namens C: haben

Die Logik im Report sagt aber: Iteriere über alle gefundenen Computer und iteriere dann über alle Festplatten (völlig Egal ob die C,D,E oder X heißen)
Von daher brauchst den Filter im Rerport.


Heißt das Feld bei dir wirklich "Laufwerk ID" ?
Wenn ich auf die schnelle ne Abfrage zusammenklicke kommt [Logical drives."Drive Label"] bei raus.

Gruß
Flo
hdreg
Beiträge: 11
Registriert: Di Jul 20, 2021 9:44 am

Hallo Florian,

letztendlich brachte "Main data."Drive ID" das gewünschte Ergebenis.

Frage mich trotzdem ob der Filter so arbeitet wie er soll.


MfG HDReg
Antworten