Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


632 / 9994 ←次へ | 前へ→

【12672】Re:一つの条件で複数検索
回答  かるびの  - 14/12/20(土) 0:10 -

引用なし
パスワード
    いろいろな掲示板でいろいろな人の質問を見ていて思うんですが、
フォームとテーブルが全く別個のものであるというのを意識している人が
少ないんですよね。
 よく見かけるのが、フィールドとテキストボックスを混同しているものです。
「フォームに××フィールドを配置する」など言ってみたり、
「△△テキストボックスのデータ型は日付型だ」などという表現を
よく見かけますが、いずれも間違いです。
 フィールドはテーブル又はクエリの要素であり、
フォームにフィールドという概念が入り込む余地はありません。
 またテキストボックスにデータ型はありません。
 上記の例について正確な言い回しをすれば、
「フォームに、××フィールドをコントロールソースとするテキストボックス配置する」
「△△テキストボックスのコントロールソースたる▲▲フィールドのデータ型は日付型だ」
となります。
 確かに、ウィザードでフォームを作ると、
テキストボックス名はフィールド名と同じになるので、両者を混同することはやむを得ない
とは思いますが、テキストボックス イコール フィールドだと思っていると、
どこかで行き詰まると思います。
 なので、少々厳しめにレコードソースやらコントロールソースやらを聞いてみた次第です。

 少し脱線しますが、テーブル(クエリ)とフォーム、
あるいはフィールドとテキストボックスの関係ですが、
テーブル(クエリ)とフォームを結び付けるのが「レコードソース」プロパティです。
レコードソースにテーブルを指定してやることで、
当該テーブルのデータをフォームで表示できるようになります。
 フィールドとテキストボックスを結び付けるのが「コントロールソース」プロパティです。
レコードソースたるテーブル(クエリ)のフィールドをコントロールソースに指定してやることで、
テキストボックスに当該フィールドの値を表示できるようになります。


 さて、本題です。
>> レコードソースにはどんなフィールドがありますか。
 これの答えがないですね。
 質問の仕方を変えると、Q顧客名1にはどんなフィールドがありますかということです。

>> コード1、コード2、コード3はテキストボックスだと思いますが、
>>それぞれのコントロールソースは何ですか。
 これについても、答えがないですね。
 それぞれのテキストボックスについて、
プロパティシートの「データ」タブの「コントロールソース」には、何が設定されていますか
ということです。


 今回のレスは、ここで終わりにしてもいいんですが、折角コードを示してくれたので、
もう少し先まで進めたいと思います。

>  DoCmd.ApplyFilter "", "[Q顧客名1]![顧客番号] = [Forms]![F顧客一覧]![顧客番号入力]"
 ApplyFilterって使ったことがないのでわからないのですが、
ApplyFilterは、例えば、クエリをデータシートビューで開いているときに、
メニューからレコード、フィルタと選択して(ちなみに当方はアクセス2003です)
行う動作をマクロで行うものだと思います。
 この場合、データシートビューの表示上だけでレコードを絞り込んでいるに過ぎず、
クエリ自体では何らの絞り込みもされていません。
 だから、ApplyFilterを使っても、フォームでのレコードの絞り込みはできないと思います。

 フォームでレコードの絞り込みを行うには、通常、
フォームの Filter プロパティと FilterOn プロパティを使います。

 Filter プロパティでは、条件式を文字列として指定する必要があります。
条件式の基本形は、「フィールド名 = 値」です。
 フィールドが数値型の場合は、値は何も囲いません。例えば、「数量 = 123」です。
 フィールドがテキスト型の場合は、ダブルコーテーションで囲います。
例えば、「都道府県 = "青森県"」です。
VBAのコード中では、文字列であることを示すダブルコーテーションと区別するために
シングルコーテーションで値を囲います。
例えば、「strWhere = "市町村 = '長野市'"」です。
 フィールドが日付時刻型の場合は、シャープで囲います。
例えば、「受注日 = #2014/12/19#」です。
 条件式を2つ以上指定したい場合は、条件式を AND 又は OR でつなげた文字列にします。
例えば「数量 = 234 AND 都道府県 = "岩手県"」です。

501 hits

【12669】一つの条件で複数検索 kok 14/12/17(水) 14:37 質問[未読]
【12670】Re:一つの条件で複数検索 かるびの 14/12/17(水) 23:19 回答[未読]
【12671】Re:一つの条件で複数検索 kok 14/12/19(金) 11:49 質問[未読]
【12672】Re:一つの条件で複数検索 かるびの 14/12/20(土) 0:10 回答[未読]
【12674】Re:一つの条件で複数検索 kok 14/12/20(土) 10:20 発言[未読]
【12675】Re:一つの条件で複数検索 かるびの 14/12/21(日) 1:25 回答[未読]
【12677】Re:一つの条件で複数検索 kok 14/12/24(水) 9:52 発言[未読]
【12678】Re:一つの条件で複数検索 かるびの 14/12/25(木) 0:09 回答[未読]
【12679】Re:一つの条件で複数検索 kok 14/12/25(木) 15:54 発言[未読]
【12680】Re:一つの条件で複数検索 かるびの 14/12/26(金) 0:41 回答[未読]
【12684】Re:一つの条件で複数検索 kok 15/1/15(木) 10:00 お礼[未読]

632 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free