Public/Show-sqmMergeGeneratorGui.ps1
|
function Show-sqmMergeGeneratorGui { <# .SYNOPSIS Startet die WinForms-Oberflaeche des MERGE-Generators. .DESCRIPTION Server verbinden, Quell- und Ziel-Datenbank/-Tabelle per Combobox waehlen, Spalten SSIS-artig mappen, Schluesselspalten anhaken - das MERGE-Statement wird bei jeder Aenderung sofort neu erzeugt. Optional SCD Typ 2 mit Aenderungsart pro Spalte. .PARAMETER PassThru Formular nur aufbauen, nicht-modal anzeigen und zurueckgeben (fuer automatisierte Tests). .EXAMPLE Show-sqmMergeGeneratorGui .EXAMPLE Show-sqmMergeGeneratorGui -SqlInstance DEV01 -SqlCredential (Get-Credential DEV) #> [CmdletBinding()] param( [string]$SqlInstance, [System.Management.Automation.PSCredential]$SqlCredential, [switch]$PassThru ) Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing [System.Windows.Forms.Application]::EnableVisualStyles() $form = New-smgMainForm $ui = $script:smgUi # Letzte Verbindung vorbelegen $cfg = Read-smgConfig foreach ($s in @($cfg.Servers)) { if ($s) { [void]$ui.Server.Items.Add($s) } } $ui.Server.Text = if ($SqlInstance) { $SqlInstance } elseif ($cfg.Servers) { @($cfg.Servers)[0] } else { '' } if ($SqlCredential) { $ui.Auth.SelectedIndex = 1 $ui.Login.Text = $SqlCredential.UserName $ui.Password.Text = $SqlCredential.GetNetworkCredential().Password } elseif ($cfg.Auth -eq 'SQL') { $ui.Auth.SelectedIndex = 1 $ui.Login.Text = $cfg.Login } else { $ui.Auth.SelectedIndex = 0 } Update-smgStatement if ($PassThru) { $form.Show() [System.Windows.Forms.Application]::DoEvents() if ($SqlInstance) { Connect-smgServer } return $form } # Server per Parameter uebergeben: direkt verbinden if ($SqlInstance) { $form.Add_Shown({ Connect-smgServer }) } [void]$form.ShowDialog() $form.Dispose() $script:smgUi = $null } |