none
visual basic 2005 で アクセスDB(MDB)を更新 RRS feed

  • 質問

  • はじめまして、VISUAL BASIC 初心者です。結構調べたつもりですが、わかりせんでした。

    質問内容:

     抽出されたデータに対して項目単位でデータを更新したいのですが、更新方法が分かりません。

     とりあえず、抽出方法は理解しました。

     今回教えて頂きたいのは、抽出されたレコードを更新したい場合、

     下記で「会社名」を一律”XXXX会社”にする場合は具体的なコードを教えて下さい。

     できれば、追加・削除もお願いしたいのですが、

     下記、DBのKEYは「氏名」になっており

      更新のパタン・・・抽出された全ての会社名を”XXXX会社にする

      追加のパタン・・・TEXT.BOXに指定された氏名をKEYとして新規にレコードを追加する。

      削除のパタン・・・TEXT.BOXに指定された氏名のレコードを削除する。   

     

    ’勉強したのは読み取り専用?のDBの抽出でした。

     抽出したレコードを更新する場合はどのよにすればいいでか?

           

            Dim com As System.Data.OleDb.OleDbCommand
            Dim cne As OleDb.OleDbConnection
            Dim dr As System.Data.OleDb.OleDbDataReader
            Dim fnm
            com = New System.Data.OleDb.OleDbCommand
            cne = New OleDb.OleDbConnection
            fnm = "C:\schejule\schedule.mdb"
            cne.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & fnm
            cne.Open()
            com.CommandText = "SELECT * FROM SCHTBL"
            com.Connection = cne
            dr = com.ExecuteReader
            If dr.HasRows = False Then
         ’対象なし

            End If
            While (dr.Read = True)
                MsgBox(dr("氏名"))
                MsgBox(dr("会社名"))
            End While

            cne.Close()

    2007年11月30日 9:09

すべての返信

  • 追加も更新も削除もSQLで行います。com.CommandTextに追加であればinsert文、更新であればupdate文、削除であればdelete文をセットして、ExecuteNonQueryを実行します。

    とりあえず、com.CommandText を変更し、com.ExecuteNonQuery()を実行するだけですので、挑戦してみて下さい。

     

    また、この場合のKEYは主キーのつもりで考えられているのかもしれませんが、そうであれば会社名は不適切です。なぜなら会社名はユニークになる(だぶらない)保障がないからです。もし適切なものが無いであれば、オートナンバーを主キーにして下さい。

     

    更新、削除、登録のパターンはいろいろあります。SQLインジェクションなどの問題もあります。まず、最低のコードを身につけられてから、必要に応じて発展させていけば良いのではないかと思います。

    2007年11月30日 10:06
    モデレータ