- ベストアンサー
Accessのオートナンバー取得方法とは?
- Access97を使用して、営業の訪問日報を作成する際に、親フォームと子フォームを連携させる方法を教えてください。
- 親フォームでフィールドを更新せずに子フォームを入力した場合、オートナンバーを取得する方法について詳しく教えてください。
- Accessのオートナンバー取得について、質問がわかりづらくて申し訳ありません。お手数をおかけしますが、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
『活動日』への既定値を廃止し、代わりに「値の代入」(と「レコードの保存」)とするのが よいのではないでしょうか。 「値の代入」を行うイベントとしては、「レコードの移動時」か、子フォームの「フォーカス 取得時」辺りが無難かと思います。 但し、一長一短がありますので、当該日報の使い勝手としてどちらがよいか見極める 必要があります。 ※ユーザーが行う作業を追加してもよいなら、コマンドボタンのクリックで行うのが ベストかと思います。 <レコード移動時で対応した場合の難点> 新規レコードへの移動と同時にレコードが保存されてしまうので、 そのレコードが不要だった場合、削除してやる必要がある。 (なお、オートナンバーの都合上、削除をするとその分は欠番に なります: 削除後、次の追加前に、メニューで「ツール(T)→データベース ユーティリティ(D)→最適化(C)」を選ぶなどして最適化すれば、 次回追加時の欠番は回避可能) <サブフォームのフォーカス取得時で対応した場合の難点> サブフォームにフォーカスがある状態で、親フォームのレコード セレクタや移動ボタン(→フォーム最下にあるレコード番号を表示 する場所とその両脇に並んだボタン)で移動すると、コントロール の移動がないため、「フォーカス取得時」イベントが発生しない。 以下、レコード移動時の場合です(本体部分の4行は、どのイベント に割り当てた場合でも同じですが): Private Sub Form_Current() '新規レコード時のみ、今日の日付を入力してレコードを保存 If Me.NewRecord Then 日付 = Date() RunCommand acCmdSaveRecord End If End Sub
お礼
適切なご回答ありがとうございます。 「値の代入」は、一長一短あるようですがとても参考になりました。 色々試して見ます。 >※ユーザーが行う作業を追加してもよいなら、コマンドボタンのクリックで行うのが ベストかと思います。 やっぱりこの方法が一番スッキリしますかね。 とてもいいヒントをいただきましたことお礼申し上げます。