Autor Thema: Änderungen und Fixes im nächsten point Release 1.5.1 von !!Help!!  (Gelesen 14096 mal)

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Also eine Änderung die wir haben und die für einige interessant sein dürfte ist die Angleichung des Handlings von Feldern bei versendeten Mails.
In der neuen Version kann man dann auch im Subject mit <<b:Feldname>> und <<p:Feldname>> arbeiten. Das löst die alte Variante mit ~~&Feldname~~ ab.
Zusätzlich gibt es für die Subjects noch einen weitern Bezeichner <<x:Feldname>> mit diesem Bezeichner bleiben die spitzen Klammern um das Feld herum erhalten. Das braucht der Dispatcher.

Was das Releasedatum angeht. Ich würde mal sagen fühestens Ende März, eher um Ostern herum.
Wir könnten das auch von den Downloads bei Openntf abhängig machen. Das neue Release gibt es erst dann wenn das aktuelle Release mehr Downloads hat als das letzte.  >:D
« Letzte Änderung: 23.02.06 - 18:01:52 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Ach ja und was noch neu ist.

Es wird eine Möglichkeit geben "Notizen" an Tickets oder Aufgaben zu hängen. Diese notizen erhalten logischerweise einen eigenen "Informationszyklus", um dem im Parent eingetragenen Supporter mitteilen zu können ob neue oder geänderte Notizen zu seinem Ticket oder seiner Aufgabe vorliegen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Bezogen auf http://atnotes.de/index.php?topic=29039.0 gibt es im Projekt auch noch einen Dialog, der dringend überarbeitet werden muss; das Zeugs ist wirklich nicht mer state-of-the-art
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
???? Welchen ????
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Another new thing:

Es gibt in der neuen Version einen Test Modus. Damit kann man mit einer Kopie der echten Datenbank und mit der Eintragung von zwei Parametern (ApplicationTestmode und ApplicationTestSupervisor) jeglichen Output der vom System erstellt wird direkt an eine bestimmte Person oder Gruppe ausgeben.

OK. Ganz so einfach ist das nicht. Man muss die Kopie der Datenbank auch noch mit einer eigenständigen Mail in Adresse versehen und die entsprechenden Parameter (SendMailOnBehalfOf) in der Test Datenbank ändern, aber wenigstens kann man das.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Ich werde dem nächsten Release einige Klassen mitgeben, die es ermöglichen, detailierte Informationen über einen Rechner zu ermitteln. Die Klassen sind abgeleitet von http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx
Das sollte eigentlich auch bei ( fast ) allen Anwendern funktionieren. Ich gehe nicht davon aus, daß ein !!HELP!! User ernsthaft noch Win95 oder Win98 einsetzt. Bei NT4.0 Maschinen kann es Probleme geben. Unter Windows 2000 und XP funktionieren alle Klassen.
Mit dem Code ist es sogar möglich remote die Config eines Rechners auszulesen; dazu muss nur die IP bekannt sein. In heterogenen Netzwerken ( Windows mit Novell ) funktioniert das Ganze nicht. Da suche ich aber noch nach einer Lösung.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Dann äußere ich gleich nochmal einen Wunsch bzw. Vorschlag, auch wenn das schon mal "abgeblockt" wurde:

Bitte ein neues Feld einbauen, mit einer fortlaufenden Ticketnummer, die einfach immer bei einem neuen Ticket/Aufgabe umd 1 hochzählt. Startnummern sind in der Konfig hinterlegt.

Ich mach das derzeit einfach manuell und hinterlege dieses Info in ProblemFirstLine. Es hat sich einfach gezeigt, dass eine OP-Nummer immer leichter zu kommunizieren ist, wie die Ticket-ID. Niemand weiß, wenn ich über Ticket DVSR-DJGFD3 rede, aber jeder versteht mich, wenn ich sage, "hast Du OP 592 schon bearbeitet?".... - Vorallem mit unseren externen Supportern, die keinen direkten HELP Zugang haben und über Aufgaben- bzw. Ticketmails kommunizieren.  O0
BaCeS

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
... fortlaufende Nummern  8) ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Ulrich wollen wir???

Wir haben uns ja mal geschworen das wir das nie machen .....

Oder nur gegen eine hinreichende Spende ....

Um den Seelenschmerz zu lindern ...
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
wenn ich über Ticket DVSR-DJGFD3 rede, aber jeder versteht mich, wenn ich sage, "hast Du OP 592 schon bearbeitet?".... - Vorallem mit unseren externen Supportern, die keinen direkten HELP Zugang haben und über Aufgaben- bzw. Ticketmails kommunizieren. O0
Also bei uns funktioniert das ....

Aber ich versteh dich da schon, irgendwie, ein wenig, vielleicht .....

Nur für das Wiederfinden im Dispatcher werden wir das nie nutzen. Deswegen MUSS die "kryptische" Nummer immer im Betreff stehen bleiben und ob dann eine Fortlaufend Nummer richtig viel Sinn macht??

Haben täte ich das ja schon.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
lso, eine Basisfunktionalität wird die fortlaufende Nummer nicht werden. Ich verstehe, daß eine kürze Nummer die Kommunikation erleichtert ... Ich halte es für möglich, eine zusätzliche Funktion einzubauen, die eine solche *würg, schmerz* f.o.r.t.l.a.u.f.e.n.d.e Nummer zusätzlich zu der hübschen, kryptischen Nummer erzeugt.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich

Also bei uns funktioniert das ....

Aber ich versteh dich da schon, irgendwie, ein wenig, vielleicht .....

Nur für das Wiederfinden im Dispatcher werden wir das nie nutzen. Deswegen MUSS die "kryptische" Nummer immer im Betreff stehen bleiben und ob dann eine Fortlaufend Nummer richtig viel Sinn macht??


Na klar, die krytische hat natürlich ihre Berechtigung und soll auch nicht ersetzt werden. Ich denke wirklich als Extra-Feld. Damit kann diese sorry, erheblich einfachere, Nummer in den Mails verwendet werden, zusätzlich zur Ticket-Id. Wie gesagt, im Augenblick packe ich die Ticket-Id ganz hinten an den Betreff und packe diese *..würg..* - einfache Nummer händisch vorne ran. Ein Feld für Tickets und ein Feld für Aufgaben, Startnummer und Ein/Ausschalter in der Config - als Vorschlag.

Bei unserer ERP-Einführung / Mitentwicklung, sind die Tickets halt sehr lange offen (Projekt läuft schon 3 Jahre und kein Ende abzusehen  :-X - aber es ist kein SAP, das können auch andere...), somit werden diese Tickets nicht mal in 3 Tagen abgeschlossen, sondern werden immer wieder aufgegriffen und werden länger und länger.

Und über Linderung des Seelenschmerz mache ich mir schon Gedanken...  :D
BaCeS

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Okay also basierend auf diesem Post hab ich gestern eine mögliche Lösung für dieses Problem eingebaut:

TicketNewTicketStartWithStatus, Neues Konfigurationsdokument eingeführt. Steuert wie der
Status bei Manuell erstellten neuen Dokumenten gesetzt werden soll. BugReport Feld Status angepasst.

DispatcherNewTicketStartStatus, Neues Konfigurationsdokument eingeführt, Steuert mit welchem Status der Dispatcher ein neues Ticket anlegt. Sourcecode in lib.appl.function (createnewdocument) geändert

TicketReassignSetStatusTo, neues Konfigurationsdokument eingeführt, Steuert welcher Status beim Reassign eines Tickets gesetzt werden soll. Dieser Eintrag kann entweder leer oder 0 oder 1 sein. Bei leer wird der eingestellte Status nicht verändert. bei 0 wird er immer auf null zurückgesetzt und das Ticket wird wieder "neu", bei 1 bleibt das ticket im Bearbeitungs Modus (aktiv) oder wird in den Bearbeitungs Modus versetzt.

TicketAcceptSetCurrentUserAsSpporter, Neues Konfigurationsdokument eingeführt, steuert ob der aktuelle Benutzer als Supporter eingetragen wird wenn er ein Ticket akzeptiert.

Damit kann dann bei Tickets so vorgegangen werden wie bei Aufgaben. Der Benutzer der ein Ticket akzeptiert wird automatisch als Verantwortlicher Supporter eingetragen.

Einen Wermutstropfen habe ich da aber noch. Jedes neue Accept löst noch eine Email an die User aus von denen der Call kommt. Das könnte aber auch noch gelöst werden, wenn man sich darauf einigt, das beim Accept über ein Konfigurationsdokument gesteuert wird das der Eintrag für fldMailIfAccepted auf "NO" gesetzt wird, wenn der ....

Ähh ja, das hab ich jetzt auch gelöst. Dafür gibt es jetzt auch ein Steuerungsdokument damit kann man dann definieren, ob das Ticektinterne Steuerungsfeld für die Mailbenachrichtigung bei dieser Aktion auf "NO" gesetzt wird, was dann weitere Nachrichten unterbindet, bis jemand das Manuell wieder auf "YES" setzt.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Lauff

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
Hört sich gut an. Danke.
Gruß
Sebastian

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Ich hatte ja angekündigt, dass ich mich mit der Implementierung von erweiterten Systeminformationen in das neue Release beschäftige.
Da wird es auch ein paar neue Sachen geben.
Allerdings wird es hier zunehmend schwieriger, die Sachen in LS abzubilden.

Die WMI Sachen sind nicht in allen Punkten umzusetzen. Zudem wird der Kram mit jeder neuen Abfrage langsamer und langsamer.
Bei manchen Dingen fehlen mir auch Möglichkeiten in LS, die andere Programmiersprachen haben - z.B. Inline-Assembler. Damit wären z.B. INT13 Abfragen zur Festplattenkonfiguration wesentlich einfacher und genauer, als über WMI oder die Windows API.

Ich habe daher angefangen, eine Abfrage der ( Remote ) Computerkonfiguration in C# zu schreiben.

Herauskommen wird am Ende eine DLL, die von LS aus angesprochen werden kann. Einen ersten Eindruck könnt ihr euch schon einmal durch den angehängten Screenshot verschaffen.

Per Default liest der bisherige Code den lokalen Rechner aus; es ist aber auch möglich, sich über ein Connect auf einen Remote Computer aufzuschalten und dessen Config auszulesen.

In einem Windows Netztwerk funktioniert das bereits sehr gut; Probleme bereitet mir aber Novell. Sobald der Novell Client installiert ist, ist Essig mit Remote. Aber das bekomme ich auch noch hin.

Die Abkehr von LS in diesem Bereich hat auch noch einen weiteren Vorteil; z.B. könnte man die Datenbank von ZenWorks anzapfen und die Ergebnisse in LN zur Verfügung stellen.

Momentan steckt das Alles noch in einem sehr frühen Alpha Stadium.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline regedit

  • Aktives Mitglied
  • ***
  • Beiträge: 118
  • Geschlecht: Männlich
Ich hatte ja angekündigt, dass ich mich mit der Implementierung von erweiterten Systeminformationen in das neue Release beschäftige.
Ist es dann auch möglich bei Terminal-Server-Betrieb die Systeminformationen des lokalen Clients auszulesen?
Momentan werden die Daten des Terminal-Servers angezeigt, an den man angemeldet ist
!!HELP!! V1.6
Domino Server V6.5.6 FP1 (Windows 2003 Server)
Notes Client V6.5.5 (TS-Client / Win 2003 TS-Server)
Notes Client V6.5.5 (Win XP)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
wenn die IP Adresse oder der Hostname des PC bekannt ist, dann geht das schon. Das Tool ist auch nicht dafür gedacht, den bisherigen Code zu ersetzen, sondern es soll vielmehr im Supportfall einen remote Zugriff auf den PC des Users emöglichen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
- Escalation Management

ich baue gerade den Code nach OO um.

hier mal ein erster Eindruck

Code
'///////////////////////////////////////////////////////////////////
Private Class Stamp
'-------------------------------------------------------------------
%REM
represents a single stamp in the multi-value field "nStampAll"
%END REM
	Public strStampField As String
	Public strStampValue As String
End Class
'-------------------------------------------------------------------

'///////////////////////////////////////////////////////////////////
Private Class Recipient
'-------------------------------------------------------------------
%REM
represents a single receipient in the multi-value field "nFirstEscalationSendTo"
%END REM
	Public strRecipientName As String
	Public strRecipientLanguage As String
End Class
'-------------------------------------------------------------------

'///////////////////////////////////////////////////////////////////
Private Class Profile 
'-------------------------------------------------------------------
%REM
represents a single document from a collection of all active escalation-profiles
%END REM
	Public boolProfileStatus As Boolean
	Public strProfileDescription As String
	Public strProfileTemplate As String
	Public strProfileFormula As String
	Public colProfileSingleFieldStamp () As Stamp
	Public colProfileSingleRecipient () As Recipient
End Class
'-------------------------------------------------------------------

'///////////////////////////////////////////////////////////////////
Private Class ProfileCollection
'-------------------------------------------------------------------	
%REM
	represents a collection of all active escalation-profiles
%END REM
	Public intpColCount As Integer
	'Public colProfileCollectionSingleProfile () As Profile
End Class
'-------------------------------------------------------------------

'///////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////
Public Class HelpEscalationProfileCollection
'///////////////////////////////////////////////////////////////////	
'///////////////////////////////////////////////////////////////////	
	
	Private pCol As ProfileCollection
	
	Public Sub New ()
		'------------- ON ERROR STUFF -------------------
		On Error Goto ERRHANDLE 
		
		'------------- DIM STUFF-----------------------------
		Dim s As New NotesSession
		Dim col As NotesDocumentCollection
		Dim dt As New NotesDateTime(Cstr(Datenumber(2004, 5, 1)))
		Dim T_Col As New ProfileCollection
		
		'------------- SET  STUFF-----------------------------
		Set col = s.CurrentDatabase.Search ({@UpperCase(Form) = "NOTIFICATION PROFILE" & nStatus = "1"} , dt, 0 )
		
		T_Col.intpColCount = col.Count 
		
		Set pCol = T_Col 
		
EXITPOINT:
		Exit Sub
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If
	End Sub
	
	Public Property Get Count () As Integer
		count = Me.pCol.intpColCount
	End Property
	
End Class

Die Klasse "HelpEscalationProfileCollection" wird dann haben


Properties


Count as integer

Methoden

GetNthEscalationProfile ( i as integer ) as eProfile
GetNthRecipient ( profile as eProfile, i as Integer )

irgendwie so etwas in dieser Art.



Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Ich habe heute noch ein wenig gebastelt und den Code weiter eingedampft. Den meisten Platz nimmt das Error Handling ein.

Im Agenten wird sich letztendlich nur noch ein 2-Zeiler finden

Code
	Dim engine As New EscalationEngine
	Call engine.Run

Neben den Constructor gibt es nur noch eine Methode "Run"; der Rest wird in der Klasse "EscalationEngine" abgefackelt.

Ich weiss, ist noch nicht vollständig, soll auch nur einen ersten Eindruck vermitteln.  ;)

Code
'///////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////
Public Class EscalationEngine
'///////////////////////////////////////////////////////////////////	
'///////////////////////////////////////////////////////////////////	
	
	Private pCol As NotesDocumentCollection
	
%REM
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* CONSTRUCTOR
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%END REM	
	Public Sub New ()
		
		On Error Goto ERRHANDLE 
		
		Dim s As New NotesSession
		Dim dt As New NotesDateTime(Cstr(Datenumber(2004, 5, 1)))
		
		Set pCol  = s.CurrentDatabase.Search ({@UpperCase(Form) = "NOTIFICATION PROFILE" & nStatus = "1"} , dt, 0 )
		
EXITPOINT:
		Exit Sub
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If
	End Sub
	
%REM
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%END REM
	Private Function TicketCollection ( idx As Integer ) As NotesDocumentCollection
		
		On Error Goto ERRHANDLE 
		
		Dim s As New NotesSession
		Dim dt As New NotesDateTime(Cstr(Datenumber(2004, 5, 1)))
		
		Set TicketCollection = s.CurrentDatabase.Search (Me.pCol.GetNthDocument ( idx ).nFormula(0) , dt, 0 )
		
EXITPOINT:
		Exit Function
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If
	End Function
	
%REM
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%END REM
	Private Function Recipients ( idx As Integer ) As Variant
		
		On Error Goto ERRHANDLE 
		Recipients = Me.pCol.GetNthDocument ( idx ).nFirstEscalationSendTo
		
EXITPOINT:
		Exit Function
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If
	End Function	
	
%REM
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%END REM
	Private Function SetField ( idx As Integer ) As Variant
		
		On Error Goto ERRHANDLE 
		SetField = Me.pCol.GetNthDocument ( idx ) .nStampAll
		
EXITPOINT:
		Exit Function
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If
	End Function	
	
%REM
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%END REM
		Private Sub StampAll ( idx As Integer )
		
		On Error Goto ERRHANDLE 
		
		Dim s As New NotesSession
		Dim dt As New NotesDateTime(Cstr(Datenumber(2004, 5, 1)))
		Dim varStampValues As Variant
		Dim strFieldToStamp As String
		Dim strStampFieldWith As String
		Dim strAtAdjust As Variant	
		Dim strColDocFieldFound As String
		Dim atNow As New NotesDateTime( Now )	
		Dim thisdate As New NotesDateTime("")
		Call thisdate.setnow
		Dim col As NotesDocumentCollection
		
		Set col = Me.TicketCollection ( idx )
		varStampValues = Me.SetField ( idx )
		
		If Trim ( varStampValues (0) ) ="" Then 
			Exit Sub ' nothing to do; let's get outa here
		Else
			strColDocFieldFound =  Left$ ( strStampFieldWith , 2 ) ' <<TAG>>
			Forall v In varStampValues
				strFieldToStamp = Trim(Strtoken ( Cstr ( v ) , "|" , 1 ))
				strStampFieldWith = Trim(Strtoken ( Cstr ( v ) , "|" , 2 ))	
				
				If Left$ ( strStampFieldWith , 1 ) = "@" Or strColDocFieldFound = "<<" Then
					
					If Instr ( Ucase ( strStampFieldWith ) , "@ADJUST") Then
						strAtAdjust = Split ( strStampFieldWith , ";")
						strStampFieldWith = Left ( Ucase ( strStampFieldWith ) , 7 )
					End If		
					
					Select Case Ucase ( strStampFieldWith )
						
					Case 	"@NOW" 
						strStampFieldWith = Cstr(Now)
					Case 	"@DATE(@NOW)" 
						strStampFieldWith = Cstr(atNow.DateOnly)
					Case 	"@TIME(@NOW)" 
						strStampFieldWith = Cstr(atNow.TimeOnly)			
					Case 	"@ADJUST" 
						Call thisdate.AdjustYear( Cint(strAtAdjust(1)) )	
						Call thisdate.AdjustMonth( Cint(strAtAdjust(2)) )	
						Call thisdate.AdjustDay( Cint(strAtAdjust(3)) )	
						Call thisdate.AdjustHour( Cint(strAtAdjust(4)) )	
						Call thisdate.AdjustMinute( Cint(strAtAdjust(5)) )	
						Call thisdate.AdjustSecond( Cint(Left(strAtAdjust(6),1)) )	
						strStampFieldWith = Cstr(thisdate.LocalTime)
						
					End Select
				End If
			End Forall
		End If
		
EXITPOINT:
		Exit Sub
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If
	End Sub
	
%REM
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%END REM
	Public Sub Run
		' put stuff here
		Me.StampAll ( 1 )
	End Sub
	
End Class

und wer eine Idee hat, wie man das immer wiederkehrende

Code
EXITPOINT:
		Exit Sub
ERRHANDLE:
		xProc = Getthreadinfo(LSI_THREAD_PROC)
		xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
		If UseOpenLog Then
			Call LogError
		Elseif LogScriptErrors Then
			Call ThrowException ( xProc, xError  )
		End If
		Print xError   'In all cases
		If ResumeMethodNext Then
			Resume Next	
		Else
			Resume EXITPOINT
		End If

ersetzen kann, ohne den Fokus auf die Routine zu verlieren, der möge das bitte hier posten ...

Ich finde es übrigens klasse, daß der ScriptParser ein Konstrukt wie

Zitat
Set TicketCollection = s.CurrentDatabase.Search (Me.pCol.GetNthDocument ( idx ).nFormula(0) , dt, 0 )

umsetzen kann.   O0

ein

Code
If IsEmpty ( varStampValues)  Then
Exit Sub ' nothing to do; let's get outa here

funktioniert nicht. Oder bin ich da auf dem falschen Dampfer ? Ich dachte, IsEmptry prüft, ob ein Variant leer ist ...
« Letzte Änderung: 29.03.06 - 21:03:13 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Und noch was für das nächste Release.

Datenübernahme aus einer frei definierbaren System Datenbank (NotesDB) in ein Ticket wird möglich sein. So das man ein bei einem Ticket betroffenes System auch nachträglich mit den vorhandenen Daten in den Systembereich des Helpdesk einbinden kann.

Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz