コードはあなたのwhere句であると仮定すると、それはうまくいくはずです。レポートがそのフォームのWebクエリに基づいている場合条件として、あなたはそれを削除しなければならない。したがって、ここでOpenReportコマンドの "where"句を使用する必要があります。これは単に、Webクエリの[forms]![SomeFormName] refsが許可されていないことを意味します。上記の問題を想定し
、その後、私はそれを考えることができる2つの以上のものがこれが失敗する原因になります。
あなたは、ナビゲーションフォームの内側のフォームを配置しました。これは実際にあなたのフォームが現在サブフォームにあり、フィルタコマンドのフォームrefが間違っていることを意味します。
実際には、上記の厄介な問題のために、私は一般的なルールとしてINTOのローカル変数の値を詰め込み、その変数をフィルタ式で使用します。これは多くの理由がありますが、1つの利点は、コード内のフォーム参照がハードコードされていないことです。フィルターはコントロールを受け入れることができますが、完全修飾フォームrefをハードコーディングしなければなりません。ただし、フィルタコマンドでローカル変数またはグローバル変数を使用することもできます。
修飾されたフォームrefを必要とせずにフォームコントロールの値を変数に入れることができました(ありがたいことに)。したがって、コントロール名を使用することができます。これは、VBAの "私"と同じことをあなたに与えてくれます。その結果、フォーム中立コードがここにあります。したがって、この「余分な」ステップが強く推奨されます。
このように、コードやフォーム名を変更することなく、フォームをコピーしたり、フォームの名前を変更したり、サブフォーム内のフォームを使用することができます(新しいWebナビゲーションフォームを意味します)。
次の問題は、Webベースのアプリケーションは、データ型に対して非常に敏感です。つまり、コンボボックスがバインドされていない場合、日付データ型の値が返されない可能性があります。これにより、フィルタがWeb側で失敗するケースが発生します。
クライアント側のアクセスでデータ型がキャストされることがよくありますが、Webではこれはあまり許されません。
簡単なアプローチの1つは、コンボボックス(形式タブ)のプロパティシートです。コンボボックスの形式を日付に設定します(短い日付を試してください)。これで問題は解決します。
私はさらに上記のセットのvarのアイデアを使用して、ハードコードされたフォームのrefとnameを削除します。
だからあなたのコードは次のようになります。コンボボックスは、データベースの基礎となる列にバインドされている場合は、必要ありませんコンボボックスのプロパティシートのデータ形式の設定という
SetLocalVar (dtUserDate,[myComboBox])
OpenReport (myReport, [InvoiceDate] = [LocalVars]![dtUserDate], Normal)
注意を。しかし、これはおそらくアンバウンドコンボボックスなので、データ型の設定は必須です。
このデータ型の問題は、数値列をフィルタするときにテキストボックスに適用されます(形式タブの一般的な数値に設定されます)。 (または、長いデータ型にキャストするために式をCDbl()でラップします)。
日付については、dateSerial()コマンドを使用して日付タイプを強制することもできますが、これはコンボボックスからは意味をなさない可能性があります。
ここで、フォームのバインドされていないコントロールを使用し、その値をフィルタに使用する場合は、データ型に細心の注意を払ってください。
これは通常、バインドされたコントロールの問題/問題ではありませんが、バインドされていない場合は、式が間違ったデータ型を使用することが多く、Accessクライアントはデータ型をキャストする物のウェブ側はより敏感です。