Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: orbit am 26.10.10 - 15:57:49

Titel: For Schleife geht nur beim ersten Durchlauf
Beitrag von: orbit am 26.10.10 - 15:57:49
Hallo,

ich hab folgendes Problem mit einem Script:

Über die Auswahl in einem Feld (checkbox) soll an 1-6 Gruppen ein Mail versendet werden.
Die Empfänger der Gruppen werden in einem eigenen Dokument gewartet.
Zu Testzwecken hab ich jetzt halt eine Messagebox drinnen, die die Größe des Dokuments abfragt, in dem die Empfänger stehen sollen.

Das Problem ist nun, dass der erste Durchlauf ok ist, beim zweiten dann aber die Fehlermeldung kommt Object Variable not set.

Die Messagebox mit dem Suchstring kommt auch in der zweiten runde noch richtig, trotzdem wird aber offensichtlich das Dokument nicht gefunden.


Info = Split(uidoc.FieldGetText("Abschluss_1"),";")
For x = 0 To 2   
      
      an = Info(x)
            
      sstring = {Form="Maske14" & cfgKey="}+an+{"}
      Messagebox sstring
      
      Set dcSearch = db.Search(sstring, Nothing,1)
      Set docSearch = dcSearch.GetFirstDocument
      Messagebox docSearch.Size
   Next

Danke!
\Florian
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: koehlerbv am 26.10.10 - 16:16:24
Warum prüfst Du das bei diesem übersichtlichen Code nicht gleich mit dem Debugger?

Bernhard
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: orbit am 26.10.10 - 16:45:57
Hab ich ja,

der sagt bei der zweiten Runde dcsearch count 0 er verrät mir aber nicht
warum das so ist bzw. was ich ändern muss damit es nicht mehr so ist.

\Florian
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: koehlerbv am 26.10.10 - 16:49:02
Und was steht zu diesem Zeitpunkt in Info (1)? Das ist doch der casus cnactus.

Bernhard
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: Peter Klett am 26.10.10 - 16:58:24
Du schreibst, dass der Suchstring korrekt wäre. Auch in Bezug auf Groß-/Kleinschreibung?

Wäre er korrekt, würde er auch ein Dokument finden
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: orbit am 26.10.10 - 17:01:42
Ja! Wer lesen kann ist klar im vorteil!
Da steht " IT" - sollte aber "IT" stehen - das kleine bisschen nichts hab ich jetzt seit über einer Stunde übersehen.... an = Trim(Info(x)) und schon gehts!

Danke!
\Florian
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: Peter Klett am 26.10.10 - 17:04:30
Ich würde ja lieber die Checkbox gleich richtig machen, anstatt nachher falsche Daten korrigieren zu müssen
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: koehlerbv am 26.10.10 - 17:04:34
Deinen Code solltest Du noch *mindestens* wie folgt ändern:

Info = Split(uidoc.FieldGetText("Abschluss_1"),";")
For x = 0 To Ubound (Info)   
     
      an = Info(x)
           
      sstring = {Form="Maske14" & cfgKey="}+an+{"}
      Messagebox sstring
     
      Set dcSearch = db.Search(sstring, Nothing,1)
      If dcSearch.Count = 0 Then
         'HIER DEINE FEHLERBEHANDLUNG
      End If
      Set docSearch = dcSearch.GetFirstDocument
      Messagebox docSearch.Size
   Next

HTH,
Bernhard
Titel: Re: For Schleife geht nur beim ersten Durchlauf
Beitrag von: Peter Klett am 26.10.10 - 17:22:38
Zusätzlich zu Bernhards Empfehlungen würde ich auch nicht mit Split arbeiten, sondern auf das Feld übers Backend zugreifen, da hast Du dann schon das Array

...
Set doc = uidoc.Document
If doc.Abschluss_1 (0) <> "" Then
   Forall abschluss in doc.Abschluss_1
      sstring = {Form="Maske14" & cfgKey="} & abschluss &{"}
      ...
   End Forall
End If