• ベストアンサー

【アクセスVBA】テーブルにフィルタをかけたい

Sub マクロ() DoCmd.OpenTable "Tテーブル", acViewNormal, acEdit DoCmd.ApplyFilter , "番号 = '123'" End Sub Tテーブルを開き、フィルタをかけたいのですが テーブルを開くまではできるのですが、 フィルタをかける行では 『ApplyFilter アクションの実行はキャンセルされました。』 になってしまいます。 DoCmd.OnFilter , "質問番号 = '0'" でもエラーになり、コードの実行すら行えません。 フォームではなくテーブルにフィルタをかけるにはどうすればいいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

普通に考えて・・・ > DoCmd.ApplyFilter , "番号 = '123'" > DoCmd.OnFilter , "質問番号 = '0'" の「番号」「質問番号」は、数字じゃなくて、数値じゃないの? だから、「'」で囲むのは不要!って、落ちじゃないかな?

uiyiuq
質問者

お礼

数値のときは「'」は不要なのですね。 ありがとうございます。 しかし DoCmd.ApplyFilter , "番号 = 123" ならエラーにならずに実行できるのですがフィルタはかけられませんでした。 DoCmd.OnFilter , "番号 = 0" だとエラーになってしまいます。

その他の回答 (2)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

#2です フィルタが掛からない?と、言う状況がどう言う状況なのか、判りませんが・・・ 「番号」と言うフィールドが無い?とか・・・ (表題が「番号」で、フィールド名は別物って事ね) Acc2000だと、漢字で始まるフィールド・コントロール等は、バグで挙動が怪しくて、動かない等 色々な要素が考えられます 後、確認不足だったのですが、当方Acc2002では、 > DoCmd.OnFilter , "番号 = 0" の、OnFilterは、DoCmdの命令群の中に存在しません ネットで調べても・・・そう言う命令が見当たりませんので、そもそもエラーが出て正解ですね

uiyiuq
質問者

お礼

DoCmd.OnFilter はエラーになるのですね。 ちょっとまだうまくいかないのでもっと調べてみます。 ありがとうございます。

回答No.1

何故テーブルにフィルターを掛けたいのでしょうか? フォームでフィルターを掛けて何か不都合が有るのでしょうか?

uiyiuq
質問者

お礼

テーブルでもできないかな~と思い質問してみました。