Hi
Ich versuche mit Powershell ein GUI mit mehreren ComboBox und TextBox zu machen. Befüllt werden sollen sie aus einem Resultat einer SQL Abfrage ($sqlReturn). Darin sind alle Daten enthalten, die ich für die GUI benötige. Nur halt separat gefiltert, je nach Auswahl in einer ComboBox ..
Hier ein Auszug der Abfrage, wenn ich $sqlReturn direkt auf der Konsole ausgebe:
zNummer zUser zANummer zNachname --------- --------------------- ---------- --------- I19_045 (nicht zugewiesen) XY 2019 212 Müller I14_014 (nicht zugewiesen) Testeintrag I19_065 kurz1 XY 2019 1172 Meier I19_050 kurz1 XY 2019 1177 Marfurt I19_048 kurz3 XY 2019 467 Müller I19_048 kurz3 XY 2019 467 Peter
Die erste ComboBox enthält alle Namen (zUser), die in $sqlReturn vorkommen. Das klappt soweit ..
# Aus einem INI File wird der default User ausgelesen $inifile = Get-IniContent "$PSScriptRoot\include\meinFile.ini" $USR = $inifile["User"]["user"] $sqlReturn = Get-SQLData $srv1 $srv2 $srv3 $srv4 $sqlString # erste ComboBox mit User $DropDownArray0 = $sqlReturn.zUser | Get-Unique # Ab hier beginnt dann die GUI # Nur ein Auszug von der ersten ComboBox $objComboBox0.Items.AddRange($DropDownArray0) $objForm.Controls.Add($objComboBox0) # ComboBox Zeiger auf default User legen $objComboBox0.Text = $USR
Die zweite ComboBox soll nun, abhängig vom ausgewählten User in der ersten ComboBox, die in der SQL Abfrage vorhandenen Nummern (zNummer) ausgeben.
Wenn in der ersten ComboBox also 'kurz1' ausgewählt wurde, soll in der zweiten ComboBox 'i19_050' und 'I19_065' zur Auswahl stehen.
Ohne jetzt bereits schon auf den dynamischen Wechsel der Anzeige von ComboBox 2, in Abhängigkeit zu ComboBox 1 einzugehen, wollte ich erst einmal nur die gefilterten Daten für die zweite ComboBox aufbereiten. Allerdings scheitere ich an der Filterung...
Hier mal einer meiner Versuche an ein Ergebnis zu kommen ..
# auch hier nur ein Auszug aus der GUI .. # nach Einträgen für erste ComboBox .. # gib den augewählten zUser der ersten ComboBox zurück $UserName = $objComboBox0.SelectedItem # jetzt das Aufbereiten der SQL Abfrage für die zweite ComboBox ForEach($row1 in $script:sqlReturn) { $dda1 = $row1.zUser If ($dda1 -contains $UserName) { $DropDownArray1 = $row1.zNummer } } # nur einmalige zNummern zur Auswahl geben $DropDownArray1 = $DropDownArray1 | Get-Unique # zNummern des Users in ComboBox abfüllen $objComboBox1.Items.AddRange($DropDownArray1) $objForm.Controls.Add($objComboBox1)
Wie bereits erwähnt, das liefert leider alle zNummern aus der SQL Abfrage zurück, ohne zusätzlicher Datenreduktion auf die Datensätze von UserName ..
Vielleicht hat mir ja jemand einen Tipp dazu. Vielleicht auch gleich einen Hinweis darauf, wie ich die Abhängigkeit der ComboBoxen wärend der Laufzeit der GUI hinbekomme?