Access VBA質問箱 IV

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

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


1063 / 9994 ←次へ | 前へ→

【12233】Re:レコードの検索
回答  かるびの  - 12/12/29(土) 1:44 -

引用なし
パスワード
    第1に、FindFirstメソッドの引数の書き方がまずいですね。

>.FindFirst [指定年度] & [指定コード] = Me!日付コード

 まず、Me!に続くのは、フォーム上のコントロールの名前でなければなりません。
 日付コードはクエリのフィールド名であって、コントロール名ではありません。


 次に、.FindFirstメソッドの引数は、文字列でなければなりません。
 上記コードでは、引数に条件式が指定されています。
条件式は、それが評価されると、True又はFalseが返るわけですが、
True又はFalseという値は文字列ではありません。


 さらに、.FindFirstメソッドの引数は、条件式を文字列として指定します。
 文字列とするのだから、ダブルコーテーションで括られている必要があります。
   rs.FindFirst "地区ID = 123"
 
 条件式は、通常、「フィールド名=値」という形をとります。 
 ただ、値のところの書き方は少しやっかいです。
 フィールドが数値型ならば、
例えば「会員ID = 4567」のように何も括りませんが、
テキスト型ならば、例えば「都道府県 = "長野県"」のように
ダブルコーテーションで括り、
日付型ならば、例えば「受注日 = #2012/12/29#」のようにシャープで括ります。

 文字列としてダブルコーテーションで括られたものの中で、
さらにダブルコーテーションで括る必要がある場合、
内側のダブルコーテーションは、ダブルコーテーションの二重使いとします。
   "市町村 = ""栄村"" "

 条件式の値として、コントロールの値を使う場合、
コントロール名を文字列に含ませてはいけません。
コントロール名はダブルコーテーションの外に出す必要があります。
例えば、「誕生日」が日付型のフィールド名、
「txt生年月日」がテキストボックス名だとすると、
    "誕生日=#" & txt生年月日.Value & "# "
とします。
 なお、コントロールのValueプロパティは、
これを省略する書き方する人が大部分ですが、
私は、特に初級者は、省略してはいけないと思います。
省略しないことにより、オブジェクトとプロパティの関係を
より意識することになりますし、
数か月後にコードを見直したとき、「.Value」が付いていれば、
それが変数ではなく、オブジェクトだということが一目でわかります。


 フィールドのデータ型により条件式「フィールド名=値」における値の書き方が
異なるわけですが、問題は、「日付コード」フィールドが何型のフィールドなのかということです。
これは自分で考えてみてください。
ヒントは、&演算子です。


 第2に、FindFirstメソッドを実行しただけでは、
その結果はフォームには表示されません。
 FindFirstメソッドは、見つかったレコードを
レコードセットにおけるカレントレコードにするだけです。
 FindFirstメソッドの結果をフォームに反映させるためには、
フォームのカレントレコードが
レコードセットのカレントレコードとなるようにする、
つまり、フォームとレコードセットを同期させる
という操作が必要になります。
 これについては、BookMarkプロパティを調べてみてください。


 第3に、蛇足ですが、年とコードから検索したいという場合、
普通は、日付コードのようなフィールドを設けることはしません。
普通は、FindFirstメソッドの引数たる条件式に複数の条件式を入れ込みます。
   rs.FindFirst "都道府県 = ""長野県"" AND 受注日 = #2012/12/29# "

817 hits

【12232】レコードの検索 12/12/28(金) 11:11 質問[未読]
【12233】Re:レコードの検索 かるびの 12/12/29(土) 1:44 回答[未読]
【12235】Re:レコードの検索 13/1/8(火) 12:36 質問[未読]
【12236】Re:レコードの検索 13/1/8(火) 16:06 質問[未読]
【12237】Re:レコードの検索 かるびの 13/1/9(水) 2:54 回答[未読]
【12239】Re:レコードの検索 13/1/9(水) 11:35 質問[未読]
【12240】Re:レコードの検索 13/1/9(水) 12:59 発言[未読]
【12241】Re:レコードの検索 13/1/9(水) 13:31 質問[未読]
【12242】Re:レコードの検索 かるびの 13/1/10(木) 1:25 回答[未読]
【12243】Re:レコードの検索 13/1/10(木) 9:46 質問[未読]
【12244】Re:レコードの検索 13/1/10(木) 12:52 お礼[未読]

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