アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

#1です。

ヒマだから簡単に解説。

>名前'dbOpenDynaset'は宣言されていません というエラーがでてしまいます

dbOpenDynasetの名前解決ができないということ。
すなわちコンパイルする上で、「dbOpenDynasetってなんのことかわからないよ!」と言われているわけ。

「参照」-「追加」はビルドパスにdllを通しただけにすぎない。
従ってDAO名前空間配下のRecordsetTypeEnum列挙型のメンバであるdbOpenDynasetにアクセスするには
フルネームで指定しなくてはならない。それが先(前回答)の指摘。

「毎回フルネームで書くなんてメンドーだな!」という場合は
あらかじめインポートしてやればよい。

Imports DAO.RecordsetTypeEnum

これを文頭に書けばdbOpenDynasetだけでも名前解決ができるようになる。
開発環境にVisualStadioを使っているならdllを追加した「参照」の下部に
「インポートされた名前空間」ってやつがあるからそこに「DAO.RecordsetTypeEnum」を
追加してやっても同じこと。

余談だが、クラスや列挙体というのは必ずどこかの名前空間に属している。
例えば「MsgBox」関数は普通使う場合にフルネームで指定しないが
それは標準で「Microsoft.VisualBasic」名前空間がインポートされているから。
試しに「インポートされた名前空間」から「Microsoft.VisualBasic」のチェックをはずすと
「名前'MsgBox'は宣言されていません」と表示されるはず。
何事も実践が大事。お試しあれ。
    • good
    • 0

> rs = db.OpenRecordset("adress", dbOpenDynaset)



rs = db.OpenRecordset("adress", DAO.RecordsetTypeEnum.dbOpenDynaset)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!