VB.NETからのMDBへのデータ接続について教えてください

このQ&Aのポイント
  • VB.NETを使用してMDBファイルにデータ接続する方法について教えてください。
  • VB.NETでAccessの場合とMSDEの場合のデータ接続方法について詳しく教えてください。
  • OleDBとSqlConnectionを使ったデータ接続のコード例を教えてください。
回答を見る
  • ベストアンサー

VB.NETからのMDBへのデータ接続について教えてください。

またまたお世話になります。 いろいろ教えていただきながらほとんど出来上がって今最後のログオン部分を作成中です。 VB.NET2003、アクセス2000使用です。 参考にしている本がAccess使いではなくMSDEを使用しているため、データ接続の部分が毎回違っています。 各フォームなどでは余り気にせずに進めたのですが、このログオン処理のところだけ引っかかって進むことが出来ません。 データリンクプロパティでAccessの場合はMicrosoft Jet4.0 OLE DB Providerを指定しなければならないようですが、この場合、Oledbconnectionが作成されます。 MSDEの場合、Sqlconnectionが作成されSQLは以下のように書かれます。 Dim cmd As Sqlclient.Sqlcommand = Sqlconnection1.CreateCommnad() Dim dr As SqlClient.SqlDataReader 'コマンドのコネクション設定 cmd.Connection = SqlConnection1 'コネクションを開く SqlConnection1.Open() OledbConnectionを使って書くにはどういう修正をしたらいいのか、ご教示いただきたくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Oledbconnection で検索をかけたら、サンプルはいくらでもありますよ。 http://homepage2.nifty.com/inform/vbdb/net_mdb.htm

danchor
質問者

お礼

1050YENさん、いつもお世話になります。 早速ご教示ありがとうございます。 やってみます。 ゴールが見えてきた!

関連するQ&A

  • VB.NETでSqlClientを利用して複数テーベルを見る方法

    今VB.NETで SQLデータベースからデータを取得して動作するプログラムを作っているのですが、テーブルを複数参照する方法がわかりません。教えてください~ ■今のプログラム(おおざっぱに) Public DBcn As SqlClient.SqlConnection = Nothing Public SQLcmd As SqlClient.SqlCommand Dim dr As SqlDataReader DBcn = New SqlClient.SqlConnection SQLcmd = New SqlClient.SqlCommand DBcn.ConnectionString = "接続情報省略" DBcn.Open() SQLcmd.Connection = DBcn SQLcmd.CommandText = "select * from AAA " dr = SQLcmd.ExecuteReader() While dr.Read() = True   ※処理A End While このプログラムの処理Aの中に もう一度Select文で他のテーブル(データベース同じ)を参照したいのですが、どのようにすればよいのでしょうか? いろいろ試してみたのですがどれもできず;;困っております。

  • vb2005.netでCrystalReports

    クリスタルレポート初心者です。宜しくお願いします。 以下のソースでクリスタルレポートから印刷を行っていますが、最後にSQLSERVERのパスワード入力のダイアログが出てしまいます。 Dim cn As New SqlClient.SqlConnection Dim cmd As New SqlClient.SqlCommand Dim oDataAdapter As New SqlClient.SqlDataAdapter Dim oDataSet As DataSet = New DataSet Dim oCryRepo As HIJYUU = New HIJYUU cn.ConnectionString = "Server=192.168.1.1;Initial Catalog=TESTDB;ID=sa;Passworsd="pw001;" cn.Open() cmd.Connection = cn cmd.CommandText = "select * from h_tbl where ndate='" & "20110715" & "'" oDataAdapter.SelectCommand = cmd oDataSet.Clear() oDataAdapter.Fill(oDataSet, "H_TBL") oCryRepo.SetDataSource(oDataSet) crView.ReportSource = oCryRepo cn.Close() パスワード入力のダイアログを出さずに印刷する方法を教えていただきたいのですが。 その画面でパスワードを入力すれば正常に印刷されます。 環境はVB2005.NET、それにバンドルされているクリスタルレポート、sqlserver2008です。 以上、宜しくお願い致します。

  • VB.NET、mdbに新しいデータを追加したい

    超初心者で申し訳ありません。下のプログラムにおいてオペレータ名が一致する場合には 更新(UPDATE)する。一致するデータが無い場合には新規登録を行いたいのですが どのように書いたらいいのかさっぱりでNETを相当探したのですが回答が見つかりません。 お手数ですがどなたか助けていただけませんでしょうか。なお、一致する場合には 更新(UPDATE)は動作するようになりました。 VBを始めて2ケ月になります。Microsoftの文献を見ても難しくてまだ理解できるレベルに達していません。どなたか、よろしくお願い致します。 「データ構造」 ID          integer オペレータ名   string ランク       integer パスワード    string 補足       string Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '■■■■■■■■■■■■■■■■■■■■■■■■ '■■■   オペレータの新規/更新登録   ■■■  '■■■■■■■■■■■■■■■■■■■■■■■■ '----------------------------------------------------------- 'コネクションを作成 Dim CurrentDir As String = System.IO.Directory.GetCurrentDirectory() Dim cn As New OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & CurrentDir & "\operator.mdb" '**************** コマンドを作成 **************** Dim OPE As String Dim PWORD As String Dim HOSOKU As String Dim RANK As Integer OPE = オペレータ名.Text RANK = ランク.Text HOSOKU = 補足.Text PWORD = パスワード.Text Dim cmd As New OleDbCommand( "UPDATE table1 " & "SET ランク = ? " & "," & "パスワード = ? " & "," & "補足 = ? " & " WHERE オペレータ名 = ? ", cn) '************** パラメータを作成 **************** cmd.Parameters.Add("ランク", OleDbType.Integer).Value = RANK cmd.Parameters.Add("パスワード", OleDbType.Char).Value = PWORD cmd.Parameters.Add("補足", OleDbType.Char).Value = HOSOKU cmd.Parameters.Add("オペレータ名", OleDbType.Char).Value = OPE '実行 cn.Open() cmd.ExecuteNonQuery() '-------------------------- Dim COUNTC As Integer COUNTC = cmd.ExecuteNonQuery()   '************************************ elseの中に簡単に記載すのって難???*** If COUNTC > 0 Then MessageBox.Show("更新 完了")     Else 'INSERTの手順       ’★ ここにmdbの中に 項目値 OPE、RANK、HOSOKU、PWORDを挿入(追加)        する命令を入れたい。   '実行 cmd.ExecuteNonQuery() End If ’********************************** '-------------------------- cn.Close() End Sub

  • ASP.NET

    VBで作成しています。 下記はSQLサーバーのデータベースを使ったプログラムですが、Microsoft Office Accessのデータベースを使う場合は、どのように変更すればいいでしょうか?教えて下さい。 お願いします。 <プログラム> Dim strSQL As String Dim sqlDa As SqlClient.SqlDataReader Dim dr As DataRow 'SQL文 strSQL = "SELECT * FROM Data1 Dim cmdSQL As New SqlClient.SqlCommand With cmdSQL .Connection = Action .CommandType = CommandType.Text .CommandText = strSQL End With Try Action.Open() sqlDa = cmdSQL.ExecuteReader (以下省略)

  • コンボボックスのSelectedItemの使い方

    エリアテーブルを取得し コンボボックスの見える値は「値」にして コンボボックスを取得するときには「コード」を 取れるようにしたいと思っています。 どのように書くと取得できるのでしょうか? バインドするやり方が分からなくて 下記のようになっています。 Dim strSql As String Dim dr As SqlClient.SqlDataReader = Nothing Dim daAdp As New SqlClient.SqlDataAdapter Dim cmd As New SqlClient.SqlCommand Dim ds As DataSet = New DataSet() mConn = New SqlConnection 'DBのオープン  Conn.DbConnect()   Dim dbCmd As SqlCommand = Nothing 'SQL発行 strSQL = "SELECT コード,値 " strSQL = strSQL & "FROM エリア" Conn.ExecSqlSelect(strSql, dr)   ComboBox1.Items.Clear() Do While dr.Read ComboBox1.Items.Add(dr.GetString(1)) ComboBox1.SelectedItem = dr.GetString(0) Loop

  • sql2000 vb2008接続

    VB2008/standard editionでremote PC/dynabook1のMSDE/sql2000 のnCalnartに接続を試みるとき error/providerはサポートされていません/がでます。 デザイン時には接続されるのですが 原因と対策をお教えください Dim scn As SqlClient.SqlConnection = New SqlClient.SqlConnection scn.ConnectionString = "Provider=SQLOLEDB;Data Source=DYNABOOK1;Persist Security Info=True;User ID=sa;Initial Catalog=nCalnart" Try scn.Open() MessageBox.Show("接続しました") scn.Close() MessageBox.Show("切断しました") Catch ex As Exception MessageBox.Show(ex.Message, "error") End Try

  • 現在、ASP.NET(言語:VB.NET)にて、

    現在、ASP.NET(言語:VB.NET)にて、 データ参照、更新系のWebアプリケーションを自学しているものですが、 DAC(Data Access Componet)を利用してSQL Serverのデータを取得、更新する際、 コネクションの閉じ方が分からず困っています。 DACを使用しない場合は、 下記のようにSQLConnectionをUsing句で明示的に括り、 Closeさせることができますが、 DACを使用した場合はTableAdapterからSQLConnectionを取得できず、 同様の実装方法を採れません。 ------------------ Dim mySelectQuery As String = "SELECT * FROM Categories ORDER BY CategoryID" Dim myConnectString As String = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer" Dim myCommand As New SqlCommand(mySelectQuery) Using conn AS SqlConnection = New SqlConnection(myConnectString) myCommand.Connection =conn myCommand.CommandTimeout = 15 myCommand.CommandType = CommandType.Text myCommand.ExecuteNonQuery() End Using ------------------ 一方、DACを使用した場合は下記のように実装しております。 ------------------ Dim ta As New SystemError_OriginalTableAdapters.OriginalTableAdapter Dim dt As New SystemError_OriginalDataTable ta.FillBy(dt, id) ' テーブルアダプターのFillメソッドを呼び出すのみで、Closeしているかどうかがわからない。 ------------------ DACでは、Fillメソッド実行後に必ずSQLConnectionがCloseされることが 保証されているなら問題は無いのですが、 そうでない場合、テーブルアダプターからSQLConnectionを取得して、 明示的にCloseさせてやりたいと思っています。 DACを使用した場合のSQLConnectionの取得方法、 もしくはSQLConnectionのCloseの方法についてご教授願えないでしょうか? 以上、宜しくお願いします。

  • データリーダーからのデータ読み出し方法(VB)

    お世話になってます。 先日データコネクションを質問しその後うまくいっているように見えたのですが、表記でまた躓いています。 コードは Dim cn As New OleDb.OleDbConnection Dim cmd As New OleDb.OleDbCommand Dim dr As OleDb.OleDbDataReader 'コマンドのコネクション設定 cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\DB\Report.mdb" 'コネクションを開く cn.Open() 'コマンドの定義 cmd.CommandText = "SELECT password FROM T_Staff WHERE Staff_ID = '" & txtUserID.Text & "'" 'データリーダーからのデータの読み出し dr = cmd.ExecuteReader() ************************************************** 最後の行で ExecuteReader: Connection プロパティは初期化されていません。 と言うエラーメッセージが出ます。 少し検索してみましたがよくわかりません。 これって結局接続できていないのでしょうか? 初期化されていなというのはどういう状態のことなんでしょう? よろしくお願いいたします。

  • VB2005でMDBに接続方法

    お世話になります。 VB2005でアクセスに接続したいのですが、 よく理解できません。 こんな感じで、ネットで見たのを 記述したのですが、なんかエラーになります。 VB6みたいに参照設定が必要なのでしょうか? (記述例) Dim Cn As New OleDbConnection  ↑で警告?になる。 ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\データ.mdb") Dim SQLCm As OleDbCommand = Cn.CreateCommand ↑参照コンポーネントがみつかりませんでした。 と怒られます。 宜しくお願いいたします。

  • 共通モジュールでDBへの接続と利用方法

    VB.net のモジュールの引数にについての質問です。 やりたい事はSQLServerへの接続およびSELCT文を実行させることです DB側へのセッションをモジュールで作成し、 それを元に、他のモジュールやクラスファイルで selectやinsertを動かしたいと思っていますが、うまくいきません 「ExecuteReader には接続が開かれていて使用可能なことが必要です。 現在の接続の状態は終了です」というエラーが出てしまいます。 おそらく戻り値のあたりがおかしいのかなと思うのですが、 解決策がわかりません。 Module Connect Dim cn As System.Data.SqlClient.SqlConnection Public Function Connection() Try cn = New System.Data.SqlClient.SqlConnection() 'SQL Server認証を利用して接続 cn.ConnectionString = _ "Data Source = " & ServerName & _ ";Initial Catalog = " & DBName & _ ";User ID = " & UserID & _ ";Password = " & password 'Windows認証を利用して接続 'cn.ConnectionString = _ ' "Data Source = " & ServerName & _ ' ";Initial Catalog = " & DBName & _ ' ";Integrated Security = SSPI" cn.Open() MessageBox.Show("接続されました") Catch ex As Exception MessageBox.Show(ex.ToString) End Try Return cn End Function End Module Public Sub ExecuteReaderTest() Try Dim cn As New System.Data.SqlClient.SqlConnection Connection() Dim hCommand As System.Data.SqlClient.SqlCommand = cn.CreateCommand() hCommand.CommandText = "SELECT ~~ " Dim cReader As System.Data.SqlClient.SqlDataReader = hCommand.ExecuteReader() hCommand.Dispose() ......

専門家に質問してみよう