MS Access でストップウォッチを作成する方法があるかどうかは誰にもわかりませんか? 誰かが特定のフォームの「新しい」レコードをクリックした時点でストップウォッチを「開始」し、フォームに入力された情報を保存した時点でストップウォッチを「終了」させる方法を探していますか? 理想的には、テーブルの各レコードに対して、フォームの作成にかかった時間を表示する列を追加したいと考えています。
提案/アイデアはありますか?
これを試してくださいonClickを「new」に設定し、単純なifステートメントを挿入して、保存アクションで停止できるようにすることができます
新しいボタンをクリックすると、フォームのOn Current
イベントが発生します。NewRecord
フォームのプロパティを調べることで、現在のレコードが新しいレコードか既存のレコードかを区別できます。
という名前の Long Integer フィールドseconds_for_insert
をテーブルに追加しました。次に、レコード ソースがそのテーブルに基づくクエリであるフォームを作成しました。フォームには、レコード ソースフィールドtxtSeconds_for_insert
にバインドされたテキスト ボックス名が含まれています。seconds_for_insert
ここに私のフォームのコードがあります:
Option Compare Database
Option Explicit
Dim blnNewRecord As Boolean
Dim dteStartTime As Date
Private Sub Form_BeforeInsert(Cancel As Integer)
Me.txtSeconds_for_insert = DateDiff("s", dteStartTime, Now())
End Sub
Private Sub Form_Current()
blnNewRecord = Me.NewRecord
If blnNewRecord Then
dteStartTime = Now()
End If
End Sub
ソース テーブルにオートナンバー型フィールドが含まれている場合、バインドされたコントロールのいずれかに何かを入力するとすぐに、Access によって新しいレコードが保存されます。その「新しい」レコードに追加する残りのデータは、挿入操作ではなく更新で保存されます。したがって、そのような状況では、Form_BeforeUpdate
代わりに を使用しForm_BeforeInsert
ます。
Private Sub Form_BeforeUpdate(Cancel As Integer)
If blnNewRecord Then
Me.txtSeconds_for_insert = DateDiff("s", dteStartTime, Now())
End If
End Sub
これtxtSeconds_for_insert
が機能するために、テキスト ボックスを有効にしたり、表示したりする必要はありません。ユーザーの注意をそらさないようにするため、またはその情報を追跡していることをユーザーに知られたくない場合は、Visible = No に設定することをお勧めします。