- ベストアンサー
初心者ですデータベースの形式 ・・・を認識できませんというエラーがでます
VBを始めたばかりの初心者でDB接続がいまだによくわかっていません。 以下のプログラムをデバックするとデータベースの形式 <ファイル名> を認識できません というエラーがでてしまいます。access2007はインストールしたばかりで何も設定とかは いじってないと思います。 利用ソフト VB2008 Express Edition MS ACCESS 2007 Imports dao Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'DAOのオブジェクト変数を宣言する() Dim ws As dao.Workspace Dim db As dao.Database Dim rs As dao.Recordset ' デフォルトのワークスペースを定義する 'DAO.DBEngine.Workspaces(0)の関数 'ws = DBEngine.Workspaces(0) Dim obj As DBEngine = New DBEngine() ws = obj.Workspaces(0) Try ' データベースを開く db = ws.OpenDatabase("C:\Users\PCUser\Desktop\database\Database1.accdb") ' テーブル名を指定してレコードセットを作成する rs = db.OpenRecordset("adress", RecordsetTypeEnum.dbOpenDynaset) Catch ex As Exception MsgBox(ex.Message) End Try MsgBox("DB接続") End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記でテストしたらうまく行きました。 WindowsアプリケーションでForm1を出し、コマンドボタンを1つ貼り付け。ダブルクリックしてPrivate Sub Button1_Clickと End Sub の間に下記を入れる。 ーーー Microsoft DAO 3.6 Object Liblaryを参照設定のこと。 ーー Imports dao Public Class Form1 のようにImports daoをPublic Class Form1の前に(すなわち最初に)入れる。 ーーー Button1 ボタン1のクリックイベントに Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'DAOのオブジェクト変数を宣言する() Dim ws As dao.Workspace Dim db As dao.Database Dim rs As dao.Recordset ' デフォルトのワークスペースを定義する 'DAO.DBEngine.Workspaces(0)の関数 'ws = DBEngine.Workspaces(0) Dim obj As DBEngine = New DBEngine ws = obj.Workspaces(0) 'Try ' データベースを開く db = ws.OpenDatabase("C:\Documents and Settings\XXXX\My Documents\社員2.mdb") ' テーブル名を指定してレコードセットを作成する rs = db.OpenRecordset("社員3", RecordsetTypeEnum.dbOpenDynaset) 'Catch ex As Exception ' MsgBox(ex.Message) 'End Try Do Until rs.EOF MsgBox(rs.Fields("氏名").Value.ToString()) rs.MoveNext() Loop End Sub 私の場合ACCESSで、MyDocumenntフォルダに社員2.mdbを作っており、そのテーブルの中の1つに、「社員3」があり、「氏名」フィールドほかがあり、デバッグ実行すると 全員の氏名が順次表示されました。 ーー しかし、これからはADOを使うべき、ようですね
その他の回答 (1)
- yyr446
- ベストアンサー率65% (870/1330)
Access持っているならCOMコンポーネントを使った方が楽 Dim Objaccess As Microsoft.Office.Interop.Access.Application Dim objDB As dao.Database Dim rs As dao.Recordset Try Objaccess = CreateObject("Access.Application") Objaccess.Visible = False Objaccess.OpenCurrentDatabase(filename, True) objDB = Objaccess.CurrentDb rs = objDB.OpenRecordset("adress") Catch ex As Exception MsgBox(ex.Message) end Try MsgBox("DB接続") objDB.Close() Objaccess.CloseCurrentDatabase() Objaccess.Quit() objDB = Nothing Objaccess = Nothing
お礼
ご回答ありがとうございました。私はVBを勉強し始めたばかりでDB接続の種類が沢山ありよくわかっていません。一般的に広く使われているDB接続のプログラム等ご存知でしたら教えてください。また、今はACCESSを使ってプログラムを組んでいますが、OracleやSQLServer等でもDB接続のプログラムを組みたいと思っていますのでDB接続のプログラム方法を教えていただければ幸いです。私が掲載したプログラムでのエラー回避方法等もご存知でしたら教えてください。ありがとうございました。