Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: dirk_2909 am 23.08.07 - 13:41:05

Titel: ScriptLibrary via LS erstellen/ändern
Beitrag von: dirk_2909 am 23.08.07 - 13:41:05
Hallo

Ich möchte mit LS eine neue LS-Library erstellen bzw. eine bestehende Ändern.

Ist das überhapt möglich? Wenn ja wie ?

Folgendes habe ich schon realisiert:

Über die NoteCollection der jeweiligen DB suche ich das gewünschte Designelement.
Wenn ich es gefunden habe, initialisiere ich das entsprechende NotesDocument.

Die Felder kann ich auslesen und ändern.

Jetzt möchte ich aber den Inhalt des Feldes  "$ScriptLib" ändern.
Das klappt auch soweit. Wenn ich mir die Eigenschaften des Gestaltungselementes
anschaue, wurde der Wert im Feld entsprechend geändert.

Wenn ich aber die SB öffne kommt folgende Meldung:

"Generic LSE Failure (nor more info)"

Ich denke es liegt an dem Feld  "$ScriptLib_O" :-(

Wie kann ich das Feld manipulieren/ befüllen, damit die SB auch geöffnet werden kann etc. ???


Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: koehlerbv am 23.08.07 - 13:43:19
Es reicht nicht, den Quellcode zu ändern - der eigentlich wichtige Teil einer ScriptLib ist ja der tokenisierte  Teil.

Wozu hast Du das überhaupt vor? Vielleicht kannst Du Dein Ziel ja auch ganz anders erreichen.

Bernhard
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: eknori am 23.08.07 - 13:47:04
warum nimmst du nicht einfach DXL?
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: koehlerbv am 23.08.07 - 13:48:44
Und dann? Dann der DXL-Importer jetzt auch kompilieren?  ;)

Bernhard
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: eknori am 23.08.07 - 13:49:31
Nö, aber dafür gibt es doch auch Code im Internet ...
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: dirk_2909 am 23.08.07 - 13:56:06
@Ulrich : ich %%$$§§§ (aka. Blindfisch) ja - genau  ::) Ist DIE Lösung ... Danke für den "Schlag auf den Hinterkopf"  8)   :-[

Was ich dadurch erreichen will:

eine Hilfe für mich. In fast jeder App habe ich eine "feste" Lib ,die eine "variable" datanbankspefizische Lib benutzt (Use). Den Code für diese "variable" Lib. erstelle/Pflege ich über eine Konfigurations-DB und möchte von da aus die Libs in der entsprechenden DB aktualisieren.


... werde mich jetzt mal an den DXL-Export begeben.

Danke  :)
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: koehlerbv am 23.08.07 - 14:00:24
Und wie wirst Du nach dem DXL-Import rekompilieren?

Bernhard
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: Dominique M. am 23.08.07 - 14:00:53
Hi,

du hast die möglichkeit den "neuen" Quellcode per API in das Feld zu schreiben und kannst nachdem du das gemacht hast die Kompilier API starten.

Wie das genau funktioniert kann ich dir erst in ein paar Wochen sagen, soweit ist mein Projekt noch nicht :-)


Die API "NSFNoteLSCompile" sollte dein Freund sein
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: dirk_2909 am 23.08.07 - 14:17:28
Zitat
Wie das genau funktioniert kann ich dir erst in ein paar Wochen sagen, soweit ist mein Projekt noch nicht :-)

..würde mir reichen.

@Bernhard: weiß ich noch nicht  :-[  .. werde mal mit dem dxl testen.... und probieren.

Ist ja nicht ganz so wichtig/eilig, da es ja (nur) meine Arbeit erleichertern sollte  :-:
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: jBubbleBoy am 24.08.07 - 00:19:56
Das Kompilieren von NotesDBs habe ich schon mal gemacht (damals unter Notes5).
Code
Function compileScriptLibsThenAgents( db As notesDatabase ) As String
	On Error Goto errorZ
	Dim api As Win32DatabaseDesign
	Dim s$, v
	
	Set api = New Win32DatabaseDesign( db )
	
	v = api.scriptLibraryDocuments
	If Not isArrayEmpty( v ) Then
		Forall x In v
'			If Not Instr( x.~$flags(0), "j") Then		
			If api.compile ( x ) Then
				s = s & "Lib-" & x.~$title(0) & ": OK" & Chr(10)
			Else
				s = s & "Lib-" & x.~$title(0) & ": FEHLER" & Chr(10)				
			End If
'			Else	 
'				s = s & "Lib-" & x.~$title(0) & ": kein LotusScript" & Chr(10)				
'			End If
		End Forall
	End If
	
	v = api.agentDocuments
	If Not isArrayEmpty( v ) Then
		Forall y In v
			If Instr( y.~$flags(0), "L") Then			
				If api.compile ( y ) Then
					s = s & "Agent-" & y.~$title(0) & ": OK" & Chr(10)
				Else
					s = s & "Agent-" & y.~$title(0) & ": FEHLER" & Chr(10)
				End If
			Else
				s = s & "Agent-" & y.~$title(0) & ": kein LotusScript" & Chr(10)
			End If			
		End Forall
	End If
	
	compileScriptLibsThenAgents = s
	
	Goto endeZ
errorZ:
	If errorHandler Then Resume Next Else Goto endeZ	
endeZ:
End Function

Wichtig dabei ist die Reihenfolge, zuerst Lib dann Agents. Die Klasse Win32DatabaseDesign befindet sich in der Lib "DBDesign" zu finden unter http://www-10.lotus.com/ldd/sandbox.nsf/0/f81067f94a1143f3852567d800660625, von Damien Katz.

bubble
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: eknori am 24.08.07 - 07:58:30
Bzgl. ReCompile gibt es hier (http://www.openntf.org/Projects/pmt.nsf/0/9FEE560C794B785B862572220046BC9A) auch noch etwas ...
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: Dominique M. am 24.08.07 - 08:13:00
Guten Morgen,

das ist ja nett, damit hättet ihr mir Indirekt auch schon geholfen, schonmal danke :)

Ich werd mir das sicherlich in ein paar Tagen mal genauer anschauen, sieht auf jedenfall schonmal gut aus!


// Dominique
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: dirk_2909 am 24.08.07 - 08:42:28
Danke Ulrich und "Bubble" ....

Das wird mir helfen
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: jBubbleBoy am 24.08.07 - 08:55:05
Aber wenn ich mir deine Frage noch einmal durchlese, das in ähnlicher Art habe ich auch schon mal gemacht,. D.h. DB spezifische Information im Design und nicht im Dokument verwalten / setzen / lesen / ändern. Dabei ging es mir um eine Versionierung und Historie. Das ganze habe ich im About-Dokument hinterlegt, was dann auch existieren muss, aber ich glaube das NotesIcon kann man dafür auch missbrauchen.
Ist das bei dir ähnlich?

bubble
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: dirk_2909 am 24.08.07 - 09:09:36
Nein..

ich muss Kanstante in einer Library anpassen...

Eine Frage noch:
Code
 If api.compile ( x ) Then...

In welcher Klasse ist die Methode "Compile" ?  ???
In der "DBDesign" von Demian Katz (gem. Link) ist sie nicht ?  :-:

Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: jBubbleBoy am 24.08.07 - 09:25:05
Ja das stimmt von der DBDesign gibt es unterschiedliche (erweiterte) Versionen. Kann dir aber nicht mehr sagen wo ich die herhab.
Ich hänge sie hier an.

bubble
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: Dominique M. am 24.08.07 - 09:31:08
Hab mich auch schon gewundert, danke :)
Titel: Re: ScriptLibrary via LS erstellen/ändern
Beitrag von: dirk_2909 am 24.08.07 - 09:52:10
Danke :D