Domino 9 und frühere Versionen > Administration & Userprobleme

@SetProfileField funktioniert nicht zuverlässig

(1/3) > >>

Silvio:
Hallo zusammen

Wiedermal eine Herrausforderung die ich nicht meistere. Über ein SmartIcon führe ich folgende @F aus:
@Command([FileOpenDatabase]; "":"Entwicklung\\EntwicklungDb.nsf"; ""; ""; 0; 1 ); @SetProfileField( "edbprofile"; "SnipetsOfTheDay"; "1" )

Diese sollte( tuts aber nicht immer - eher selten ??? ) das ProfileFeld SnipetsOfTheDay = "1" setzen. Dieser Wert sollte bereits im Datenbank Script - Initialize( od. PostOpen ) zuverlässig lesbar sein.

PS: Mit dem Debugger & NotesPEEK kann dieses flasche Verhalten verfolgt werden.

Hat einer eine Idee woher dieses verzögerliche Verhalten kommt, und wie dieses zuverlässig zu Handhaben ist.

Danke für die Tipps
Silvio

Meff:
Ähhh, warum setzt Du den Wert im Profil Dokument nicht einfach im Initialize Event der Datenbank?

Meff

Silvio:
Die Db soll 'erfahren' ob sie jetzt per SmartIcon von irgendwoher ODER direkt mit Doppelklick(o.ä.) geöffnet worden ist. Damit habe ich die Kontrolle über das Verhalten der Datenbank um z.B. autom. ein Agent starten oder neues Dokument anlegen etc., oder die Db gleich wieder schliessen ;D.
Anwendung soll das in einer Entwicklungs-Datenbank finden die auch sogenannte 'SnipetsOfTheDay' aufnimmt. Eine art Zwischenablage die sich mit 1x klicken in den Vordergrund stellt - ich mach meine Copy-Paste aktionen etc. - und mit ESC wird die Db wieder verlassen ohnen das Zeit verloren geht mit wechseln zwischen Client & Designer. :D

Silvio

Glombi:
Hi,
aslo für diesen Fall würde ich kein Profil verwenden, sondern die gute alte NOTES.INI.
Ich bin mir auch nicht sicher, ob der Wert auch vor dem Ausführen des Postopen der Datenbank bereits im profil steht.

Also: Du kannst Das Smarticon wie folgt programmieren:
ENVIRONMENT SnipetsOfTheDay="1"
@Command([FileOpenDatabase]; "":"Entwicklung\\EntwicklungDb.nsf"; ""; ""; 0; 1 )

Im Postopen der Datenbank dann ich Script den NOTES.INI Wert auslesen.

Dim session As New NotesSession
Dim SnipetsOfTheDay As String
SnipetsOfTheDay = session.GetEnvironmentString( "SnipetsOfTheDay" )

Und dann wieder zurücksetzen
Call session.SetEnvironmentVar( "SnipetsOfTheDay", "" )


Andreas

Silvio:
Tja, das habe ich bereits schon lange vorher versucht mit dem Resultat das die NOTES.INI noch langsamer auf Veränderungen reagiert. D.h. vom Zeitpunkt des reinschreibens bis zum auslesen wird ja das Betriebssystem bemüht, dass bekanntlicherweise auf Workstations eine längere Gedankenpause einlegt als auf einem Server. Das Problem haben z.B. auch alle Entwickler, die Dateien in die Db Anhängen b.z.w. lösen und sofort darauf zugreiffen möchten.

Silvio

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln