Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

SQL Abfrage in ComboBox füllen

$
0
0

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?




Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>