2

Microsoft Accessでクエリを定義する場合、

例えば、

SELECT * FROM T_Employees t WHERE t.LastName=[LastName]

の値を入力するように求めるポップアップダイアログが表示されますLastNameLastName名前付きパラメーター。

ここから、ビューを作成することもできます

CREATE VIEW paramTest AS SELECT * FROM T_Employees t WHERE t.LastName=[LastName]

ただし、別のクエリでこのビューを呼び出すと、パラメータは無視されます。

では、上記で作成したビューを別のクエリから呼び出して、そのビュー内の名前付きパラメーターの値を指定するにはどうすればよいでしょうか。(できればVBAなしで、SQuirreL SQLのビューを含むクエリを作成するためにVBAを使用しようとしています)。

4

2 に答える 2

2

このCREATE VIEWステートメントは、次のparamTestSQLを使用して名前付きクエリを作成します。

SELECT *
FROM T_Employees AS t
WHERE (((t.LastName)=[LastName]));

そのクエリを実行すると、dbエンジンはパラメータとして解釈[LastName]されないため、パラメータの名前がフィールド名と同じであるため、パラメータダイアログがポップアップ表示されません。基本的に、dbエンジンは、各LastNameフィールドがそれ自体と等しい行を返します...すべての行。

動作するパラメータクエリを作成する場合は、データソースのどのフィールド名とも一致しない名前をパラメータに付けます。そして、ロンが言ったように。CREATE VIEWパラメータクエリを作成することはできません。ただし、を使用して作成できますCREATE PROCEDURE

CurrentProject.Connection.Execute "CREATE PROCEDURE paramTest " & _
    "(Which_LastName TEXT(255)) AS" & vbCrLf & _
    "SELECT * FROM T_Employees t WHERE t.LastName=[Which_LastName];"
于 2012-10-10T14:49:58.863 に答える
0

VIEWSはパラメータを許可しません。それらはクエリというよりもテーブルのように考えてください。通常、パラメータが必要な場合はストアドプロシージャが使用されます。ビューにパラメータを組み込むには、パラメータ値を使用してテーブルを作成し、それをVIEWSQLに含める必要があります。パラメータテーブルには通常、同時リクエストの競合を回避するためにUSERIDが含まれています。

于 2012-10-10T14:38:30.260 に答える