VBでMDBメンテ

タグの編集
投稿者 初心者です  (社会人) 投稿日時 2020/4/18 20:10:00
初心者です VBでMDBをメンテしたいとおもいます
HPのプログラムをコピーしたいとおおいますが上手くいきません

http://rucio.a.la9.jpDataSetの内容をデータベースに書き込む

MDBに接続する



以下の例では、MDBに接続して[社員]テーブルのはじめの[氏名]を表示する。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim St As  String
    Dim Cn As New System.Data.OleDb.OleDbConnection
    Dim SQL As System.Data.OleDb.OleDbCommand
    Dim UserID As String = "Admin"
    Dim Password As String = ""
    Dim MDBFile As String = "C:\Program Files\MicrosoftOffice\Office10\Samples\Northwind.mdb"

    St = "Provider=""Microsoft.Jet.OLEDB.4.0"";"
   St &= "Data Source=""" & MDBFile & """;"
   St &= "User ID=" & UserID & ";"
   St &= "Jet OLEDB:Database Password=" & Password

    Cn.ConnectionString = St

    SQL = Cn.CreateCommand

    SQL.CommandText = "SELECT 氏名 FROM 社員"

    Cn.Open()

    MsgBox(SQL.ExecuteScalar)

    Cn.Close()
   SQL.Dispose()
   Cn.Dispose()

End  Sub
 


以下の例では、データベースからauthorsと言う名前のテーブルの内容をデータセットに読み込んで、最初のレコードの列cityの値を Tokyo に変更してからデータベースに書き込む。

authorsテーブルはSQL Server付属のサンプルであるpubsデータベースのテーブルだが、テーブル名や列名の部分は自由に変更できるのでこの例はどのような場合にも対応できる。


VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Cn As SqlClient.SqlConnection
 '<ここにCnのデータベースへの接続処理を追加してください。>

Dim sqlSelect As New SqlClient.SqlCommand("SELECT * FROM authors", Cn)
Dim Adapter As New SqlClient.SqlDataAdapter(sqlSelect)
Dim Builder As New SqlClient.SqlCommandBuilder(Adapter)
Dim ds As New DataSet

Adapter.Fill(ds)

ds.Tables(0).Rows(0)("city") = "Tokyo"

Adapter.Update(ds)
 
をくみあわせたいのですが、どうすればよいでしょうか?
ご指導お願いします

/main/dotnet/Samples/SmpleCnt.htm  です
投稿者 るきお  (社会人) 投稿日時 2020/4/19 09:21:22
確認させてください。

・1つ目のサンプルはMDBの読み込み例です。
・2つ目のサンプルはSQL Serverの書き込み例です。

初心者ですさんが求めているのは、MDBに書き込む例でしょうか?

別のサンプルですが、
http://rucio.o.oo7.jp/main/VBdotNet/Database/Database3.htm
のリスト3でMDBの書き込み例を紹介しています。
これでお役に立てますか?

Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand

SQLCm.CommandText = "UPDATE T_目マスタ SET 説明= 'コウモリ, オオコウモリ' WHERE 目ID = 2"

Cn.Open()
SQLCm.ExecuteNonQuery()
Cn.Close()

MsgBox("変更しました。")

投稿者 初心者です   (社会人) 投稿日時 2020/4/19 12:43:02
更新例と 追加例双方ほしいです

申し訳ありません

OleDbConnectionは定義されていませんでエラーになります
何を参照すればよいでしょう?

投稿者 るきお  (社会人) 投稿日時 2020/4/19 13:00:30
>OleDbConnectionは定義されていませんでエラーになります
>何を参照すればよいでしょう?
プログラムの先頭に Imports System.Data.OleDb を追加します。
先頭に Option ... がある場合はその下です。

または、As New OleDbConnection の代わりに次のように記述します。
As New System.Data.OleDb.OleDbConnection

追加する例はUPDATE .... と書いてある文字列の部分が変わるだけです。
具体的な例は
http://rucio.o.oo7.jp/main/VBdotNet/Database/Database3.htm
の リスト4 で紹介しています。

ここに転記します。

Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand

SQLCm.CommandText = "INSERT INTO T_目マスタ VALUES (999, 'テスト', 'てすと', 1, 'これはテストです。')"

Cn.Open()
SQLCm.ExecuteNonQuery()
Cn.Close()

MsgBox("追加しました。")


更新も追加もテーブルの定義や制約によって書き方が変わります。
たとえば、リレーションシップが定義されているテーブルでは、リレーションシップ先も同時に更新しないとエラーになる場合があります。