やっと解決方法が見つかりました。
マクロ中に「フォームを開く」を指定し、Where 式にデータを入力すると絞り込みをしてくれません。多分、無視します。今日、気がついたのですが、Where 式を削除し、追記するとその行(フォームを開く)の左に△の中に ! マークの注意マークが表示されます。やっぱり、使えないのかと腹が据わりました。過去のブログ:
アップサイジング後にフォームを開くの where 式をどう変更したら良いのか
Access 2007 ADP で埋め込みマクロが動かなかったら
参考にしたサイト
ストアド プロシージャや関数に連結したフォームやレポートに WHERE 条件が適用されない
現象:「別の Access フォームなど、別のオブジェクトに表示される値を使用して Access のフォームやレポートをフィルタしようとしても、そのフィルタが適用されません。」となっていますが、機械の翻訳語は意味不明です。
このサンプルを参考して作ってみました。
- マクロの Where 式の部分(行)を削除します。
- ストアドプロシージャーに SELELCT 文を記載します。
- 新しく開くフォームの[フォーム・プロパティ]-[データ]の「データソース」プロパティにストアド・プロシージャー名を指定し、入力パラメーターに元となるフォームのフィールド・データをコンスタントに代入します。
ここ数日間苦戦したところは、VBAやストアドでプロシージャーをどのように作成するのかがわからなかったところです。参照したページを注意深く観察して、ストアド・プロシージャーはクエリと同じところで作成するのではと分かりましたが、ADPファイルでないと項目が出てきません。
Access 2007 ADP では、次のようにトスアド・プロシージャを作成します。
1.[作成]タブの[その他]グループの「クエリウィザード」コマンドをクリックすることで作成が始まります。
2.「新しいクエリ」ウィンドウの「テキスト ストアドプロシージャの作成」を選択し、OKをクリックします。
3. ストアド・プロシージャー・ウィンドウにサンプル・コーディングが記載されてきますが、下記に入れ替えます。(例)
CREATE PROCEDURE spProducts
@CatID int
AS
SELECT * FROM 商品 WHERE 区分コード = @CatID
RETURN
3.保存します。クエリ・オブジェクトに spProduct が作成されます。デザイン・モードで開くことができます。
4.MS SQL Server Management Studio Express 上では、該当データベースの「プログラミング」の「ストアドプロシージャー」に登録されました。右クリックして「変更」をクリックしたら中は見られましたので変更も可能です。ただし、Create から Alter に自動的に変更されています。
コメントする