Autor Thema: For Schleife geht nur beim ersten Durchlauf  (Gelesen 3123 mal)

Offline orbit

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
For Schleife geht nur beim ersten Durchlauf
« 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #1 am: 26.10.10 - 16:16:24 »
Warum prüfst Du das bei diesem übersichtlichen Code nicht gleich mit dem Debugger?

Bernhard

Offline orbit

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #2 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #3 am: 26.10.10 - 16:49:02 »
Und was steht zu diesem Zeitpunkt in Info (1)? Das ist doch der casus cnactus.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #4 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

Offline orbit

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #5 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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #6 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #7 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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: For Schleife geht nur beim ersten Durchlauf
« Antwort #8 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz