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
- On Errorステートメントを使って、エラー処理ルーチンを有効にします。この後の処理でエラーが発生すると、プログラムはエラー処理ルーチンへ移ります。
- エラーが発生しなかったときは、ここで、プロシージャを終了します。
- エラーが発生すると、「Err_コマンド1_Click:」以降の処理を行います。この「Err_コマンド1_Click:」がここでのエラー処理ルーチンの名前です。ここでは、レコードを移動できないことを、メッセージボックスで伝えるようにしています。
上のメッセージボックスはDescriptionプロパティによって、Accessが表示している文章ですが、これを通常のメッセージボックスの使い方のように、こちらでメッセージ内容やタイトルを指定して表示することもできます。
- Resumeステートメントで、終了ルーチンへ移動して、プロシージャを終了します。
コメントフィード
トラックバックURL : https://gyoumuka.cyou/wp-trackback.php?p=3122