「平成」を感じるもの

Dim rcd As New ADODB.Recordset

Sql = "SELECT * FROM 社員テーブル"
rcd.Open Sql, CurrentProject.Connection
If rcd.EOF Then Else
社員コード = rcd!社員コード
社員名称 = rcd!社員名称
end if
のような記述で、Sqlのところをテーブルからのselectではなくクエリからデータの取得って出来るのでしょうか?(sqlのところがクエリ名になる)

よろしくお願いします。

A 回答 (3件)

#2です。



クエリがどのような物か書いていなかったので一般的な使用方法を記載しました。
クエリの抽出パラメータにビルドメニューからオブジェクトを直接指定した場合にSQLを見るとWhere句にVBAのオブジェクト参照の文字列がそのまま入ってしまっていると思います。
クエリを直接実行する場合は上手くやってくれるのですが、Recordsetを直接SQLでオープンする場合、DAOでもADOでもこの部分がSQLエラーとなってしまうようです。

その場合は、3つほど方法があるとおもいます。

SQLとして変数が渡せればいいので
1.クエリの抽出条件を取り払ってしまい、Sql = Sql & " where 列名 = " & オブジェクト など自分で抽出部分のSQLを書いてしまう。
2.SQLのパラメータとしてパラメータクエリを書いてしまう。
3.共通モジュールに引き渡しようの値を返却するFunctionモジュールを作成しSQL内では関数を参照するようにする(SQLに書かれた内部関数はSQL内で呼び出してくれるようです)。

方法が有ると思います。
私は1の方法でゴリゴリ書いてしまいますが...
2,3の方法はODBC経由になった場合やASP用にSQLを変更したときに影響が出そうなために個人的には使っていません。動かなかったらすいません。
    • good
    • 0

SQLをクエリから取得したらどうでしょうか?



Public dbs As Database
Public qdf As QueryDef
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
Sql = qdf.SQL
    • good
    • 0
この回答へのお礼

ありがとうございます
とりあえず出来たのですが、クエリの中に条件を指定していると駄目でした(form!xxxxxとaccessのフォームの項目を条件にすると)

お礼日時:2005/09/08 00:04

FROM句をクエリ名に換えるだけで済むのでは?



試しに、クエリをソースとして別のクエリ(目的に沿ったもの)を作成してみて、そのSQL表示を見てみれば確認できますよ。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す


おすすめ情報