Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Pir0x am 18.08.08 - 08:31:03

Titel: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 08:31:03
Hi, ich hab da mal ne Frage und zwar wollte ich jetzt den Inhalt eines optionsfeldes überprüfen und darauf hin ne bestimmte Aktion ausführen

z.b. ein Optionsfeld mit den Inhalten NO|0 und Yes|1  (Name des Optionsfeldes = test)

meine Frage ist jetzt wie man das ganze ins Lotus Script packen muss, meine Idee war
---------------------------------------------------------------
If docProfile.test= "1") Then
         Call doc.Remove(True)
---------------------------------------------------------------
aber so haut das ganze nicht hin, bekomm dann mit dem Debugger immer die Meldung "Object variable not set"  also irgendwas muss da noch komm nach dem
docProfile.test  , die Hilfe  spuckt mir leider kein Ergebniss dafür aus, könnt ihr mir da helfen ?
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: jr am 18.08.08 - 08:40:16
Hallo,

wenn Du in Formelsprache das Profildokument direkt ansprechen kannst

Code
@GetProfileField(profilename ; fieldname)

so musst Du in Lotus Script zuerst das Profildokument holen.

Code
Set profileDoc = db.GetProfileDocument(profilname)

Erst dann kannst Du auf die Felder zugreifen.

Aber mit docProfile.test = "1" gehts trotzdem nicht, weil in Lotus Script alle Felder potentielle Mehrfachfelder sind und somit indiziert werden müssen. Hier also

Code
If (profileDoc.test(0) = "1") Then Call doc.Remove(True)

Dann klappt das.

Gruß,

Joachim
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: klaussal am 18.08.08 - 08:40:29
If docProfile.test(0) = "1".....
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 08:47:03
also das "Set profileDoc = db.GetProfileDocument(profilname)" war mir klar, hatte ich auch drin, aber allerdings funktioniert das "If (profileDoc.test(0) = "1") Then Call doc.Remove(True)"  auch nicht
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: klaussal am 18.08.08 - 08:55:18
Was sagt der Debugger ?

Gibt es überhaupt ein ProfileDoc ?
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: jr am 18.08.08 - 08:56:17
Hallo,

doch, muss gehen, der Code ist korrekt. Vielleicht darfst Du das Dokument nicht löschen? (ACL Häkchen bei Delete Document?) Oder vielleicht hast Du das Dokument gerade im Frontend geöffnet?

Oder gibt es immer noch den "Object Variable not set"-Error? GetProfileDocument gibt immer ein gültiges Dokument zurück, auch wenn noch gar keins existiert. Also hat profileDoc in jedem Fall einen gültigen Wert. Vielleicht ist im Feld "test" eine Zahl? Dann probiers mal mit CStr(profileDoc.test(0)) = "1". Oder - letzte Idee - doc hat keinen Wert. Kannst ja vorher mal mit "If (Not(doc Is Nothing)) ..." prüfen.

Gruß,

Joachim
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Axel am 18.08.08 - 09:00:30
Zeigt mal den gesmaten Code. Mit dem Schnipsel kann man nichts anfangen. Das sieht nämlich, mit der Ergänzug von (0) ganz vernüftig aus.

Hast du eine vernüftige Fehlerbehandlung eingebaut.


Axel
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 09:07:12
also, ich führ das ganze mal bissl weiter aus, diese Abfrage setzt sich aus 2 Bedingungen zusammen,

einmal wird überprüft ob das Document bearbeitet wurde (flagDocProcessed) und einmal halt welches kästchen im Optionsfeld ausgewählt wurde.

"flagDocProcessed" wird auf True gesetzt sobald das Document bearbeitet wurde

wenn ich jetzt sag
-----------------------------------------------------
"IF flagDocProcessed Then Call doc.Remove(True)"
-----------------------------------------------------

funktioniert das ohne Probleme , aber wenn ich das mit einander kombinieren will
------------------------------------------------------------------------------
"If flagDocProcessed And (docProfile.test(0)= "1" )Then Call Docx.Remove(True)"
------------------------------------------------------------------------------
funktioniert das wieder nicht. und im Feld test ist auch keine Zahl, das mit CStr hab ich bereits probiert

edit: Gesamter Code
Zitat
Set docProfile = db.GetProfileDocument("MABP")
While Not(doc Is Nothing)
      flagDocProcessed = False
....
flagDocProcessed=True    
....
Set docx = doc
Set doc = docsUnprocessed.GetNextDocument(doc)
If flagDocProcessed And (docProfile.test(0)= "1" )Then Call Docx.Remove(True)
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: jr am 18.08.08 - 09:45:59
Hi,

hmm, sieht so aus, als ob Du den Remove zu einem falschen Zeitpunkt machst. Nach dem letzten "GetNextDocument" ist doc Nothing und dann funktioniert die nächste Zeile nicht mehr.

Du kannst doc in einer anderen Variablen zwischenspeichern und dann löschen.

Code
while (Not(doc Is Nothing))
   Set del = Nothing
   ...
   If (... ) Then Set del = doc
   Set doc = docsUnprocessed.GetNextDocument(doc)
   If (Not(del Is Nothig)) Then Call del.Remove(True)
Wend

So müsste es klappen.

Gruß,

Joachim
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 09:50:51
Hi,

hmm, sieht so aus, als ob Du den Remove zu einem falschen Zeitpunkt machst. Nach dem letzten "GetNextDocument" ist doc Nothing und dann funktioniert die nächste Zeile nicht mehr.

Du kannst doc in einer anderen Variablen zwischenspeichern und dann löschen.

genau so mach ichs ja

Set docx = doc
If flagDocProcessed And (docProfile.test(0)= "1" )Then Call Docx.Remove(True)
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: DAU-in am 18.08.08 - 10:00:06
And (docProfile.test(0)= "1" )

gibt es das Item denn?
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 10:04:21
jo gibt es
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: DAU-in am 18.08.08 - 10:10:41
also, ich führ das ganze mal bissl weiter aus, diese Abfrage setzt sich aus 2 Bedingungen zusammen,

einmal wird überprüft ob das Document bearbeitet wurde (flagDocProcessed) und einmal halt welches kästchen im Optionsfeld ausgewählt wurde.

"flagDocProcessed" wird auf True gesetzt sobald das Document bearbeitet wurde

wenn ich jetzt sag
-----------------------------------------------------
"IF flagDocProcessed Then Call doc.Remove(True)"
-----------------------------------------------------

funktioniert das ohne Probleme , aber wenn ich das mit einander kombinieren will
------------------------------------------------------------------------------
"If flagDocProcessed And (docProfile.test(0)= "1" )Then Call Docx.Remove(True)"
------------------------------------------------------------------------------
funktioniert das wieder nicht. und im Feld test ist auch keine Zahl, das mit CStr hab ich bereits probiert

edit: Gesamter Code


ähh, im ersten remove entfernst du doc und im zweiten remove Docx?
was ist denn Docx jetzt?   :-:

grüsse

dau-in
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: jr am 18.08.08 - 10:16:57
Hi,

hast recht, sorry, das mit docx hab ich übersehen.

Die Fehlermeldung sagt, dass ein Objekt nicht gesetzt ist und es gibt nur 4 Objekte in Deinem Code, db, doc, docx, und docProfile. Ich würde jetzt mal den Debugger einschalten und nachschauen, welches Objekt nicht gesetzt ist. Oder Du baust bei allen 4 Objekten eine Msgbox ein.

Ich gehe davon aus, dass eins davon Nothing ist. Aber ohne den kompletten Funktionscode kann ich das nicht feststellen.

Gruß,

Joachim
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: klaussal am 18.08.08 - 10:37:19
Zitat
Was sagt der Debugger ?

Anscheinend ist das ein unbekanntes Instrument....
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 10:52:10
sry hatte ich irgendwie überlesen,

jo das docProfile gibt es
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: m3 am 18.08.08 - 10:56:22
WAS SAGT DER DEBUGGER !?!?!?!?!?!?!  >:(
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: klaussal am 18.08.08 - 10:58:14
Zitat
WAS SAGT DER DEBUGGER !?!?!?!?!?!?!

Das hatte ich schon in #4 um 8:55 gefragt. Bis jetzt keine Antwort !
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: m3 am 18.08.08 - 11:00:11
Ja eh. Aber ev. sind die Großbuchstaben leichter zu lesen. ;)
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: DAU-in am 18.08.08 - 11:07:52
sry hatte ich irgendwie überlesen,

jo das docProfile gibt es

und das Docx???????????  :(
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: Pir0x am 18.08.08 - 11:09:45
gibt es auch im Debugger
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: DAU-in am 18.08.08 - 11:11:53
gibt es auch im Debugger

was gibt es alles im Debugger ??!??!?

docProfile, docx, doc und die collection?

kannnst du mal einen Screenshot reinsetzen?
Titel: Re: Optionsfelder in Lotus Script
Beitrag von: DAU-in am 18.08.08 - 11:19:33
ähh, wenn ich mir den Thread hier anschaue :
http://atnotes.de/index.php?topic=42032.msg269540#msg269540

a) hast du dich inzwischen mit den Grundlagen beschäftigt?
b) kannst du mit dem Debugger umgehen?