| 【】Top
 
 【】VB.NET
 【】VB6.0
 
 【】メールマガジンの購読
 【】メールマガジンの解除
 
 
 
 
 
 
 【】会社概要
 
 【】お問い合わせ
 
 
 姉妹サイト「バーチャルコネクション!」はこちらです。
 
 姉妹サイト「七福神のメールでビンゴ!」はこちらです。
 
 
   
 ●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。
 
 
 | 
 
               
                |  |  |  |   
                |  | 
   
 
   
    | 
  
        http://anetm.com/dev/d.cgi?SC=DTDTL&o=Om3 
        
  
                 
               
                 
                  | 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 をキーにしたカード型のレコード編集を
 再現しています
 
 
 
 
 |  
  
             
   
 Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。  |  |  |   
                |  |  |  |  |