この記事は
SQL*PLUSもどきを作る8
SQL*PLUSもどきを作る9
SQL*PLUSもどきを作る6(改訂版2)
の続きです。
SQLを実行する関数 Execute-Queryをさらにカスタマイズして、SQLの実行結果をDataGridViewに表示する機能を追加したいと思います。
これを実現するためにView-Tableという関数を作成しました。
今回はこの関数について説明したい思います。この関数をExecute-Query関数から呼び出す部分は次回説明したいと思います。
この関数の実行結果は下記のようになります。
このようにデータグリッドビューに表示することによって、SQL文を書き直すことなく取得結果をソートすることが可能となります。
今回作成した関数は下記の通りです。
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms") #=============================================================================== # View-DataSet: DataTableをデータグリッドへ表示する # # UPDATE: 2008-06-04 Ver.1.0.0 # 使用例 # PS > View-Table [DataTable] # # copyright HIRO's.NET(http://hiros-dot.nte/) #=============================================================================== function global:View-Table { Param([System.Data.DataTable]$dtTbl) #===== Formの作成 ===== $form = New-Object System.Windows.Forms.Form $form.Text = "SQL実行結果" $form.Width = 500 $form.Height = 400 #===== DataGridViewの作成 ===== $dgvXML = New-Object System.Windows.Forms.DataGridView $dgvXML.Dock = [System.Windows.Forms.DockStyle]::Fill $dgvXML.DataSource = $dtTbl $dgvXML.ReadOnly = $True $form.Controls.Add($dgvXML) #===== Panelの作成 ===== $panel1 = New-Object System.Windows.Forms.Panel $form.Controls.Add($panel1) $panel1.Dock = [System.Windows.Forms.DockStyle]::Bottom $panel1.Height = 30 #===== [閉じる]ボタンの作成 ===== $btnClose = New-Object System.Windows.Forms.Button $btnClose.Location = New-Object System.Drawing.Point(405, 4) $btnClose.Text = "閉じる" $btnClose.anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Right $btnClose.Add_Click({$form.Close()}) $panel1.Controls.AddRange($btnClose) #===== Formを表示 ===== $form.ShowDialog() }
開発ポイント
・パラメータはデータテーブル
呼び出し元のExecute-Query関数は、SQLの実行結果をデータセットに取り出します。
この関数では、そのデータセット内に作成されたデータテーブルを引数として受け取っています。
データグリッドビューはDataSourceプロパティにデータテーブルをセットすると、データテーブルに含まれるデータを自動で表示してくれるのでコードが短く済んでいます。
次回は、Execute-Query関数に、今回作成したData-View-を組み込みます。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail