このエントリーをはてなブックマークに追加

DoCmd.GoToRecord メソッド

新規レコードでフォームを開く

こちらは、Accessで作成したデータ入力用フォームです。フォームを開くとき、DoCmd.GoToRecordメソッドを使って、新規レコードをカレントレコードにして、フォームを開くことができます。

DoCmd.GoToRecordメソッド

<構文>
DoCmd.GoToRecord [オブジェクトタイプ][,オブジェクト名][,レコード][,オフセット]
<構文(英語表記)>
DoCmd.GoToRecord [ObjectType][,ObjectName][,Record][,Offset]
引数 データ型 内容
ObjectType(省略可) AcDataObjectType オブジェクトの種類を指定します。
ObjectName(省略可) Variant型 オブジェクトの名前を表す文字列式。
Record(省略可) AcRecord クラス カレントレコードにするレコードを指定します。
Offset(省略可) Variant型 移動するレコード数を表す数式を指定します。

第3引数(Record)で、移動するレコードの種類を指定します。

引数 内容
acFirst 先頭のレコードをカレント レコードにします。
acGoTo 指定したレコードをカレント レコードにします。
acLast 最後のレコードをカレント レコードにします。
acNewRec 新しいレコードをカレント レコードにします。
acNext 次のレコードをカレント レコードにします。
acPrevious 前のレコードをカレント レコードにします。

コードの記述

フォームの読み込み時イベントにコードを書きます。

Private Sub Form_Load()

'新規レコードに移動
DoCmd.GoToRecord acDataForm, "F_main", acNewRec

'最初に入力するコントロールにカーソルを合わす
Me.業者ID.SetFocus

End Sub

DoCmd.GoToRecordのあとに、半角スペースを入れると、自動メンバー表示が出るので、acDataFormを選択して、TABキーを押します。

「,」(カンマ)を入力して、フォーム名をダブルコーテーションで括って入力します。そのあと「,」(カンマ)を入力すると、自動メンバー表示が出るので、acNewRecを選択して、TABキーを押します。

最後に、フォームを開いたときに、SetFocusメソッドで、最初に入力するテキストボックス[業者ID]にカーソルを合わせるようにしています。

「戻る」ボタンと「次へ」ボタン

フォームに「戻る」/「Prev」ボタンを設置し、ボタンのクリック時イベントにコードを書いて、レコードがひとつ前に移動するようにしています。第1引数のObjectTypeと第2引数のObjectNameは、省略すると、今使用しているフォームを指定することになるので、ここでは、省略しています。

Private Sub コマンド1_Click()

'ひとつ前のレコードに移動
DoCmd.GoToRecord , , acPrevious

End Sub

フォームに「次へ」/「Next」ボタンを設置し、ボタンのクリック時イベントにコードを書いて、レコードがひとつ後に移動するようにしています。

Private Sub コマンド2_Click()

'ひとつ先のレコードに移動
DoCmd.GoToRecord , , acNext

End Sub

第4引数(Offset)を指定すると、その数を飛ばしてレコードを移動します。例えば、3番目のレコードにいるときに、次のコードを実行すると、6番目のレコードに移動します。

Private Sub コマンド2_Click()

'3つ先のレコードに移動
DoCmd.GoToRecord , , acNext, 3

End Sub

エラー処理/On Errorステートメント

カレントレコードが一番最初のレコードの状態で、先程コードを記述した「戻る」/「Prev」ボタンを押したとき、あるいは、カレントレコードが新規レコードの状態で、「次へ」/「Next」ボタンを押すと、それぞれ、それより先のレコードが存在しないので、実行時エラーが発生します。

これを回避するために、「戻る」/「Prev」ボタンのクリック時イベントにエラー処理のコードを記述します。同様に「次へ」/「Next」ボタンのクリック時イベントにも、エラー処理のコードを記述します。

Private Sub コマンド1_Click()

'1)エラー処理を有効にする
On Error GoTo Err_コマンド1_Click

DoCmd.GoToRecord , , acPrevious
  
'2)終了ルーチン(ここで、プロシージャを抜ける)
Exit_コマンド1_Click:
    Exit Sub

'3)エラー処理ルーチン
Err_コマンド1_Click:
    MsgBox Err.Description

'4)終了ルーチンへ移動
    Resume Exit_コマンド1_Click

End Sub
  1. On Errorステートメントを使って、エラー処理ルーチンを有効にします。この後の処理でエラーが発生すると、プログラムはエラー処理ルーチンへ移ります。
  2. エラーが発生しなかったときは、ここで、プロシージャを終了します。
  3. エラーが発生すると、「Err_コマンド1_Click:」以降の処理を行います。この「Err_コマンド1_Click:」がここでのエラー処理ルーチンの名前です。ここでは、レコードを移動できないことを、メッセージボックスで伝えるようにしています。
    上のメッセージボックスはDescriptionプロパティによって、Accessが表示している文章ですが、これを通常のメッセージボックスの使い方のように、こちらでメッセージ内容やタイトルを指定して表示することもできます。
  4. Resumeステートメントで、終了ルーチンへ移動して、プロシージャを終了します。
このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントフィード

トラックバックURL : https://gyoumuka.cyou/wp-trackback.php?p=3122

PAGE TOPへ戻る