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も見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
アクセスのデータがブッ壊れた(ToT)?!
Access(アクセス)
-
データベースの形式を認識できません。
Visual Basic(VBA)
-
mdbの破損「データベース形式・・・・を認識できません」
Access(アクセス)
-
-
4
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
5
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
SQL
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0でSQLServerへ・・・Recor...
-
UPDATE時にSETしたい日本語文字...
-
レンタルサーバでのDB接続の件
-
データベースの接続ができない
-
ExcelVBAでのAccessデータベー...
-
VB6でデータベースを変えるとテ...
-
VBでAccessにSQL文を実行して値...
-
名前'dbOpenDynaset'は宣言され...
-
MSFlexGridでデータの追加の方...
-
ASPでoracleの接続について教え...
-
ASP.NET(VB.NET)でADO.NETを使...
-
VBA 変数名に変数を使用したい。
-
エクセルでXY座標に並べられた...
-
『列名 '担当者CD' があいま...
-
C#でbyte配列から画像を表示さ...
-
VBAコンボボックスの内容が反映...
-
Accessのフィールド名に半角括...
-
日付と文字列を条件としてDLook...
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
UPDATE時にSETしたい日本語文字...
-
初心者ですデータベースの形式 ...
-
名前'dbOpenDynaset'は宣言され...
-
データベースの接続ができない
-
複数SQL発行について
-
VB6.0とaccessのDBを接続する
-
OracleDataReaderについて…
-
VB6.0でSQLServerへ・・・Recor...
-
ListviewにDB内容を表示し方に...
-
ExcelVBAでのAccessデータベー...
-
vb.netでデータベース(Access)...
-
ASP.NET(VB.NET)でADO.NETを使...
-
VB6.0でアクセス2000...
-
レンタルサーバでのDB接続の件
-
VBでAccessにSQL文を実行して値...
-
エクセルVBAでアクセスのテーブ...
-
ASPでoracleの接続について教え...
-
MSFlexGridでデータの追加の方...
-
PHP + Postgres エラーのハンド...
おすすめ情報