
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
No.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を使うべき、ようですね
No.1
- 回答日時:
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接続のプログラム方法を教えていただければ幸いです。私が掲載したプログラムでのエラー回避方法等もご存知でしたら教えてください。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名前'dbOpenDynaset'は宣言され...
-
MDBをADO接続でINSERT・UPDATE...
-
VB6.0でSQLServerへ・・・Recor...
-
UPDATE時にSETしたい日本語文字...
-
OracleDataReaderについて…
-
VBA 変数名に変数を使用したい。
-
『列名 '担当者CD' があいま...
-
INT64対応のprintf系関数はあり...
-
EXCELのVBAでLenB関数について
-
Access VBA 添付型フィールド
-
VB.NETでのAccessテーブルリンク
-
VB6.0の「vbFromUnicode」はVB....
-
エクセルでXY座標に並べられた...
-
VB6からの移行したいけど、VB.N...
-
DataTableに特定のフィールドが...
-
Redim とEraseの違いは?
-
CString型 全角半角を意識せず...
-
エクセルのテーブルを解除する...
-
コンボボックスのインデックス...
-
accessでフィールド追加のあと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
VB6.0でSQLServerへ・・・Recor...
-
OracleDataReaderについて…
-
名前'dbOpenDynaset'は宣言され...
-
UPDATE時にSETしたい日本語文字...
-
VB2005でACCESSの処理
-
初心者ですデータベースの形式 ...
-
データベースの接続ができない
-
複数SQL発行について
-
ExcelVBAでのAccessデータベー...
-
ListviewにDB内容を表示し方に...
-
vb.netでデータベース(Access)...
-
MDBをADO接続でINSERT・UPDATE...
-
VBでAccessにSQL文を実行して値...
-
VB6.0でアクセス2000...
-
MSFlexGridでデータの追加の方...
-
VB2005でmdbに接続するには?
-
VB6でデータベースを変えるとテ...
-
ASP.NET(VB.NET)でADO.NETを使...
-
VB6.0とaccessのDBを接続する
おすすめ情報