社内で素人アプリケーション開発担当を買って出ているばか者です。
どうかこの私を助けてください。
商品マスターのようなものをサブフォームにして作っております。
メインフォームのコンボボックスの更新後処理イベントプロシージャに、そのサブフォームへDoCmd.ApplyFilterを実行させようとしてもうまく行きません。
「実行時エラー”2491”フォームがテーブルまたはクエリーを元に作成されていないので、このアクションは向こうです。」となってしまいます。ツールバーの選択フィルター使うとできるのですがイベントプロシージャでは不可能なのでしょうか。ご指導の程宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サブフォームにフィルタを適用するには、以下のようにします。



Private Sub コマンド1_Click()
  'フィルタを設定(IDが10以下)
  Me.サブフォーム名.Form.Filter = "ID <= 10"
  '[フィルタの使用]プロパティを「はい」に設定
  Me.サブフォーム名.Form.FilterOn = True
End Sub

Docmd.ApplyFilter を使ったやり方も試してみたんですが、どうもうまく出来ませんでした。ちょっとした工夫でいけると思うんやけどなぁ。
    • good
    • 0

ツールバーの選択フィルターで動作するのであれば、


VBA(モジュール)からDoCmd.DoMenuItemまたは
DoCmd.RunCommandで代替出来ると思います。

DoCmd.RunCommand acCmdFilterBySelection
で選択フィルターと同じ動きをすると思います、
# 試していないので何ともいえませんが、、、
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2007  DoCmd.ApplyFilterについて

お世話になっております。
このように書けばコード1のみが抽出されますが、1以上にしたい場合はどのように書けば良いのでしょうか。
(0以外を指定したいと思います)

DoCmd.ApplyFilter , "(コード Like '1')"

ご教授いただければ幸いです。よろしくお願いいたします。

Aベストアンサー

> 1以上にしたい場合はどのように書けば良いのでしょうか。
> (0以外を指定したいと思います)

「コード」フィールドのデータ型が、「数値型」か「テキスト型」かによって、
式が若干変わります。
(なお、上記の質問文から、負の数および小数のコードはないと判断)

【数値型の場合】
 DoCmd.ApplyFilter , "コード > 0"
または
 DoCmd.ApplyFilter , "コード >= 1"

【テキスト型の場合】
 DoCmd.ApplyFilter , "CLng(コード) > 0"
または
 DoCmd.ApplyFilter , "CLng(コード) >= 1"

なお、万が一Null(空白)のデータがある場合は、それを表示しないなら
 DoCmd.ApplyFilter , "CLng(Nz(コード, 0)) > 0"
表示するなら
 DoCmd.ApplyFilter , "CLng(Nz(コード, 1)) > 0"
とします。
(CLng関数は指定したデータの型を長整数型に、
 Nz関数は1番目に指定したデータ(上では「コード」)を、2番目に指定
 したデータ(上では「0」や「1」)に、それぞれ変換する関数です)


※データ型がテキスト型で、数値(長整数型)に変換できないデータが
  1件でもあった場合はエラーとなり、上記の式では検索できません。

> 1以上にしたい場合はどのように書けば良いのでしょうか。
> (0以外を指定したいと思います)

「コード」フィールドのデータ型が、「数値型」か「テキスト型」かによって、
式が若干変わります。
(なお、上記の質問文から、負の数および小数のコードはないと判断)

【数値型の場合】
 DoCmd.ApplyFilter , "コード > 0"
または
 DoCmd.ApplyFilter , "コード >= 1"

【テキスト型の場合】
 DoCmd.ApplyFilter , "CLng(コード) > 0"
または
 DoCmd.ApplyFilter , "CLng(コード) >= 1"

な...続きを読む

Qサブフォームを利用したクエリーの抽出条件について

環境:ACCESS2003&XP Pro
メインフォーム&サブフォームのフォームを作成しています。
このサブフォームにテキストボックスをつけ、このテキストボックスの値を抽出条件にしたクエリーを作成しましたが、抽出条件がうまくいかないようで
クエリー実行時にパラメータを聞いてきます。
クエリーの抽出条件は
forms![メインフォーム名].[サブフォーム名].[テキストボックス名]
です。
上記の書き方がおかしいのだと思います。
よろしくお願いします。

Aベストアンサー

forms![メインフォーム名].[サブフォーム名].Form.[テキストボックス名]
ではどうでしょうか?

Q★アクセス2002★DoCmd.ApplyFilterの記述

先日同じような質問をして回答頂きましたが再度お願いします。
住所検索フォームを作成中です。

住所検索フォームにテキストボックス[検索値]を配置して、[検索値]に入力した語句で始まるレコードを表示させています。[抽出開始]コマンドボタンに下記の様に記述していますが、これだと[住所]の頭の文字でしか抽出できません。[検索値]に入力する語句は必ずしも頭の文字ではないので、途中の一部の語句でもヒットするようにしたいのですが、上手く記述できずに困っています。
DoCmd.ApplyFilter , "[住所] Like '" & Forms![住所テーブル一覧]![検索値] & "*'"

Aベストアンサー

未検証ですが・・・

DoCmd.ApplyFilter , "[住所] Like '*" & Forms![住所テーブル一覧]![検索値] & "*'"

・・・ではいかがですか?

QDoCmd.ApplyFilter引数を文字にする

いつもお世話になっています。

以下のフィルタを作成して使っています。

Private Sub to12_Click()
DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=2)"
DoCmd.OpenForm "F_登録"
Set Forms!F_登録.Recordset = Me.Recordset
End Sub

DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=2)"
の [社員番号]にテキストを使用することになりました。
元テーブルも数値型からテキスト型に変更したのですが、
こうした検索の式に反映するにはどうしたらいいのでしょうか。

お力添えをお願いいたします。

Aベストアンサー

> DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=2)"

 DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]='2')"

あるいは

 DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=""2"")"

前者の方が分かりやすいでしょう。

ちなみに、日付時刻なら

 [日付]=#2011/7/15#

です。

QAC2000でフォームから入力したデータをサブフォームに表示

ID 商品名 単位 単価で商品マスタフォームを作っています。このフォーム内にサブフォームを作っておいて
データが入力するたびにサブフォームへ表示させたいのですが、このときの条件としてID(オートナンバー)を降順(最新のデータが一番上になる)・データシート形式にしたいと思います。
T_商品(テーブル名)
Q_商品(IDを降順としたクエリ)
MF_商品(各入力テキストボックスがあるフォーム)
SF_商品(MF_商品に貼り付けるサブフォーム)
降順にすると一番若いIDのデータだけがサブフォームに
表示されるのです。
requeryは必要なのでしょうか?
よろしくお願い致します。

Aベストアンサー

MF_商品(各入力テキストボックスがあるフォーム)
SF_商品(MF_商品に貼り付けるサブフォーム)
のRecordSourceは両方ともQ_商品ですか?
そうだとすると、
MF_商品で入力するたびに、Q_商品のRequeryが必要です。さらにSF_商品をRefleshする必要があります。
ただ、MF_商品での変更が反映されるのは、レコード移動後になりますので、テキストボックスに入力したデータを反映させるには、Me.Refreshなどを実行して入力値をテーブルに保存しなければなりませんし、それらの処理を実行するとレコードを移動してしまうので、クローンやブックマークを使って元に戻る処理を加えなければならなくなります。結構面倒です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報