Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: flaite am 20.05.08 - 19:53:45

Titel: Optionale Methoden Parameter, die nicht optional sind
Beitrag von: flaite am 20.05.08 - 19:53:45
Hi,

find ich echt doof.
Da benutzt man in der Lotus-Script Api neue Funktion und selten funktioniert da mal eine wies in der Doku beschrieben steht.
Nehmen wir die database.Sign Funktion.
Sehr praktisch. Damit kann man einzelne oder mehrere Notes mit der aktuellen NoteID signieren.

Code
Dim s As New NotesSession
	Set db = s.CurrentDatabase
	Set nc = db.CreateNoteCollection(False)
	nc.SelectDatabaseScript = True
	Call nc.BuildCollection
	strNodeIdDbScript = nc.GetFirstNoteId
	If Not nc.GetNextNoteId(strNodeIdDbScript) ="" Then
		Msgbox "More than 1 NodeId found. exiting code"
		Exit Sub
	End If
	
	Call db.Sign(DBSIGN_DOC_ALL, False, strNodeIdDbScript, True)
	'Call db.Sign(strNodeIdDbScript, True)
Das hier holt sich etwa das Database-Skript über NodeCollection und signiert das dann. Funktioniert auch.
Nur steht eben in der Dokumentation, dass alle Parameter optional sind.
Der erste Parameter ist eine Integer Konstante, der zweite ein Boolean, der dritte ein String und der vierte wieder ein Boolean. 
Theoretisch müsste das also machbar sein. Bei 3 String-Parametern wär das zum Bleistift mit der Optionalität ein Problem.
Und was ist, wenn man die ersten beiden Parameter  weglässt?
Man bekommt eine not a valid design constant Fehlermeldung.  ::)
Wenn man sich dann dazu zwingt die "optionalen" Parameter mit anzugeben, funktioniert es plötzlich.

Es sind diese Kleinigkeiten.

Axel    
Titel: Re: Optionale Methoden Parameter, die nicht optional sind
Beitrag von: koehlerbv am 20.05.08 - 23:07:16
Mit
Call db.Sign (, , strNodeIdDbScript, True)
sollte das aber funktionieren. Einen (leeren) Platzhalter muss man schon angeben, sonst könnte bei "optionalen Parametern" ja sonstwas herauskommen, wenn die Funktion selbst bestimmt, was da gemeint und was weggelassen wurde.

Bernhard
Titel: Re: Optionale Methoden Parameter, die nicht optional sind
Beitrag von: flaite am 21.05.08 - 11:15:53
Echt  ??? Das wusste ich nicht. Kompilieren tut das mit Call db.Sign (, , strNodeIdDbScript, True)
Versteh aber nicht ganz warum.
Bei Set notesDocument = notesView.GetDocumentByKey( keyArray [, exactMatch% ] )
kann ich doch auch
notesView.getDocumentByKey(keyArray) schreiben und nicht
notesView.getDocumentByKey(keyArray,)

Alle genannten Variablen sind von unterschiedlichen Datentypen. Also müßte der Compiler - von meinem zugegeben eher kursorisch-theoretischen Verständnis von Compilern - in der Lage sein, die Variablen per Datentyp auf die richtigen Argumente der Methode zu mappen.