Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: theBastian am 23.06.05 - 19:05:36

Titel: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: theBastian am 23.06.05 - 19:05:36
Hallo,

ich habe einige Datenbanken, deren Designelemente einen Haken bei NoRefresh "tragen". Diesen würde ich gern entfernen.  :(

Da ich aber faul bin, und nicht in jeder DB rumsausen will, suche ich eine Alternative.  :-\

Gibts dafür vielleicht einen Scriptbefehl oder eine Klasse?

Dank Euch im voraus.

cu
Sebastian
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: TMC am 23.06.05 - 20:53:47
Mit der NotesNoteCollection - Klasse hast Du Zugriff auf die Designelemente als NotesDocuments.

Im Item $Flags steckt diese Information.

Ist dort im String ein "P" enthalten, so ist die Eigenschaft "Prohibit Design Refresh" gesetzt.
Am besten liest Du also $Flags in ein String aus, entfernst per Script das P, schreibst das String wieder zurück und speicherst.

Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: theBastian am 24.06.05 - 16:22:53
Hi,

habe mit dieser Klasse noch nicht gearbeitet und steige da leider nicht so richtig durch. Hieße das also am Beispiel des Icons einer DB:

erst mal Collection erstellen (Help-DB)?

Dim session As New NotesSession
  Dim db As NotesDatabase
  Set db = session.CurrentDatabase
  Dim nc As NotesNoteCollection
  Set nc = db.CreateNoteCollection(False)
  nc.SelectIcon = True
  Call nc.BuildCollection

habe ich jetzt eine Collection oder das Docs?
Kann ich jetzt mit GetItem zugreifen oder?

Ich habe keinen Plan.  :(

cu
Sebastian
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: TMC am 24.06.05 - 17:32:07
Also ans NotesDocument kommt man meines Wissens nur mit einem Mini-Workaround.

Code
	On Error Goto ErrorHandler
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim ncol As NotesNoteCollection
	Dim strNoteID As String
	Dim docDesign As NotesDocument
	Dim lngCount As Long
	Set db = session.CurrentDatabase	
	Set ncol = db.CreateNoteCollection(False) 'empty collection
	
	Call ncol.SelectAllDesignElements(True) ' wir brauchen alle Designelemente
	
	'Use BuildCollection to compile the collection. You must build before the collection can be used.
	Call ncol.BuildCollection
	
	strNoteID = ncol.GetFirstNoteId
	Do While Not(strNoteID = "")
		Set docDesign = db.GetDocumentByID(strNoteID)	
		
		'---------- HIER KOMMT NUN DEIN CODE REIN
		'Mit docDesign hast Du Zugriff auf ein Designelement als NotesDocument-Objekt		
		
		lngCount = lngCount + 1
		strNoteID = ncol.GetNextNoteId(strNoteID)
	Loop

	Msgbox lngCount & " Designelemente bearbeitet."
	
	
GoOut:
	Exit Sub
ErrorHandler:
	Msgbox "Error #" & Err & " — " & Error$ & " (line: " & Erl & ")", 48, "Runtime error"
	Resume GoOut
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: ascom40 am 27.06.05 - 12:47:07
Hi

Code
If docDesign.HasItem("IconBitmap") Then 
    Msgbox "Treffer ! Datenbankicon erwischt" 
End If

da hat das Item $Flags aber meines Wissens KEINEN Inhalt, wenn "R" drinsteht, wird das Design aktualisiert.

Jo
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: TMC am 27.06.05 - 20:28:17
Danke für den Hinweis Jo.
War mir so noch nicht aufgefallen, aber stimmt, hab das gerade getestet.

Matthias
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: theBastian am 19.07.05 - 14:50:51
Hallo,

komme leider erst jetzt wiedr dazu, mich mit dem Script zu beschäftigen. Leider bin ich aber noch nicht viel weiter.

Habe mir den Code von TMC angeschaut und auch hoffentlich verstanden. Der Code erstellt Collection und durchläuft alle Designelemente. Und ich könnte die Elemente bearbeiten.

Ich brauche aber nicht alle sondern nur das DB-Icon. Das muss ich doch noch irgendwie selektieren, oder?

Sebastian
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: ascom40 am 19.07.05 - 15:19:58
Hallo Sebastian,

wie war der Urlaub  8)

du musst da alle Designelemente durchlaufen und dann mit dem Construct

If docDesign.HasItem("IconBitmap") Then
    Msgbox "Treffer ! Datenbankicon erwischt"
End If

feststellen, wann du das Icon erreicht hast.

Dann statt obiger "Msgbox" das Flag entsprechend setzen und docdesign saven.

Aber Vorsicht, ich hab da schonmal erlebt, dass die so zurechgestutzten Datenbanken (ohne Designtask-Lauf) plötzlich ein Mischdesign aus aktuellem und vorherigen Design hatten, da war das Geschrei groß  >:D

Ein "load convert ..." hat das wieder korrigiert und auch gleich das Icon aktualisiert.

Jo
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: theBastian am 19.07.05 - 18:03:13
Hi,

mein Code sieht jetzt so aus:

If docDesign.HasItem("IconBitmap") Then
Call docdesign.ReplaceItemValue( "$Flags", "R" )
Call docdesign.Save( True, True )
End If

Getestet und für gut befunden.
Der läuft kurz vor dem Design Task und ev. Fehler, die entstehen, sollten danach wieder ok sein.

Mal sehen. Danke für Eure Hilfe.

cu
Sebastian
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: datenbanken24 am 19.07.05 - 18:23:12
Zitat
Ich brauche aber nicht alle sondern nur das DB-Icon. Das muss ich doch noch irgendwie selektieren, oder?

Das paßt zwar nicht ganz zur Frage oben,
aber wenn Du wirklich nur das Designelement mit dem DB-Icon suchst,
das hat immer die gleiche ID "FFFF0010"

Set doc = db.GetDocumentByID("FFFF0010")
'This is the Icon Design Element


doc.ReplaceItemValue("$Flags", doc.GetItemValue("$Flags")(0) & "x" )
'Where x is the flag value you want to set

doc.Save (...)

http://www.atnotes.de/index.php?topic=17582.0

Dort kann man aber nur die Gestaltungseigenschaften der gesamten Datenbank ändern - nicht für jedes Designelement.

Gruß,
Uwe
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: ascom40 am 19.07.05 - 18:37:05
Hallo,

Code
If docDesign.HasItem("IconBitmap") Then 
Call docdesign.ReplaceItemValue( "$Flags", "R" )
Call docdesign.Save( True, True )
End If

das passt so IMHO, wenn was am Design hinterher auffällig ist, ist auch schnell der convert über die Mehlfiles mit dem entsprechenden Template drübergerannt, um das Design wieder zu korrigieren. Müssen die Looser halt mal leiden  ;D

Am 29 ist übrigens SysAdminsDay http://www.sysadminsday.de Ich bin angemeldet.

Jo


Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: TMC am 20.07.05 - 00:01:45
Call docdesign.ReplaceItemValue( "$Flags", "R" )

Achtung, mit dem simplen Replace wäre ich sehr vorsichtig, da dort auch andere Flags vorhanden sind.
Wenn Du das R setzen willst, würde ich den Inhalt aus $Flags in ein String auslesen, R daran setzen und zurückschreiben mit ReplaceItemValue.
Willst Du das umgekehrt, also R rausnehmen, würde ich auch hier wieder $Flags-Inhalt in String setzen, das R "herausoperieren" mit bekannten String-Mitteln und das String wieder zurückschreiben.
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: theBastian am 20.07.05 - 15:21:00
Hallo,

scheint bei den gewählten DB's geklappt zu haben.  :)
Werde versuchen die Änderungen von TMC noch mit einzubauen.

Danke für Eure Hilfe.

cu
Sebastian
Titel: Re: NoRefresh-Haken bei Designelementen per Script setzen
Beitrag von: regedit am 29.07.05 - 08:25:22
Ich hatte unten angegebenes Problem unter anderem Topic gestellt und wurde auf diesen Thread verwiesen. Da ich mich mit Scripting nicht so auskenne, kann ich dem ganzen hier leider nur zur hälfte folgen. Kann mir jemand näher erläutern, wie ich z.B. den Haken ($Flags "P") aus der Ansicht "Kontakte" in der lokalen Names.nsf der User, welche in verschiedenen Verzeichnissen auf unterschiedlichen Fileservern liegt, herausnehmen kann?
Daraus könnte ich dann schließen, was ich mit den anderen Ansichten und Masken machen muß.

Gruß
Holger

     Probleme bei Schablonenwechsel
« am: 28.07.05 - 18:30:14 »    
Hallo,

habe folgendes Problem:
Ich möchte über den convert-Befehl die persönliche Names.nsf der User von der Schablone R5.06a auf R6.5.2 umstellen, was er auch teilweise macht.
in der R5 Schablone sind bei einigen Ansichten und Masken Haken gesetzt bei "Durch Aktual./Ersetz. der Gestaltung nicht änderbar". Dementsprechend sieht die neue Names auch halb alt, halb neu aus. Habt Ihr eine Idee, wie ich dieses Problem lösen kann, da es doch einige Viele User mit vielen verschiedenen Userverzeichnisse betrifft.