よろしくお願いいたします。
Accessで、テーブルデータやクエリを取得して使用するプログラムを作っています。
元のコードは、自身のテーブルデータやクエリからDAOを使用してデータを取得しています。
同様の内容を、
・Access自身のテーブル→SQLserverからのリンクテーブル(ODBC)
・DAO接続→ADO接続
と、書き換えたいのですが、ADO接続の方のコードの書き方が合っているか調べてもピンとこないのと、
エラーが出る為困っています。
元のコードは以下です。
Dim db As DAO.Database Dim rs1 As DAO.Recordset Dim rs2 As DAO.Recordset Dim rs3 As DAO.Recordset Set db = CurrentDb() Set rs1 = db.OpenRecordset("顧客マスタ") //Accessテーブル Set rs2 = db.OpenRecordset("Q売上") //Accessクエリ Set rs3 = db.OpenRecordset("Q売上明細") //Accessクエリ '-- いろんな処理
上記のコーディングで、問題なく目的のデータを取得できます。
同内容を、テーブルはSQLserverからのリンクテーブル(ODBC)を作り、ADO接続を用いて
同じようにデータを取得したいのですが、うまくいきません。
問題のADO接続のコードは以下です。
※追記(下記ADO接続コードにおける各テーブルとクエリの説明)
・顧客マスタ→SQLserverにあるテーブル。Accessにあるテーブルと同名のテーブル(顧客マスタ)。
リンクテーブルとしてAccessにおいてあります。
・Q売上→上記リンクテーブルを使用して作ったクエリ
・Q売上明細→通常のAccessのクエリ
Dim cn As New ADODB.Connection Dim rs1 As New ADODB.Recordset Dim rs2 As New ADODB.Recordset Dim rs3 As New ADODB.Recordset Dim strConnectionString As String 'SQLServer接続文字列 strConnectionString = CStr(DLookup("connectionString", "接続文字列テーブル", "ID= 2")) //Access自身の"接続文字テーブル"に、SQLserverの接続文字列を格納し、取得しています。 //このロジックで接続文字列は問題なく変数に代入されています。 cn.Open strConnectionString rs1.Open "顧客マスタ", cn, adOpenForwardOnly, adLockReadOnly //リンクテーブル rs2.Open "Q売上", cn, adOpenForwardOnly, adLockReadOnly //リンクテーブルで作ったクエリ rs3.Open "Q売上明細", cn, adOpenForwardOnly, adLockReadOnly //Accessクエリ //上記の3行、レコードセット.Openのところがデバックでカーソルのあたる箇所 '-- いろんな処理
・エラー箇所は一番下の3行、レコードセット.Openのところで、
・[実行時エラー'2147217900(80040e14)':
ストアドプロシージャ’テーブル名(またはクエリ名)’が見つかりませんでした。]
と、エラーメッセージが出ました。
また、接続文字列に誤りはありません。
コーディングの仕方に問題があるのかと思い、ここで相談させていただきました。
有職者の皆様方、どうかご教示のほどをよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー