Autor Thema: Mehrere Offene Dokumente in einer DB: Welches hat den Fokus?  (Gelesen 1730 mal)

Offline HelmutR

  • Frischling
  • *
  • Beiträge: 2
In einer Helpdesk-Datenbank werden Trouble-Tickets erstellt und verwaltet.
In jedem Dokument wird mitgeführt, wielange es schon in Bearbeitung (d.h. im Edit-Modus) ist,
und die Bearbeitungszeit beim Speichern des Dokuments mitgespeichert.
Wenn nun mehrere Dokumente gleichzeitig geöffnet sind, wird die Bearbeitungszeit bei allen Dokumenten hochgezählt, da ja alle im Edit-Mode sind.

Gibt es eine Möglichkeit festzustellen, welches Dokument den Fokus hat (ausgewählter Tab in Notes)?
Gibt es hierzu ein pasendes Event, in das ich mich einklinken kann,
oder kann ich das Problem ggf. unter Verwendung eines Timers lösen und dem Vergleich des aktuellen Dokuments mit NotesUIWorkspace.CurrentDocument?
Notes 7.03 (Server und Client) unter Windows 2003 Server und XP

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Mehrere Offene Dokumente in einer DB: Welches hat den Fokus?
« Antwort #1 am: 11.02.09 - 00:09:04 »
Nein.

Timer: Eine sehr scheinbare Lösung für Allerweltsprobleme mit meist übelst verkannten Risiken und Nebenwirkungen.
Event: Nein.
Über das Betriebssystem geht was (aber ab spätestens R8 bedeutet das "sich den Wolf programmieren").

Daher zwei Gegenfragen:
1. und wichtigstens - was willst Du erreichen?
2. Wie gut bist Du in der Notes-Programmierung und ggf. dem Umgang mit dem, was darunter liegt?

Bernhard

Offline HelmutR

  • Frischling
  • *
  • Beiträge: 2
Re: Mehrere Offene Dokumente in einer DB: Welches hat den Fokus?
« Antwort #2 am: 11.02.09 - 00:53:13 »
Ziel ist eine automatische Zeiterfassung für Zeiten in denen das Dokument geöffnet im Vordergrund der Applikation liegt. Solange es nur ein offenes Dokument im Notes UI gibt, ist das einfach möglich.
Sind jedoch mehrere Dokumente in Notes offen, so wird bei jedem (im UI offenen Dokument) die Zeit gezählt.
Ich suche also ein Event, das in Notes den Fokuswechsel zwischen mehreren (in separaten Tabs) offenen UI-Dokumenten mitgekommt, so daß die Zeitzählung nur beim  Dokument mit Fokus läuft, und bei den anderen nicht.

Zur Programmierung: mehrere Jahre Erfahrung mit Formelsprache und Lotus-Script.
Konkret sieht das ganze wie folgt aus:

=============Allgemeine Klasse für die Zeiterfassung=================

Class Zeiterfassung
   Private CurStart As NotesDateTime
   Private  CurEnde As NotesDateTime
   Private CurDauer As NotesDateTime
   Private Running As Boolean
   Private Modified As Boolean
   
   Sub New
      Set CurStart = New notesdatetime("")
      Set CurEnde = New notesdatetime("")
      Set CurDauer =        New notesdatetime("00:00:00") ' Dauer auf 0 Minuten setzen
      Modified = False
   End Sub
   
   Sub Start
      Running = True      
      Modified = True
      Call CurStart.setnow 'Heutiges DAtum setzen.
   End Sub
   
   Sub Ende
      Dim Dauer As NotesDateTime
      Dim difference As Long
      ' Liefert die Dauer in Sekunden seit dem letzten Aufruf von Start
      If Running Then
         Running = False   
         Call CurEnde.setnow 'Heutiges DAtum setzen.
         difference = CurEnde.TimeDifference( CurStart)
         If difference = 0 Then
            modified = False
         Else
            CurDauer.AdjustSecond(difference)
         End If   
      End If      
   End Sub
   
   Sub Load (Source As Notesuidocument)
      Dim NullDauer As NotesDateTime
      Set NullDauer = New notesdatetime("00:00:00") ' Dauer auf 0 Minuten setzen
      Set CurDauer = NullDauer ' Dauer auf 0 Minuten setzen
      Dim doc  As NotesDocument
      Set doc = source.document
      Dim DauerST As String
      DauerST =   doc.CaseDauer(0)
      If Not source.IsNewDoc Then
         If Isnumeric (DauerST) Then
            CurDauer.AdjustMinute(DauerST)
         End If   
      End If
   End Sub   
   
   Sub Save (Source As Notesuidocument)
      Dim doc As NotesDocument
      Dim Minuten As Double
      Set Doc = Source.document
      Dim StartNI As NotesItem
      Dim EndeNI As NotesItem
      If modified Then
         Set StartNI =   doc.GetFirstItem("CaseStart")
         Set EndeNI =   doc.GetFirstItem("CaseEnde")
         Set StartNi.DateTimeValue = CurStart
         Set EndeNi.DateTimeValue = CurEnde
         
         minuten =Hour(CurDauer.LSLocalTime)*60 + Minute(CurDauer.LSLocalTime)
         Call doc.replaceitemvalue("CaseDauer",minuten)   
         Call doc.Save(True,True)
      End If
      
   End Sub
End Class


==============In der zugrundeliegenden Maske verwendete Events===============
Globals
  Declarations:
    Dim Zeiterf As Zeiterfassung
 Initialize:
    Set ZeitErf = New Zeiterfassung

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   If Not IsNewDoc Then Call zeiterf.load(source)
   zeiterf.start
   Continue = True
End Sub

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
   If source.editmode = False Then 'd.h. beim Umschalten von RO auf EditMode
      zeiterf.start
   Else
      zeiterf.ende
   End If
   Continue = True
End Sub

Sub Querysave(Source As Notesuidocument, Continue As Variant)   
   Dim doc As NotesDocument
   Set Doc = Source.document
   zeiterf.ende
   Call zeiterf.save(source) ' ggf. geänderte Zeirefassung abspeichern)
End Sub
Notes 7.03 (Server und Client) unter Windows 2003 Server und XP

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Mehrere Offene Dokumente in einer DB: Welches hat den Fokus?
« Antwort #3 am: 11.02.09 - 01:22:29 »
Helmut, aus sehr viel Erfahrung mit diesem Thema kann ich Dir nur sagen: Der organisatorische Ansatz stimmt schon nicht. Das kann nicht funktionieren. Das "offene Fenster" sagt Dir gar nichts!

Andere mögen bitte bitte auch ihre Meinung dazu abgegeben. Ich habe jetzt aber erstmal Nachruhe  ;)

Bernhard

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: Mehrere Offene Dokumente in einer DB: Welches hat den Fokus?
« Antwort #4 am: 11.02.09 - 17:22:45 »
Deine Tab-Idee hat einen kleine Haken.
Wenn der User ein Ticket öffnent, dann würde (wenn der Fokus überhaupt abzufragen ist) dein Timer losrennen. Öffent er zusätzlich ein anderes Dokument, verliert dein Ticket den Fokus und der Timer würde stoppen...

Wäre es möglich deine Zeiten in ein "Benutzer"-Dokument oder ein Profildokument zu schreiben?

Wie arbeiten die Leute? Wir hatten bei uns mal das Problem, das die HelpDesk-Jungs gerne einfach mal den Rechner ausschalten oder Notes raucht ab. Dann ist jede Logging-Funktion für den A.. :-P ..

So sicher die eine oder andere Lösung nicht.
Gruß
Johnson

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz