【】Top
【】VB.NET
【】VB6.0
【】メールマガジンの購読
【】メールマガジンの解除
【】会社概要
【】お問い合わせ
姉妹サイト「バーチャルコネクション!」はこちらです。
姉妹サイト「七福神のメールでビンゴ!」はこちらです。
●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。
|
|
|
|
|
ACCESSのMDBでデータを編集する
|
|
【注意書き】 ●VB.NET を使っているものとします。 ●動作環境は、Windows XX を使用しているとします。 ●Microsoft.Jet.OLEDB.4.0 を使用しています。 ●Microsoft Access 9.0 Object Library を使用しています。
VB.NET でも、 ACCESSのMDBを作成して編集することが可能です。
この機能を使えば、簡単に、 ACCESSの機能を使ったデータベースを取り扱うアプリケーション など簡単に作成できます。
今回は、カード型の編集サンプルです。
フォームに次の様なコードを記述します
-----------VB.NETコーディングここから-------------------
1.メニューバーの中に、「プロジェクト」→「参照の追加」 から、「COM」のタブ中にある
Microsoft ADO Ext X.X for DDL and Securityと Microsoft Access X.X Object Library
の2つを選んで、 「選択」を押し、その後、「OK」を押します。
この操作で、参照が追加されます。
※バージョンは、X.Xの部分が数字です。 Microsoft ADO Ext 2.7 for DDL and Security など Microsoft Access 9.0 Object Library など
2.フォームに、 ラベルコントロール、 テキストボックスコントロール、 ボタンコントロール を配置します。 下記は、デフォルトのオブジェクトの名前と配置を示しています。
┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━┓ ┃Label1 ┃ ┃TextBox1 ┃ ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━┛ ┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━┓ ┃Label2 ┃ ┃TextBox2 ┃ ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━┛ ┏━━━━━━━┓ ┃Button1 ┃ ┗━━━━━━━┛
┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃Label3 ┃┃TextBox3 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛ ┏━━━━━━━┓ ┃Button2 ┃ ┗━━━━━━━┛
┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃Label4 ┃┃TextBox4 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛ ┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃Label5 ┃┃TextBox5 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛ ┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃Label6 ┃┃TextBox6 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛
┏━━━━━━━┓ ┏━━━━━━━┓ ┃Button3 ┃ ┃Button4 ┃ ┗━━━━━━━┛ ┗━━━━━━━┛
3.ボタンコントロールの Button1 text プロパティに「MDB作成」と記述します。 Button2 text プロパティに「データ検索」と記述します。 Button3 text プロパティに「データ追加更新」と記述します。 Button4 text プロパティに「データ削除」と記述します。
Label1 text プロパティに「作成先ディレクトリ」と記述します。 Label2 text プロパティに「作成先ファイル名」と記述します。 Label3 text プロパティに「ID」と記述します。 Label4 text プロパティに「名前」と記述します。 Label5 text プロパティに「性別」と記述します。 Label6 text プロパティに「電話番号」と記述します。 ※説明用のためです。必須ではありません。
┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━┓ ┃作成先ディレクトリ ┃ ┃TextBox1 ┃ ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━┛ ┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━┓ ┃作成先ファイル名 ┃ ┃TextBox2 ┃ ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━┛ ┏━━━━━━━┓ ┃MDB作成 ┃ ┗━━━━━━━┛
┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃ID ┃┃TextBox3 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛ ┏━━━━━━━┓ ┃データ検索 ┃ ┗━━━━━━━┛
┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃名前 ┃┃TextBox4 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛ ┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃性別 ┃┃TextBox5 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛ ┏━━━━━━━━━━━┓┏━━━━━━━━━━━┓ ┃電話番号 ┃┃TextBox6 ┃ ┗━━━━━━━━━━━┛┗━━━━━━━━━━━┛
┏━━━━━━━┓ ┏━━━━━━━┓ ┃データ追加更新┃ ┃データ削除 ┃ ┗━━━━━━━┛ ┗━━━━━━━┛
4.ボタンコントロールをダブルクリックして、 ボタンのクリックイベントの編集を開始して、 フォームの宣言部に、次のコードを記述します。
Dim MjstrPath As String
Dim MjstrID As String 'ID Dim MjstrSimei As String '名前 Dim MjstrSexnam As String '性別 Dim MjstrTel As String '電話番号
さらに次のコードを記述します。
'作成先パス(ディレクトリとファイル名)を指定 Function MDB_CRTDATABASE(ByVal PistrMakPath As String) As Boolean
MDB_CRTDATABASE = False
Dim objCat As ADOX.Catalog 'カタログ Dim strDatbasePara As String 'データベースパラメータ
Dim strTable As String 'テーブル名称 Dim objTable As ADOX.Table 'テーブル
strDatbasePara = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + PistrMakPath + ";" + _ "Jet OLEDB:Engine Type=5;" Try
'ADOXオブジェクトを作成します objCat = New ADOX.Catalog
'MDB作成 objCat.Create(strDatbasePara)
'初期テーブルを作成します ' テーブル名を指定してテーブルを追加する strTable = "sampleTable" objTable = New ADOX.Table
With objTable
.Name = strTable .Columns.Append("ID", _ ADOX.DataTypeEnum.adInteger) .Columns.Append("名前", _ ADOX.DataTypeEnum.adVarWChar, 50) .Columns.Append("性別", _ ADOX.DataTypeEnum.adVarWChar, 10) .Columns.Append("電話番号", _ ADOX.DataTypeEnum.adVarWChar, 20) 'NULLを許さない .Columns("ID").Attributes = _ ADOX.ColumnAttributesEnum.adColNullable
End With
objCat.Tables.Append(objTable)
MDB_CRTDATABASE = True
Catch ex As Exception
End Try
objCat = Nothing
End Function
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click
Dim strMdbpath As String
strMdbpath = TextBox1.Text + "\" + TextBox2.Text
If TextBox1.Text = "" Then MsgBox("MDB作成ディレクトリを入力してください") Exit Sub End If If TextBox2.Text = "" Then MsgBox("MDB作成ファイル名を入力してください") Exit Sub End If If Dir(strMdbpath) <> "" Or _ Dir(strMdbpath + ".mdb") <> "" Then MsgBox("すでに存在しています") Exit Sub End If
If MDB_CRTDATABASE(strMdbpath) Then MsgBox("作成しました") Else MsgBox("作成に失敗!") End If
End Sub
'データを追加更新する '失敗で0を返す 追加で1,更新で2 を返す Function MDB_INSERTUPDATE(ByVal PistrMakPath As String) As Integer
MDB_INSERTUPDATE = 0
Dim strDatbasePara As String 'データベースパラメータ
Dim ObjCnn As New ADODB.Connection Dim ObjRst As New ADODB.Recordset Dim strSelectSql As String
strDatbasePara = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + PistrMakPath + ";" + _ "Jet OLEDB:Engine Type=5;" Try
ObjCnn.Open(strDatbasePara)
strSelectSql = "Select * from sampleTable" _ + " where ID = " + MjstrID
ObjRst.Open(strSelectSql, ObjCnn, _ ADODB.CursorTypeEnum.adOpenKeyset, _ ADODB.LockTypeEnum.adLockOptimistic)
If ObjRst.EOF Then '該当しなければ追加します ObjRst.AddNew() ObjRst.Fields("ID").Value = MjstrID ObjRst.Fields("名前").Value = MjstrSimei ObjRst.Fields("性別").Value = MjstrSexnam ObjRst.Fields("電話番号").Value = MjstrTel MDB_INSERTUPDATE = 1 Else '該当すれば更新します ObjRst.Fields("ID").Value = MjstrID ObjRst.Fields("名前").Value = MjstrSimei ObjRst.Fields("性別").Value = MjstrSexnam ObjRst.Fields("電話番号").Value = MjstrTel MDB_INSERTUPDATE = 2 End If
ObjRst.Update() ObjRst.Close()
Catch ex As Exception
End Try
ObjCnn = Nothing ObjRst = Nothing
End Function
'データを検索する Function MDB_SELECT(ByVal PistrMakPath As String) As Boolean
MDB_SELECT = False
Dim strDatbasePara As String 'データベースパラメータ
Dim ObjCnn As New ADODB.Connection Dim ObjRst As New ADODB.Recordset Dim strSelectSql As String
strDatbasePara = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + PistrMakPath + ";" + _ "Jet OLEDB:Engine Type=5;" Try
ObjCnn.Open(strDatbasePara)
strSelectSql = "Select * from sampleTable" _ + " where ID = " + MjstrID
ObjRst.Open(strSelectSql, ObjCnn, _ ADODB.CursorTypeEnum.adOpenKeyset, _ ADODB.LockTypeEnum.adLockOptimistic)
If ObjRst.EOF Then MjstrSimei = "" MjstrSexnam = "" MjstrTel = "" Else MjstrID = ObjRst.Fields("ID").Value MjstrSimei = ObjRst.Fields("名前").Value MjstrSexnam = ObjRst.Fields("性別").Value MjstrTel = ObjRst.Fields("電話番号").Value MDB_SELECT = True End If
ObjRst.Update() ObjRst.Close()
Catch ex As Exception
End Try
ObjCnn = Nothing ObjRst = Nothing
End Function
'データを削除する '失敗で0を返す 削除で1,該当なしで2 を返す Function MDB_DELETE(ByVal PistrMakPath As String) As Integer
MDB_DELETE = 0
Dim strDatbasePara As String 'データベースパラメータ
Dim ObjCnn As New ADODB.Connection Dim ObjRst As New ADODB.Recordset Dim strSelectSql As String
strDatbasePara = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + PistrMakPath + ";" + _ "Jet OLEDB:Engine Type=5;" Try
ObjCnn.Open(strDatbasePara)
strSelectSql = "Select * from sampleTable" _ + " where ID = " + MjstrID
ObjRst.Open(strSelectSql, ObjCnn, _ ADODB.CursorTypeEnum.adOpenKeyset, _ ADODB.LockTypeEnum.adLockOptimistic)
If ObjRst.EOF Then '該当しなければ何もしません MDB_DELETE = 2 Else '該当すれば削除します MjstrSimei = "" MjstrSexnam = "" MjstrTel = "" ObjRst.Delete() MDB_DELETE = 1 End If
ObjRst.Update() ObjRst.Close()
Catch ex As Exception
End Try
ObjCnn = Nothing ObjRst = Nothing
End Function
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load
'ディレクトリを取り出しています Dim strWorkPath As String Dim strPath As String
'アプリケーションディレクトリを取得する strWorkPath = _ System.Reflection.Assembly.GetExecutingAssembly.Location Dim myFileInfo As New System.IO.FileInfo(strWorkPath) MjstrPath = myFileInfo.DirectoryName
TextBox1.Text = MjstrPath TextBox2.Text = "sample.mdb"
End Sub
'データを検索する '検索 Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click
Dim strMdbpath As String Dim intRecQuery As Integer
strMdbpath = TextBox1.Text + "\" + TextBox2.Text
MjstrID = TextBox3.Text
If MDB_SELECT(strMdbpath) Then MsgBox("検索該当しました") Else MsgBox("該当ありません") End If
TextBox4.Text = MjstrSimei TextBox5.Text = MjstrSexnam TextBox6.Text = MjstrTel
End Sub
'追加更新ボタン Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click
Dim strMdbpath As String Dim intRecQuery As Integer
strMdbpath = TextBox1.Text + "\" + TextBox2.Text
MjstrID = TextBox3.Text MjstrSimei = TextBox4.Text MjstrSexnam = TextBox5.Text MjstrTel = TextBox6.Text
intRecQuery = MDB_INSERTUPDATE(strMdbpath)
Select Case intRecQuery Case 1 MsgBox("追加しました") Case 2 MsgBox("更新しました") Case Else MsgBox("追加更新失敗!")
End Select
End Sub
'削除ボタン Private Sub Button4_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button4.Click
Dim strMdbpath As String Dim intRecQuery As Integer
strMdbpath = TextBox1.Text + "\" + TextBox2.Text
MjstrID = TextBox3.Text
intRecQuery = MDB_DELETE(strMdbpath)
Select Case intRecQuery Case 1 MsgBox("削除しました") Case 2 MsgBox("該当ありません") Case Else MsgBox("削除失敗!")
End Select
TextBox4.Text = MjstrSimei TextBox5.Text = MjstrSexnam TextBox6.Text = MjstrTel
End Sub
5.ビルドして実行します。
6.フォームに表示された コマンドボタン「MDB作成」を押します。
7.作成先ディレクトリと作成先ファイルに指定された mdb 形式のファイルが作成されます。
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- EOF
8. ID に 10 を入力します 9. 名前 に どっとタロウ を入力します 10.性別 に 男性 を入力します 11.電話番号 に 090-111-2222 を入力します
12.データ追加更新ボタンを押します 13.新規のデータであるので 「データを追加しました」と表示されます
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- 10 どっとタロウ 男性 090-111-2222 EOF
14. ID に 20 を入力します 15. 名前 に どっとハナコ を入力します 16. 性別 に 女性 を入力します 17. 電話番号 に 090-333-7777 を入力します
18.データ追加更新ボタンを押します 19.新規のデータであるので 「データを追加しました」と表示されます
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- 10 どっとタロウ 男性 090-111-2222 20 どっとハナコ 女性 090-333-7777 EOF
20. ID に 10 を入力します 21.データ検索ボタンを押します
22.ID 10 のデータが存在するので 「検索該当しました」と表示されます
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- 10 どっとタロウ 男性 090-111-2222 20 どっとハナコ 女性 090-333-7777 EOF
23.該当した ID 10 のレコード データが表示されます
ID に 10 が表示されます 名前 に どっとタロウ が表示されます 性別 に 男性 が表示されます 電話番号 に 090-111-2222 が表示されます
24.表示中のID 10 のレコードを削除しようと思うので データ削除ボタンを押します
25.「データ削除しました」と表示されます ※ID 10 のレコードデータが削除されます
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- 20 どっとハナコ 女性 090-333-7777 EOF
26. ID に 20 を入力します 27.データ検索ボタンを押します 28.ID 20 のデータが存在するので 「検索該当しました」と表示されます 29.該当した ID 20 のレコード データが表示されます
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- 20 どっとハナコ 女性 090-333-7777 EOF
30. 名前 に どっとねっと を入力します
31.データ追加更新ボタンを押します 32.「データを更新しました」と表示されます
※ACCESS MDB内のデータイメージ(sampleTable) ID 名前 性別 電話番号 ----------------------------------- 20 どっとねっと 女性 090-333-7777 EOF
33.可能なら MS Office ACCESS 2000 アプリケーションで 作成した MDB sample.mdb を ACCESS で確認してみます。
-----------VB.NETコーディングここまで-------------------
本サンプルでは、 System.Reflection.Assembly.GetExecutingAssembly.Location で実行パスを取得して、sample.mdb をデフォルトで指定しています。
この部分を変更することで、 希望する作成先のディレクトリパスへ簡単にmdb作成が可能です。
また、このサンプルでは、mdb作成と同時に 空のテーブル sampleTable をデフォルトで作成しています。
フィールド名 型 幅 値要求 ID 数値型 -- はい 名前 テキスト型 50 いいえ 性別 テキスト型 50 いいえ 電話番号 テキスト型 10 いいえ
注意としましては、 ADO では、新しいレコードに移動すると 現在のレコードへの変更は自動的にコミットされます。 DAO と ADO では、 共に現在レコードへの変更を明示的に破棄するには CancelUpdate 、メソッドを使用します。
本サンプルでは ID をキーにしたカード型のレコード編集を 再現しています
|
http://anetm.com/dev/d.cgi?SC=DTDTL&o=Om3
Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。
|
|
|
|
|
|
|