Friday, June 06, 2008

この記事は

記事 関数名 説明
SQL*PLUSもどきを作る1 PSOracle SQL*PLUSもどきのメイン関数
SQL*PLUSもどきを作る1の説明 PSOracle SQL*PLUSもどきのメイン関数の説明
SQL*PLUSもどきを作る2 Get-OracleConnectionStirng 接続文字列を作成する
SQL*PLUSもどきを作る3 Execute-QueryString SQLを実行した結果をDataSetに格納して返す
SQL*PLUSもどきを作る4 desc descコマンド
SQL*PLUSもどきを作る5 Read-MultiLine コマンドラインから複数行の入力を受け取る
SQL*PLUSもどきを作る6 Execute-Query SQLを実行して、結果をコンソールウィンドウに表示する
SQL*PLUSもどきを作る5(改訂版) Read-MultiLine コマンドラインから複数行の入力を受け取る。終端判定を1文字以上でも行えるよう見直し。
SQL*PLUSもどきを作る7 Disconnect 切断処理

SQL*PLUSもどきを作る8

Write-SqlHistory SQL実行履歴の保存
SQL*PLUSもどきを作る6(改訂版) Execute-Query SQLを実行して、結果をコンソールウィンドウに表示する。SQL実行履歴作成機能の追加。

SQL*PLUSもどきを作る9

View-History SQL履歴からの実行機能作成

SQL*PLUSもどきを作る6(改訂版2)

Execute-Query その9で作成した機能を組み込み、さらにXMLエクスポート機能を付加。

の続きです。

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-を組み込みます。

 

Friday, June 06, 2008 11:20:36 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: