Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: wod am 29.07.02 - 08:58:51

Titel: LS: (Gesamt-)zeit berechnen
Beitrag von: wod am 29.07.02 - 08:58:51
Hi, ich bin Lotus neuling und bekomme da etwas in der Programmierung nicht hin.

ich habe ein Datumsfeld (tStart) und ein Datumsfeld (tEnd) , in diesen beiden feldern werden Uhrzeiten gespeichert. Ich habe noch ein integerFeld (iLength).

Mein ziel ist es jetzt das in einem feld die Gesamtzeit angezeigt wird als Integer oder String.

Bsp : tStart = 08:00:00 ; tEnd = 16:00:00 ; iLength = 1
Als Ergebniss sollte dann kommen 7 . Also (tEnd - tStart)-iLength..


Kann mir jemand helfen?

Danke
Wolfgang



Habe kurz das Topic aussagekräftiger gemacht. Erhöht die Chance auf gute Antworten
Titel: Re: Lotus Programmierung
Beitrag von: doliman am 31.07.02 - 12:45:31
Hi,

die func macht diese Berechnung, nur noch auf Deine Felder und Maske anpassen:

Sub ZeitBerechnen
     Dim workspace As New NotesUIWorkspace
     Dim uidoc As NotesUIDocument
     Set uidoc = workspace.CurrentDocument
     Dim k As  Variant, g As Variant, p As Variant    
     Dim ks As String, gs As String, zs As String,u As String
     Dim z As Double
     Dim i As Integer
     
     
    '************************** Gewählter Mitarbeiter
     u=uidoc.FieldGetText("txtMitarbeiter")
    '************************** Sind Kommt- und Geht-Zeit belegt?
     ks=uidoc.FieldGetText("datKommt")
     gs=uidoc.FieldGetText("datGeht")
     If (Isdate(ks) And Isdate(gs)) Then
           k=Timevalue(ks)
           g=Timevalue(gs)
           p=lookup("Intern\MitarbeiterAlternativ",u,"dblPause")
           If Not Isnumeric(p) Then p=0
         'Tatsächliche Arbeitszeit berechnen
           z=(g-k)*24
        'Pause wird nur abgezogen, wenn Arbeitszeit um 12:00
           If ((k<Timenumber(12,0,0)) And (g>=Timenumber(12,0,0))) Then z=z-p
         'Tatsächliche Arbeitszeit nur zuweisen, wenn realisitisch  
           If Not ((z >0) And (z<24)) Then
                 zs="Fehler"
           Else
              'in String umwandeln
                 zs=Format$(z,"0.00")
              'Dezimalzeichen korrigieren
                 i=Instr(zs,".")
                 If (i>0) Then Mid$(zs,i,1)=","
           End If
           Call uidoc.fieldsetText("dblStunden",zs)        
     End If
End Sub
Titel: Re: Lotus Programmierung
Beitrag von: comet am 09.05.05 - 10:12:38
gibts das auch mit abziehen der pause
Titel: Re: Lotus Programmierung
Beitrag von: Axel am 09.05.05 - 10:56:00
Hi,

wenn ich das richtig sehe, ist das schon mit drin.

...
p=lookup("Intern\MitarbeiterAlternativ",u,"dblPause")
If Not Isnumeric(p) Then p=0
 'Tatsächliche Arbeitszeit berechnen
 z=(g-k)*24
 'Pause wird nur abgezogen, wenn Arbeitszeit um 12:00
 If ((k<Timenumber(12,0,0)) And (g>=Timenumber(12,0,0))) Then z=z-p
...

Die Pausenzeit wird anscheinend aus einem anderen Dokument ausgelesen.

Axel
 
Titel: Re: Lotus Programmierung
Beitrag von: Lossa am 11.05.05 - 12:23:03
Hi,

warum so kompliziert und mit Script?

Der Einfachste Fall ist:
EndeZeit - Anfangszeit => Anzahl Sekunden zw. diesen beiden Datums-/Uhrzeit werten. Dann brauchst du das ganze nur noch auf Minuten, Stunden, Tage etc. hochrechnen.
Fertig