3

私は3つの編集可能な日付/時刻フィールドを持っています。最初の2つは(field1とfield2)、スタイル:カレンダー/時刻コントロールです。それらの両方が時間を示しています:時間と分、例えば:15:51。

field1とfield2の違いを示したい3番目のフィールド(編集可能)もあります。

例:field1が14:41でfield2が14:30の場合、field3=00:11です。field1-field2を試しましたが、機能していません。フォームには自動更新フィールドプロパティがあります。ありがとう!

4

3 に答える 3

3

3 番目のフィールドは、編集可能ではなく、計算する必要があります。

何らかの理由で編集可能にする必要があり、他の 2 つのフィールドが変更されたときに更新する場合は、次のようにします。

新しいフィールドを作成し、表示用に計算して非表示にします。こんな式にしてください

@If(field1=null | field2=null; @Return(""); "");
seconds := field1-field2;
hours := @Integer(seconds/3600);
minutes := @Modulo(@Integer(seconds/60); 60);
output := @Right("00" + @Text(hours); 2) + ":" + @Right("00" + @Text(minutes); 2);
@setfield("field3"; output);
@Command([ViewRefreshFields]);
""

フィル

于 2012-09-13T13:46:26.173 に答える
1

私はこのコードを書きました。はるかに簡単です...

フィールド 'StartTime' および 'EndTime': 日付/時刻を入力し、Calendar/Time コントロールを使用して、時刻のみを表示するように設定します。「値の変更後に Exiting/OnChange イベントを実行する」プロパティを確認します。Exiting イベントは次のようになります。

Sub Exiting(Source As Field)
    Call UpdateDuration()
End Sub

フィールド「期間」: 編集可能なテキスト フィールドですが、非表示です。

フィールド「dspDuration」: 表示テキスト フィールド用に計算されます。値は単なる「期間」です (引用符なし)。

次に、フォームのグローバル セクションに次のコードを追加します。

Sub UpdateDuration()
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim starttime As NotesDateTime
    Dim endtime As NotesDateTime
    Dim duration As Integer

    Set uidoc = ws.CurrentDocument
    '*** Exit if not both times are entered
    If uidoc.FieldGetText("StartTime") = "" Then
        Exit Sub
    Elseif uidoc.FieldGetText("StartTime") = "" Then
        Exit Sub        
    End If
    '*** Calculate duration in seconds and update field
    Set starttime = New NotesDateTime( uidoc.FieldGetText("StartTime") )
    Set endtime = New NotesDateTime( uidoc.FieldGetText("EndTime") )
    duration = endtime.TimeDifference( starttime )
    Call uidoc.FieldSetText("Duration", Cstr(duration) )
    Call uidoc.Refresh()
End Sub

それでおしまい。簡単ですね。出力 (デュレーション) を変更したい場合は、簡単に変更できます。おそらく、60 で割って分単位に変更できます。

スクリーンショット

于 2012-09-14T19:22:47.373 に答える
0

2 つの日時フィールドの差を取得していることを確認してください。必要に応じて、@TextToTime 式を使用してテキストを日時型に変換できます。

次に、2 番目の日付から最初の日付を引くだけで、差が秒単位で得られます。

それを 60 で割ると、分単位の差が得られます。

于 2012-09-13T13:19:30.540 に答える