1
Imports System.Data.OleDb Imports System.Windows.Forms Imports System.Data Imports ADOX Public Class MDB ' ************************************************************** ' ドラッグ・ドロップ効果に必要な処理 ' ※ 対象コントロールの AllowDrop を True にする事 ' ************************************************************** Private Sub TableList_DragEnter(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles TableList.DragEnter ' ファイルのパスを(複数)取得 Dim target As String() = CType(e.Data.GetData(DataFormats.FileDrop, False), String()) ' 拡張子を分解 Dim ext As String = System.IO.Path.GetExtension(target(0)) ext = ext.ToUpper() ' 拡張子が MDB で無ければ許可しない If ext = ".MDB" Then e.Effect = DragDropEffects.Move Else e.Effect = DragDropEffects.None End If End Sub ' ************************************************************** ' MDB をドラッグ・ドロップ ' ************************************************************** Private Sub TableList_DragDrop(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles TableList.DragDrop ' ファイルのパスを(複数)取得 Dim target As String() = CType(e.Data.GetData(DataFormats.FileDrop, False), String()) ' 複数選択されていても、先頭のファイル Me.TableList.DbServer = target(0) ' テーブル一覧作成 Call LoadTableList() End Sub ' ************************************************************** ' テーブル名変更 ' ************************************************************** Private Sub 名称変更_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles 名称変更.Click Dim Ac As Catalog = New Catalog() Dim strTarget As String = "" Dim nRow As Integer Me.Message.Reset() ' テーブル一覧作成 Me.TableList.SetCurrentRow() Do While (Me.TableList.FindNextRow()) nRow = Me.TableList.GetCurrentRow() If (Me.TableList.Rows(nRow).State And DataGridViewElementStates.Selected) = _ DataGridViewElementStates.Selected Then strTarget = Me.TableList.GetColumnText("TABLE") Exit Do End If Loop Try Ac.let_ActiveConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Me.TableList.DbServer & ";") Ac.Tables(strTarget).Name = Me.TableName.Text Ac.Tables.Refresh() Call LoadTableList() Catch ex As Exception Me.Message.AddColumn("Message", "メッセージ") Me.Message.AddRow() Me.Message.SetColumnText("Message", ex.Message) End Try Ac = Nothing End Sub ' ************************************************************** ' テーブル一覧作成 ' ************************************************************** Private Sub LoadTableList() ' *********************************** ' 以下、テーブル一覧の取得( ADO 仕様 ) ' *********************************** Me.TableList.Reset() Me.TableList.AddColumn("TABLE", "表名") Me.TableList.AddColumn("TYPE", "タイプ") ' 接続文字列 Dim ConnectString As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Me.TableList.DbServer & ";" ' 接続オブジェクト Dim myCon As New OleDbConnection() myCon.ConnectionString = ConnectString Try myCon.Open() Catch ex As Exception MessageBox.Show(ex.Message) Exit Sub End Try Dim schemaTable As DataTable = _ myCon.GetOleDbSchemaTable( _ OleDbSchemaGuid.Tables, _ New Object() {Nothing, Nothing, Nothing, Nothing} _ ) myCon.Close() Dim rows As Integer = schemaTable.Rows.Count Dim i As Integer = 0 Dim str As String = "" For i = 0 To rows - 1 str = schemaTable.Rows(i)(3).ToString() If str <> "SYSTEM TABLE" And str <> "ACCESS TABLE" Then Me.TableList.AddRow() Me.TableList.SetColumnText("TABLE", schemaTable.Rows(i)("TABLE_NAME").ToString()) Me.TableList.SetColumnText("TYPE", str) End If Next myCon = Nothing End Sub ' ************************************************************** ' クリックしたテーブル名をテキストボックスに転送 ' ************************************************************** Private Sub TableList_CellClick(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TableList.CellClick Me.TableName.Text = Me.TableList.GetColumnText(e.RowIndex, 0) End Sub ' ************************************************************** ' テーブル作成 ' ************************************************************** Private Sub 作成ToolStripMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles 作成ToolStripMenuItem.Click ' ダイアログ呼び出し Dim Dialog As New NewMdb() Dim ret As DialogResult = Dialog.ShowDialog(Me) End Sub End Class
1
Imports System.Windows.Forms Imports lightbox.tool Imports ADOX Public Class NewMdb ' ************************************************************** ' 作成 ' ************************************************************** Private Sub OK_Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles OK_Button.Click Dim Ac As Catalog = New Catalog() CType(Me.Owner, MDB).Message.Reset() Try Ac.Create("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Me.ターゲット.Text & ";" & _ "Jet OLEDB:Engine Type=5") Catch ex As Exception CType(Me.Owner, MDB).Message.AddColumn("Message", "メッセージ") CType(Me.Owner, MDB).Message.AddRow() CType(Me.Owner, MDB).Message.SetColumnText("Message", ex.Message) End Try Ac = Nothing If CType(Me.Owner, MDB).Message.RowCount = 0 Then MessageBox.Show(Me.ターゲット.Text & " が作成されました ") Me.DialogResult = System.Windows.Forms.DialogResult.OK Me.Close() End If End Sub ' ************************************************************** ' キャンセル ' ************************************************************** Private Sub Cancel_Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Cancel_Button.Click Me.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Close() End Sub ' ************************************************************** ' 参照 ' ************************************************************** Private Sub 参照_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles 参照.Click Dim tool As New lightbox.tool.LboxCommdlg() tool.Filter = "MDB|*.mdb" If Not tool.SaveFileName() Then Return End If Me.ターゲット.Text = tool.SelectedPath End Sub End Class