
VB初心者です。データベース接続を一度も成功したことがありません。
そのため「参照の追加」でMicrosoft DAO 3.6Object Libraryを設定することも
わかりませんでした。
利用しているソフトはVB2008 Express Editionを利用しています。
以下のソースコードで名前'dbOpenDynaset'は宣言されていません というエラーがでてしまいます
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
' デフォルトのワークスペースを定義する
Dim obj As DBEngine = New DBEngine()
ws = obj.Workspaces(0)
' データベースを開く
db = ws.OpenDatabase("C:\Users\PCUser\Desktop\database\Database1.accdb")
' テーブル名を指定してレコードセットを作成する
rs = db.OpenRecordset("adress", dbOpenDynaset)
MsgBox("DB接続")
End Sub
End Class
No.2ベストアンサー
- 回答日時:
#1です。
ヒマだから簡単に解説。>名前'dbOpenDynaset'は宣言されていません というエラーがでてしまいます
dbOpenDynasetの名前解決ができないということ。
すなわちコンパイルする上で、「dbOpenDynasetってなんのことかわからないよ!」と言われているわけ。
「参照」-「追加」はビルドパスにdllを通しただけにすぎない。
従ってDAO名前空間配下のRecordsetTypeEnum列挙型のメンバであるdbOpenDynasetにアクセスするには
フルネームで指定しなくてはならない。それが先(前回答)の指摘。
「毎回フルネームで書くなんてメンドーだな!」という場合は
あらかじめインポートしてやればよい。
Imports DAO.RecordsetTypeEnum
これを文頭に書けばdbOpenDynasetだけでも名前解決ができるようになる。
開発環境にVisualStadioを使っているならdllを追加した「参照」の下部に
「インポートされた名前空間」ってやつがあるからそこに「DAO.RecordsetTypeEnum」を
追加してやっても同じこと。
余談だが、クラスや列挙体というのは必ずどこかの名前空間に属している。
例えば「MsgBox」関数は普通使う場合にフルネームで指定しないが
それは標準で「Microsoft.VisualBasic」名前空間がインポートされているから。
試しに「インポートされた名前空間」から「Microsoft.VisualBasic」のチェックをはずすと
「名前'MsgBox'は宣言されていません」と表示されるはず。
何事も実践が大事。お試しあれ。
No.1
- 回答日時:
> rs = db.OpenRecordset("adress", dbOpenDynaset)
rs = db.OpenRecordset("adress", DAO.RecordsetTypeEnum.dbOpenDynaset)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASPでoracleの接続について教え...
-
VB6.0とaccessのDBを接続する
-
VB6.0でアクセス2000...
-
データベースの接続ができない
-
【VB】コンボボックスにデータ...
-
VB2005でmdbに接続するには?
-
StrutsでDataSourceの切り替え
-
VB6からAccess2000のテーブル使用
-
ASP.NET(VB.NET)でADO.NETを使...
-
データベースに書き込むときの...
-
エクセルのマクロ コンボボッ...
-
INT64対応のprintf系関数はあり...
-
Format関数の戻り値
-
VBとアクセスでSQL文に変...
-
Notesのフォームを動的に・・・
-
【VB.NET】Excelの最終行までの...
-
SQL同時実行違反
-
画像ファイルを配列に格納する方法
-
エクセル VBAの処理速度について
-
POSTデータの2次元配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UPDATE時にSETしたい日本語文字...
-
データベースの接続ができない
-
【VB】コンボボックスにデータ...
-
複数SQL発行について
-
vb.netでデータベース(Access)...
-
初心者ですデータベースの形式 ...
-
VB6.0とaccessのDBを接続する
-
DataGridに表示されない
-
OracleDataReaderについて…
-
名前'dbOpenDynaset'は宣言され...
-
VBSでADOを使ってaccessのテー...
-
VB2005でmdbに接続するには?
-
レンタルサーバでのDB接続の件
-
エクセルVBAでアクセスのテーブ...
-
Accessを編集するとASPで接続で...
-
VB6でデータベースを変えるとテ...
-
zoopsのサーバーへの設定がわか...
-
[ASP]エラー プロバイダが指...
-
AndroidアプリからMySQLのデー...
-
Javaでデータベースにアクセス
おすすめ情報