dポイントプレゼントキャンペーン実施中!

Access独習者です。

入門書で「物品貸出状況フォーム」を作成しました。
フォーム画面「物品貸出状況一覧表」の下に作ったコンボボックス289「大分類」とコンボボックス291「小分類」で
貸出状況を調べる物品を絞り込み一覧表に取り込みます。
コンボボックス「大分類」「小分類」の値集合ソースはそれぞれ「T_大分類」と「T_小分類」です。
Access2003では下記のコードとコンボボックス291「小分類」の値集合ソースのクエリビルダに組み込んだ
抽出条件「大分類番号[コンボ289]」で絞り込んだ物品が一覧表に表示されたのですが、Access2007では
コンボボックス289「大分類」を変更後コンボボックス291「小分類」が更新されません。

Access2003とAccess2007でなにか違いがあるのでしょうか。
お聞きするのに提示すべきコードなどそろっていないかもしれないのですが、ご助言いただければ助かります。
よろしくお願いいたします。

Private Sub コンボ289_AfterUpdate()
Me!コンボ291.Requery
End Sub

Private Sub コンボ291_AfterUpdate()
Me.Filter = "小分類番号=" & コンボ291
Me.FilterOn = True
End Sub

A 回答 (3件)

No.1、DexMachinaです。



> このSQL文をご覧になってお気づきの点がありましたら

SQL自体に問題はないと思います。
ただ、こちらで動作確認をしている中で、ちょっと気になる点がありましたので、
以下の点、確認してみてください。
(いずれも、動作確認中の自分の失敗から(汗))

I)同一PCに2003/2007を共存させている場合、2007起動時に表示される
 「Microsoft Office ○○を構成しています...」などのダイアログは、
 必ずそのまま処理を実行させてください。
 (2003で作成したフォームを2007側でインポートしようとしたところ、「カレント
  レコードがありません」という、この時点ではちょっと考えにくいエラーが発生
  したので・・・)

II)マクロが有効になっているかを確認してください。
 リボンのすぐ下に添付画像のようなボタンが出ている場合、VBAは停止して
 いますので、再クエリが実行されません。
 この『オプション』ボタンをクリックして『Microsoft Office セキュリティ オプション』
 ダイアログで、「このコンテンツを有効にする」をオンにしてOKボタンをクリック
 すれば、マクロ・VBAが有効になります。

 なお、毎回この操作を行うのが面倒なようでしたら、自動でマクロを有効にする
 フォルダを作成しておき、データベースファイルをそちらに移動します。
 上記フォルダの設定は、以下の操作でできます:
  1)アプリケーション左上の『Officeボタン』を押す
  2)表示されたメニューの最下方にある『Accessのオプション(I)』をクリック
  3)『Accessのオプション』ダイアログが表示されるので、左端のタブ(?)から
   「セキュリティ センター」を選択
  4)右下にある『セキュリティ センターの設定(T)』ボタンをクリック
  5)『セキュリティ センター』ダイアログが開くので、左端のタブから「信頼できる
   場所」を選択
  6)『新しい場所の追加(A)』ボタンをクリックして、適当なフォルダを指定
 ・・・以上(というか以下略(汗))です。


これでだめだとすると、後はAccess2007で新規ファイルを作成して、元のファイル
から全てのオブジェクト(テーブルやフォームなど)をインポートしてみる、ぐらいしか
対処を思いつきません(汗)
(インポートは『外部データ』リボンの『インポート』から行えます)
「Access2003とAccess200」の回答画像3
    • good
    • 0
この回答へのお礼

DexMachina様
再度の丁寧なご回答感謝いたします。
画像まで添付いただいて初心者の私にもすぐわかりました。
結果としてご指摘のとおり、「セキュリティの警告」がでておりましたので、オプションで「このコンテンツを有効にする」にしたらあれほど悩んでいたことが解決しました。
とてもうれしいです。
本当にありがとうございました。

お礼日時:2009/09/10 21:01

これじゃないでしょうか?



Access 2007 のフォームでフィルタを実行する場合、抽出結果にフィルタが反映されない
http://support.microsoft.com/kb/941800/ja
    • good
    • 0
この回答へのお礼

banaron様
ご回答感謝いたします。
ご回答で紹介してくださったサイトを見た瞬間「これで解決する」と強い期待を持ったのですが結果はだめでした。
2007のフォームデザインのプロパティで読み込み時のフィルタ使用を「いいえ」にしても、いったん閉じてやり直してもおなじです。
しかし、コードに書かれているフィルタ作業に2007のフィルタ機能が影響していることは間違いないように感じました。
ちなみに2003ではフォームデザインのプロパティで「フィルタの使用」は「はい」の状態で正常に動作しています。
いづれにせよアドバイスくださってありがとうございました。

お礼日時:2009/09/05 17:38

> 値集合ソースはそれぞれ「T_大分類」と「T_小分類」です。



名前の先頭の文字からすると、それぞれテーブルということで
よろしいでしょうか。
そうだとすると、大分類(コンボ289)の更新に合わせて再クエリ
(Requery)を行っても、テーブルの内容自体は変わらないため、
小分類(コンボ291)のリストの内容は変化しないと思います。
(Access2003かAccess2007に関係なく)

念のため、Access2003での小分類(コンボ291)の値集合ソースが、
クエリまたはSQL文(=クエリビルダで作成される、「Select ~」で
始まる文)になっていないか、確認してみて下さい。

とりあえず、大分類(コンボ289)の更新後イベントに、ご提示の
コードが組まれているのでしたら、小分類(コンボ291)の値集合
ソースを、以下のSQL文に変えれば、動作するかと思います:

Select * From T_小分類 Where [大分類ID]=[コンボ289];

【注意点・前提事項】
・「T_小分類」のフィールド構成が不明のため、全フィールド(*)
 指定にしています。
・「T_小分類」に「大分類ID」フィールドがあり、これによって
 「T_大分類」のレコードとの関連性を記録、と想定しました。


・・・以上です。
    • good
    • 0
この回答へのお礼

DexMachina様
さっそくのご回答感謝いたします。
教えていただくために必要な項目が欠如していて大変失礼いたしました。
ア T_はテーブルをさします
イ T_大分類のフィールドは 番号 大分類名
  T_小分類のフィールドは 番号 小分類名 大分類番号
  です。
ウ 小分類の値集合ソースのクエリビルダのSQL文は次の通りです。

SELECT 小分類テーブル.小分類番号, 小分類テーブル.小分類, 小分類テーブル.大分類番号 FROM 小分類テーブル WHERE (((小分類テーブル.大分類番号)=[コンボ289]));

これはAccess2003も2007も同じですがなぜ2007では小分類が更新されないのでしょうか。
何回も恐縮ですがこのSQL文をご覧になってお気づきの点がありましたらご助言いただけたら幸いです。
よろしくおねがいいたします。

お礼日時:2009/09/05 13:20

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