いつもお世話になっております。
[アドイン] → [ビジュアルデータマネージャ]から、Microsoft Access 形式の、データベース
Sale.mdb
を作成し、次のコード(プログラム01)でアクセスしたところ、正常にオープンできました。
−−−−−−−−−−−−−−−−−−−−−−−−−−
Option Explicit
Private cn As New ADODB.Connection
Private Sub Form_Load()
On Error GoTo Error_Form_Load
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Sale.mdb"
cn.Open
Exit_Form_Load:
MsgBox ("接続に成功しました。")
Exit Sub
Error_Form_Load:
MsgBox (Err.Number & Chr(13) & Err.Description)
End
End Sub
Private Sub Form_Unload(Cancel As Integer)
cn.Close
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−
このプログラム01を実行すると、『接続に成功しました。』というメッセージが表示されます。
ところが、次のプログラム(プログラム02)ではうまくいきません。
−−−−−−−−−−−−−−−−−−−−−−−−−−
Option Explicit
Private cn As New ADODB.Connection
Private rs As New ADODB.Recordset
Private Sub Form_Load()
On Error GoTo Error_Form_Load
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Sale.mdb"
cn.Open
rs.Open "顧客名簿", cn, adOpenStatic, sdLockOpenoptimistic
Text1.Text = rs!顧客ID
Text2.Text = rs!顧客名
Text3.Text = rs!郵便番号
Text4.Text = rs!都道府県
Text5.Text = rs!住所
Text6.Text = rs!電話番号
Exit_Form_Load:
'MsgBox ("接続に成功しました。")
Exit Sub
Error_Form_Load:
MsgBox (Err.Number & Chr(13) & Err.Description)
End
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs.Close
cn.Close
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−
このプログラム02は、テーブルから取得したデータを確認するものですが、2行目の
Private cn As New ADODB.Connection
の行で、
−−−−−−−−−−−−−−−−−−−−−−−−−−
コンパイルエラー
ユーザ定義型は定義されていません。
−−−−−−−−−−−−−−−−−−−−−−−−−−
というエラーが表示されます。2行目をコメントにすると、3行目の
Private rs As New ADODB.Recordset
で同エラーが出ます。もちろん、存在していないデータベースにアクセスしようとしても、同じ箇所でエラーになり、アクセスする前の宣言でうまくいかないようです。しかし、プログラム01、プログラム02とも、2行目までは同じであり、なぜ、こういう違いが生じるのか、まったく解せません。
何かおわかりになることがありましたら、お教え下さい。
どうかよろしくお願いします。
ではメニューから
「プロジェクト」→「参照設定」
を開いて2つのプログラムの違いを確認してみてください。
前回、私のパソコンが、チェックボックスにチェックを入れているか、はずしているかがわかりにくくなっていた問題について、nanashiさんに教えていただき、そのとおりにやって解決しました。どうもありがとうございました。
今回の問題は、nanashiさんのおっしゃるとおり、プログラム02で、「参照設定」において、Microsoft ActiveX Data Objects 2.0 Library を追加していなかったことが原因でした。参考書を読んだだけでは、プログラムのひとつひとつにこの設定をしないといけないということがわかりませんでした。
毎回、つまずいてしまいますが、これからもよろしくお願いします。
どうもありがとうございました。
今度は、解決のチェックをいれるのも悩まなくてよくなりました … o(*^-^*)o