#3 レコード/コントロール系

ここで使われるメソッド/アクション
  • GoToControl/コントロールの移動
  • ApplyFilter/フィルタの実行
  • ShowAllRecords/全レコードの表示
  • GoToRecord/レコードの移動
  • FindRecord/レコードの検索
  • FindNext/次を検索
  • Requery/再クエリ
  • GoToPage/ページの移動
  • SetValue/値の代入
ここで説明するDocmdオブジェクトの各メソッドは、フォームに表示されているレコードやコントロールを操作するためのものです。したがって、通常はフォームのイベントプロシージャ、あるいはそこから呼び出され標準モジュールのプロシージャで使用します。

特定のコントロールにフォーカスを移動する

'テキストボックス"郵便番号"にフォーカスを移動します
DoCmd.GoToControl "郵便番号"

各コントロールのメソッドである"SetFocus"を使うこともできます。

    Me!郵便番号.SetFocus

    標準モジュールから使う場合は次のようにします
    Forms!frm社員マスタ!郵便番号.SetFocus

フォームに表示されるデータにフィルタをかける

'フォームの表示データを、東京都に住む社員だけに切り替えます
DoCmd.ApplyFilter "", "[都道府県]='東京都'"

'フォームの表示データを、シメイが"ア"〜"オ"で始まる社員だけに切り替えます
DoCmd.ApplyFilter "", "[シメイ] Like '[ア-オ]*'"

フォームのフィルタを解除する

'"ApplyFilter"メソッドでの抽出を解除して、すべてのレコードを表示します
DoCmd.ShowAllRecords

レコードを次に進める

'カレントフォームのレコードを1レコード次に進めます
DoCmd.GoToRecord , , acNext

'フォーム"frm社員マスタ"のレコードを1レコード次に進めます
DoCmd.GoToRecord acForm, "frm社員マスタ", acNext

'カレントフォームのレコードを10レコード次に進めます
DoCmd.GoToRecord , , acNext, 10

レコードを前に戻す

'カレントフォームのレコードを1レコード前に戻します
DoCmd.GoToRecord , , acPrevious

'カレントフォームのレコードを10レコード前に戻します
DoCmd.GoToRecord , , acPrevious, 10

レコードを先頭に戻す

'カレントフォームのレコードを先頭レコードに移動します
DoCmd.GoToRecord , , acFirst

レコードを最後に進める

'カレントフォームのレコードを最終レコードに移動します
DoCmd.GoToRecord , , acLast

レコードを新規レコードに進める

'カレントフォームのレコードを新しいレコードに移動します
DoCmd.GoToRecord , , acNewRec
'フォーム"frm社員マスタ"のレコードを新しいレコードに移動します
DoCmd.GoToRecord acForm, "frm社員マスタ", acNewRec

レコードを任意のレコード番号に移動する

'カレントフォームのレコードを先頭から15番目のレコードに移動します
DoCmd.GoToRecord , , acGoTo, 15

レコードの検索を行う

'テキストボックス"氏名"の内容が"鈴木"で始まるレコードを検索します
DoCmd.GoToControl "氏名"
DoCmd.FindRecord "鈴木", acStart

'テキストボックス"氏名"の内容に"木"を含むレコードを検索します
DoCmd.GoToControl "氏名"
DoCmd.FindRecord "木", acAnywhere

※FindRecordメソッドでは、事前にGoToControlメソッドやSetFocusメソッドを使って、検索の対象となるコントロールにフォーカスを移動しておくことが必要です。

次のレコードを検索する

'「レコードの検索」で実行した条件に合う、次のレコードを検索します
DoCmd.FindNext

フォームを再クエリーする

'カレントフォームのレコードソースを再クエリーします
DoCmd.Requery

※通常はDocmdオブジェクトのメソッドではなく、より処理が高速なフォームのRequeryメソッドを使用します。
  例:Me.Requery

特定のコントロールを再クエリーする

'コンボボックス"cbo国名"を再クエリーします
DoCmd.Requery "cbo国名"

※通常はDocmdオブジェクトのメソッドではなく、より処理が高速なコントロールのRequeryメソッドを使用します。
  例:cbo国名.Requery

改ページコントロールのページ移動を行う

'フォームの2ページ目に移動します
DoCmd.GoToPage 2

コントロールに値を代入する

マクロには「SetValue/値の代入」というアクションがありますが、Docmdオブジェクトにはこれに対応したメソッドはありません。VBAでコントロールに値を代入するには、そのコントロールのプロパティに直接、値を代入します。

'テキストボックス"数量"に"1000"を代入します
Me.数量.Value = 1000

※「Me」は自分自身のフォームを表しています。フォームのモジュールでこの式を実行する場合は省略することができます。
※「Value」プロパティはテキストボックスコントロールの「デフォルトプロパティ」です。デフォルトプロパティとは、それが省略された場合に適用されるプロパティのことです。したがって、「.Value」という指定は省略することができます。

 省略例: 数量 = 1000



| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved