2010年10月20日水曜日

IronRuby Accessのテーブル一覧をDataGridViewで表示する

DataGridViewとTextBoxをFormに配置したあとに
⑤menuStripをToolStripContainerの左上に配置する。
 [ここへ入力]に"Open(&O)"を入力する。
 Openをダブルクリック
 def OpenOToolStripMenuItemClick(sender, e)
 endをコード化する
("開く"と入力するとdef 開くOToolStripMenuItemClick(sender, e)となる)
この後、プロパティ:表示:Text"開く(&O)"を入れる
⑥OpenFileDialogをWindowsフォーム上にドラッグする。
 プロパティ:動作:ReadOnlyCheck[True]
RestoreDirectory[[rue]
プロパティ:動作:Filter["Access File (*.mdb)|*.mdb|すべてのファイル (*.*)|*.*"]を入力する。

⑦ def OpenOToolStripMenuItemClick(sender, e)
  の中を記載する。

MsAccessのmdbは
ir.exe -Ku Program.rbにて実行

#Program.rb
require "mscorlib"
require "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
require "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
require "MainForm"

Application = System::Windows::Forms::Application

Application.EnableVisualStyles()
form = MainForm.new()
Application.Run(form)

#MainForm.rb
require "mscorlib"
require "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
require "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
require "System.Data"

class MainForm < System::Windows::Forms::Form
def initialize()
self.InitializeComponent()
end

def InitializeComponent()
@toolStripContainer1 = System::Windows::Forms::ToolStripContainer.new()
@splitContainer1 = System::Windows::Forms::SplitContainer.new()
@dataGridView1 = System::Windows::Forms::DataGridView.new()
@textBox1 = System::Windows::Forms::TextBox.new()
@menuStrip1 = System::Windows::Forms::MenuStrip.new()
@openOToolStripMenuItem = System::Windows::Forms::ToolStripMenuItem.new()
@openFileDialog1 = System::Windows::Forms::OpenFileDialog.new()
@toolStripContainer1.ContentPanel.SuspendLayout()
@toolStripContainer1.TopToolStripPanel.SuspendLayout()
@toolStripContainer1.SuspendLayout()
@splitContainer1.Panel1.SuspendLayout()
@splitContainer1.Panel2.SuspendLayout()
@splitContainer1.SuspendLayout()
@dataGridView1.clr_member(System::ComponentModel::ISupportInitialize, :BeginInit).call()
@menuStrip1.SuspendLayout()
self.SuspendLayout()
#
# toolStripContainer1
#
#
# toolStripContainer1.ContentPanel
#
@toolStripContainer1.ContentPanel.Controls.Add(@splitContainer1)
@toolStripContainer1.ContentPanel.Size = System::Drawing::Size.new(488, 242)
@toolStripContainer1.Dock = System::Windows::Forms::DockStyle.Fill
@toolStripContainer1.Location = System::Drawing::Point.new(0, 0)
@toolStripContainer1.Name = "toolStripContainer1"
@toolStripContainer1.Size = System::Drawing::Size.new(488, 266)
@toolStripContainer1.TabIndex = 0
@toolStripContainer1.Text = "toolStripContainer1"
#
# toolStripContainer1.TopToolStripPanel
#
@toolStripContainer1.TopToolStripPanel.Controls.Add(@menuStrip1)
#
# splitContainer1
#
@splitContainer1.Dock = System::Windows::Forms::DockStyle.Fill
@splitContainer1.Location = System::Drawing::Point.new(0, 0)
@splitContainer1.Name = "splitContainer1"
@splitContainer1.Orientation = System::Windows::Forms::Orientation.Horizontal
#
# splitContainer1.Panel1
#
@splitContainer1.Panel1.Controls.Add(@dataGridView1)
#
# splitContainer1.Panel2
#
@splitContainer1.Panel2.Controls.Add(@textBox1)
@splitContainer1.Size = System::Drawing::Size.new(488, 242)
@splitContainer1.SplitterDistance = 97
@splitContainer1.TabIndex = 0
#
# dataGridView1
#
@dataGridView1.ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode.AutoSize
@dataGridView1.Dock = System::Windows::Forms::DockStyle.Fill
@dataGridView1.Location = System::Drawing::Point.new(0, 0)
@dataGridView1.Name = "dataGridView1"
@dataGridView1.RowTemplate.Height = 21
@dataGridView1.Size = System::Drawing::Size.new(488, 97)
@dataGridView1.TabIndex = 0
#
# textBox1
#
@textBox1.Dock = System::Windows::Forms::DockStyle.Fill
@textBox1.Location = System::Drawing::Point.new(0, 0)
@textBox1.Multiline = true
@textBox1.Name = "textBox1"
@textBox1.ScrollBars = System::Windows::Forms::ScrollBars.Both
@textBox1.Size = System::Drawing::Size.new(488, 141)
@textBox1.TabIndex = 0
#
# menuStrip1
#
@menuStrip1.Dock = System::Windows::Forms::DockStyle.None
@menuStrip1.Items.AddRange(System::Array[System::Windows::Forms::ToolStripItem].new(
[@openOToolStripMenuItem]))
@menuStrip1.Location = System::Drawing::Point.new(0, 0)
@menuStrip1.Name = "menuStrip1"
@menuStrip1.Size = System::Drawing::Size.new(488, 24)
@menuStrip1.TabIndex = 0
@menuStrip1.Text = "menuStrip1"
#
# openOToolStripMenuItem
#
@openOToolStripMenuItem.Name = "openOToolStripMenuItem"
@openOToolStripMenuItem.Size = System::Drawing::Size.new(51, 20)
@openOToolStripMenuItem.Text = "開く(&O)"
@openOToolStripMenuItem.Click { |sender, e| self.OpenOToolStripMenuItemClick(sender, e) }
#
# openFileDialog1
#
@openFileDialog1.FileName = "openFileDialog1"
@openFileDialog1.Filter = "Access File (*.mdb)|*.mdb|すべてのファイル (*.*)|*.*"
@openFileDialog1.ReadOnlyChecked = true
@openFileDialog1.RestoreDirectory = true
@openFileDialog1.FileOk { |sender, e| self.OpenFileDialog1FileOk(sender, e) }
#
# MainForm
#
self.ClientSize = System::Drawing::Size.new(488, 266)
self.Controls.Add(@toolStripContainer1)
self.MainMenuStrip = @menuStrip1
self.Name = "MainForm"
self.Text = "rubyma_access"
@toolStripContainer1.ContentPanel.ResumeLayout(false)
@toolStripContainer1.TopToolStripPanel.ResumeLayout(false)
@toolStripContainer1.TopToolStripPanel.PerformLayout()
@toolStripContainer1.ResumeLayout(false)
@toolStripContainer1.PerformLayout()
@splitContainer1.Panel1.ResumeLayout(false)
@splitContainer1.Panel2.ResumeLayout(false)
@splitContainer1.Panel2.PerformLayout()
@splitContainer1.ResumeLayout(false)
@dataGridView1.clr_member(System::ComponentModel::ISupportInitialize, :EndInit).call()
@menuStrip1.ResumeLayout(false)
@menuStrip1.PerformLayout()
self.ResumeLayout(false)
end

def OpenOToolStripMenuItemClick(sender, e)
if @openFileDialog1.ShowDialog() == System::Windows::Forms::DialogResult.OK then
@openFileDialog1.FileNames.each do |filename| #ファイルごとに処理をする
@textBox1.AppendText( System::Environment.NewLine)
@textBox1.AppendText( filename + "\r\n")
begin
#接続文字列の取得
strDBConnection = "Provider=Microsoft.Jet.OLEDB.4.0" + ";Data Source=" + filename + ";User Id=admin" + ";Password="
#DBコネクションの生成
conn = System::Data::OleDb::OleDbConnection.new(strDBConnection)
#接続処理
conn.Open()
# C# schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] {null, null, null, "TABLE"});
schemaTable = conn.GetOleDbSchemaTable(System::Data::OleDb::OleDbSchemaGuid.Tables, System::Array[System::String].new([nil,nil,nil,"TABLE"]))
@dataGridView1.DataSource = schemaTable # dataGridViewに表示
@textBox1.AppendText("テーブル一覧を取得しました" + "\r\n")
conn.Close()
rescue Exception => e
@textBox1.AppendText("Connect Error:" + e.Message + "\r\n")
ensure
end
end
end
end

def OpenFileDialog1FileOk(sender, e)
end
end

0 件のコメント:

コメントを投稿