Seite 1 von 1

Dynamische Filter

Verfasst: Mo Nov 18, 2013 3:26 pm
von HDTewes
Hallo,
ich arbeite fast ausschließlich über Container und dynamische Filter.
Ich habe zu jedem Softwarepaket einen Container erstellt und möchte dynamisch alle PC’s in den Container aufnehmen,
die
a) Nicht mein Domänen-Controller sind (Computername <> ‚ACMP-DC‘)
und
b) Die gesuchte Software nicht installiert haben
oder
c) Die gesuchte Software installiert haben, aber nicht in der entsprechenden Version.

Ich bekomme es hin, dass die Rechner aufgenommen werden, die die Software in einer falschen Version installiert haben:
ODER (nichts)
UND (MSI Install Name nicht = „Adobe Flash Player 11 Plugin)
(MSI Software Version nicht = „11.9.900.152“)
NICHT (Computer Name nicht = „ACMP-DC“)

Leider tauchen dann Rechner nicht auf, welche den Flash Player noch gar nicht installiert haben.

Wie muss ich den Filter aufbauen?

Mit freundlichen Grüßen
Hans-Dieter Tewes

Re: Dynamische Filter

Verfasst: Mi Nov 20, 2013 12:15 pm
von RKorth
Hallo,

diese Logik ist im BoolTree (so nennen wir die GUI, in der man die Filterlogik hinterlegt) nur sehr schwer abzubilden. Manche Abfragen können damit nicht optimal abgebildet werden, manche komplexe Abfragen gar nicht. Der BoolTree ist für Standardabfragen die komfortable Art, schnell zu Ergebnissen zu kommen. Wir arbeiten noch an einer allgemeinen Lösung, die aber niemals so optimal und performant sein kann wie eine individuell angepasste SQL Query. Aber kein Grund, Sand in den Kopf zu stecken ;-)
ACMP stellt Ihnen in den Queries und Containerfiltern einen starken Gefährten in Gestalt der "Advanced Query" zur Seite. Damit ist man in der Lage, alles abzufragen, was das Datenbankherz begehrt (und sogar optimal und individuell).
Tun Sie folgendes:
- Gehen sie in Ihren dynamischen Container
- Wählen Sie als "Filter mode" "Advanced filter/Erweiterter Filter)" statt "Standard filter"
- Wählen Sie den Tab "SQL" aus (nicht "Builder" / "Assistent")
- Klicken Sie den etwas unscheinbar dreinblickenden Button "Edit SQL" (das Bleistiftsymbol)
- kopieren Sie das unten folgende SQL Statement in den Editor und klicken Sie auf weiter. Es folgt ein Snytaxcheck und eine Plausibilitätsvorschau. Klicken Sie danach auf Finish. Danach können Sie eine Neuberechnung der dynamischen Filter anstoßen.
Ich denke, dass das Ergebnis Ihre gesuchte Lösung ist.
Die Clients, die just zum Zeitpunkt der Neuberechnung neu registriert werden, sollte man (muss man aber nicht) einer Best Practise folgend ausschließen, indem man deren ComputerName "[INITIALIZING]" explizit herausfiltert.
Lieben Gruß aus Soest
Robert Korth

Code: Alles auswählen

SELECT c.ClientID, c.computername
FROM CLT_CLIENTS c
WHERE
	(c.ComputerName != 'ACMP-DC')
	and
	(c.ComputerName != '[INITIALIZING]')		
	and
	not exists ( 
						SELECT cmsi.clientid 
						FROM 
							[CLT_SW_MSI] cmsi INNER JOIN [SYS_SW_MSI] smsi
								ON (cmsi.clientid = c.ClientID) and (cmsi.SWMSIID = smsi.SWMSIID)
						WHERE 
							(smsi.[name] = 'Adobe Flash Player 11 Plugin')
							and 
							(smsi.VERSIONSTRING = '11.9.900.152')
						)

Re: Dynamische Filter

Verfasst: Mo Nov 25, 2013 11:32 am
von HDTewes
Vielen Dank für die schnelle Antwort.
Genau das habe ich gesucht. Ich habe es sofort ausprobiert und es klappt super.
Mit freundlichen Grüßen
Hans-Dieter Tewes