2

このqryにアクセスできます。設計に入ると、基準があります(私が理解しているように、これはパラメーターです)。

このqryが基づいているレポートはうまく機能します。それをクリックすると、必要な情報を尋ねるポップアップが表示されます。コードでは、これを実行して取得しようとしています

Run-time error '424'
Object Required

問題のある行:

 qdf.Parameters("Insurance Name").Value = inputStr

その前の行:

Set qfd = CurrentDb.QueryDefs("qryInsGrpRoster")

 Dim inputStr As String
 inputStr = InputBox("Enter Insurance")
 'Supply the parameter value
 qdf.Parameters("Insurance Name").Value = inputStr

inputStr間違いなく値と同じですが、失敗します。

qry の基準行は次のとおりです。

Like "*" & [Insurance Name] & "*"

そのパラメーターを設定するには、好きなものが必要ですか?

4

3 に答える 3

1

Access Query の parameters プロパティは読み取り専用です。

ここには基本的に 2 つのオプションがあり、すぐに思いつきます。

1 つ目は、使用する必要があるたびに、保存されたクエリの SQL を完全に書き直すことです。この例をここで見ることができます: How to change querydef sql programmatically in MS Access

2 番目のオプションは、レポートを開くたびに、レポートの RecordSource を手動で設定することです。この方法を使用すると、保存されたクエリはまったく使用されません。レポートが開いたら、SQL ステートメント全体をコードに設定/保存し、ユーザーからの入力を求め、取得した入力を SQL ステートメントに追加する必要があります。代わりにベース SQL がテーブルに格納されるシステムをセットアップすることもできますが、簡単にするために、ここでやろうとしていることを達成するために必要ではありません。

MS Access では、ここで試みている方法でパラメーター化されたクエリを使用できますが (コードとは異なります)、私の知る限り、MS SQL Server または MySQL でストアド プロシージャを使用する必要があります。 ADO を使用する必要があります。大きな欠点の 1 つは、Access レポートを ADO レコードセットにバインドできないことです。そのため、この特定のインスタンスで実行しようとしている操作に対して、これは実際にはオプションではありません。

于 2013-09-16T12:08:15.043 に答える
1

タイプミスのようです。「qfd」という名前のオブジェクトを作成し、「qdf」という名前のオブジェクトを使用しようとしています Set qfd =...そして qdf.Para...

Option Explicitこの種の問題を見つけるのに役立つように、モジュールを配置するのが好きです。

于 2018-07-07T16:55:39.460 に答える