Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: iukhdh am 25.02.08 - 17:38:39

Titel: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: iukhdh am 25.02.08 - 17:38:39
Hallo Forum,

bitte helft mir dochmal kurz bei einem Script Problem.

Ich möchte über einen Agenten Masken ausdrucken. Ich habe mehrere Bedingungen mit denen ich eine von 4 Masken anhand der eingegebenen Werte aussuche. Eine davon lautet


'Ausdruck wenn Mitarbeiter mit Leistungszulagen nix bekommt
      If docTemp.Gesamtpunktzahl(0) >=3.071 And docTemp.andereLeistungszulagen(0) = "Ja"  And docTemp.Maximal(0)= 0 Then
         docTemp.form ="AusdrucknixdankZulage"
      End If


Wenn ich bei meinem Agenten nur ein Dokument auswähle, dann funktioniert es einwandfrei.
Wenn ich aber mehrere Dokumente markiere, dann bekomme ich bei dieser Abfrage immer ein Type Mistmatsch  :) welches sich auf den rot markierten Punkt bezieht. Wenn ich den rausnehme klappts, aber ich benötige das für meine Auswahl.

Woran kann das liegen? Es handelt sich um ein numerisches Feld.

Vielen Dank für einen kleinen Tipp eurerseits.

Thomas
      
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: MadMetzger am 25.02.08 - 19:27:18
Steigt die Abfrage denn bei jedem Dokument aus? Oder nur bei bestimmten? Ist das Feld "Maximal" denn mit irgendeinem Wert vorbelegt? Wenn das nicht der Fall ist, so wird aus deinem numerischen Feld zunächst ein Textfeld mit
Code
""
als Inhalt. Das wäre zumindest eine Erklärung, die mir spontan einfällt. Daran, dass die Bedingung nun bei einem oder mehreren Dokumenten abgefragt wird, kann es normalerweise nicht liegen. Daher drängt sich mir der Verdacht mit der Vorbelegung auf.
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: iukhdh am 25.02.08 - 19:36:28
Hallo Markus,

auf der Heimfahrt im Bus ist mir die Erleuchtung gekommen. Genau das was du beschrieben hast muss es sein. Nicht in allen Fällen ist das Feld Maximal belegt. Da muss ich vorab nochmal eine Abfrage dahingehend einfügen, dass dieser Fall abgefangen wird.

Meine Güte, 1 Stunde Denkarbeit im Geschäft und ich komm nicht drauf, 5 min im Bus und mir fällts wie Schuppen aus den Haaren.

Danke für deine Mithilfe, es bestätigt im Grunde meine Vermutung.

Schönen Abend noch

Thomas
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: MadMetzger am 25.02.08 - 22:03:12
Das freut mich, dass ich dir helfen konnte... Geht mir oft ähnlich, dass ich ewig über einem Problem brüte, bis ich dann was ganz anderes mache und mir die Erleuchtung kommt. Bin schonmal nachts mit der Lösung für ein Problem aufgewacht und habe seitdem immer Stift und Papier am Bett zum Notieren.

Alternativ zur Überprüfung könntest, sofern dass keine weiteren Seiteneffekte mit anderen Berechnungen hat, das Feld auch mit 0 als Vorgabewert belegen. Dann kannst du dir die Überprüfung ersparen...
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: Thomas Schulte am 26.02.08 - 08:42:08
Das ist so das Problem mit der verkürzten Schreibweise. Da passiert so etwas.
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: m3 am 26.02.08 - 08:53:47
Idea Jam: Allow me to turn off the NotesDocument extended syntax. (http://ideajam.net/IdeaJam/P/ij.nsf/0/13164972A014E62E862573F3005AB247?OpenDocument)
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: MadMetzger am 26.02.08 - 09:10:49
Genau daher kommt sowas wohl... Ich bin da auch schon mehrfach drauf reingefallen... Eigentlich benutze ich die verkürzte Notation gerne, sauberer ist aber wohl schon der Zugriff über Methoden. Das ist sogar "objektorientierter", da es das Verhalten eines Notesdokuments nutzt und nicht die Struktur.
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: iukhdh am 26.02.08 - 09:56:21
Ballaballa  ??? Bahnhof  ???

Was um alles in der Welt meint  ihr mit verkürzter Schreibweise?

Bitte um eine Dummie-Erklärung !
 ;)
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: DerAndre am 26.02.08 - 10:06:47
Das:

docTemp.Maximal(0)= 0

Lang über GetFirstItem oder GetItemValue... Halt die Zugriffsfunktionen der Notesdocumentklasse
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: m3 am 26.02.08 - 10:06:51
doc.Feldname = ....
Das ist die verkürzte Schreibweise.

doc.ReplaceItemValue("Feldname", wert)
wäre die "lange"
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: iukhdh am 26.02.08 - 10:27:21
Achso, verstehe. Danke für die Erklärung.

 :D
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: LN4ever am 26.02.08 - 20:42:14
Zum Problem wird die verkürzte Schreibweise doch eigentlich nur, wenn man eine Methode oder Eigenschaft als Feldname verwendet. Das Feld mit dem Namen SIZE (oder Key oder Signer oder ...) kann ich eben nicht in der verkürzten Schreibweise mit doc.Size=35 füllen.

Wirklich verhext kann das werden, wenn ich heute Feldnamen verwende, die in einer zukünftigen Notes-Version zu reservierten Wörtern werden. Also: deutsche Feldwertnamen haben auch einen Vorteil, damit passiert das bestimmt nicht.

Gruß

Norbert
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: iukhdh am 26.02.08 - 20:59:38
Tja Forum,

jetzt hab ich doch noch eine Folgefrage:

Das Problem, dass nichts in dem Feld steht hab ich nun abgefangen, indem ich mit einer IF-Abfrage das Feld auf den Inhalt NULL Abfrage. Klappt.

Aber nun kann es ja auch sein, dass das Feld nicht nix, sondern "" enthält.

Meine obige Abfrage auf "" bezogen also

 if docTemp.Maximal(0)= "" ...

gibt immer Mistmatsch-Fehler.  Das Ganze mit der langen Schreibweise und

if docTemp.GetItemValue( "Maximal" ) = "" ...

ebenso. Liegt das daran, dass es ein Zahlenfeld ist? Oder überseh ich mal wieder etwas?

Gruß
Thomas
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: m3 am 26.02.08 - 21:09:15
Mann! ;)

Du kannst doch nicht eine Zahl mit einem String vergleichen. Wir sind doch hier nicht in JavaScript.

if Cstr(docTemp.GetItemValue( "Maximal" )) = "" ...
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: flaite am 26.02.08 - 21:52:18
Mann! ;)

Du kannst doch nicht eine Zahl mit einem String vergleichen. Wir sind doch hier nicht in JavaScript.

if Cstr(docTemp.GetItemValue( "Maximal" )) = "" ...
Meintest du nicht nicht eher
if Cstr(docTemp.GetItemValue( "Maximal" )(0)) = "" ...
 ;D
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: m3 am 26.02.08 - 22:19:41
Kleinigkeiten! ;)  ;D
Titel: Re: Problem mit If Abfrage im Agenten (LotusScript)
Beitrag von: iukhdh am 26.02.08 - 22:38:13
 :-\
Naja, irgendwie hab ich sowas ja schon vermutet.
Die ganze Zeit ist mir @Text ... im Kopf rumgegangen, aber dass ich mal in der Hilfe da nachgeschaut hätte ... da ist ja ein Verweis auf CStr ...

Wenn ich Euch nicht hätte ...

Vielen Dank, nun kann ich glaub ich gut schlafen  :D