Autor Thema: Problem mit Schleife  (Gelesen 3179 mal)

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Problem mit Schleife
« am: 04.05.07 - 13:45:12 »
Hallo @all

Ich habe irgendein Problem mit einer Schleife...

Als Fehler bekomm ich folgendes...

>>>ERROR: Subscript out of range in INITIALIZE in line 396

meine Script sieht so aus:


If ( answer = 6) Then
      j = 0   
      While Not(docsend Is Nothing)
         recipients = docsend.GetItemValue( "MailAddress" )(j)
         If recipients = "" Then
            Goto EndSub
         Else
            Messagebox "Das sind die Mailaddressen " & recipients
            tmpMsg = tmpMsg & "~" & docsend.GetItemValue( "MailAddress" )( j )      
         End If   
         Call doc.Send(False, Split(recipients, ","))         
         tmpMsg = tmpMsg & "~" & Cstr( j ) & " Mails have been sent"                  
         j = j + 1
      Wend         
      tellit = ws.Prompt(PROMPT_OK, "ENDE", j & " Mails have been sent")
      Call LogMessage( tmpMsg )      
   End If


Kann mit jemand sagen was hier passiert bzw. was ich machen muss das die Schleife nicht in einen Fehler läuft?
Die Fett markierte Zeile im Code ist die uminöse Zeile 396  :-\

Danke schon mal im Voraus

Gruß
ManuelPf

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Problem mit Schleife
« Antwort #1 am: 04.05.07 - 13:52:12 »
Also die fette Zeile zu erkennen war nicht so einfach. Die hab' ich erst gesehen, nachdem ich auf Antworten geklickt hatte.

GetItemValue liefert ein Array zurück. Wenn Du nur einen Wert haben willst, dann

reciptients = docsend.MailAddress(0)
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Problem mit Schleife
« Antwort #2 am: 04.05.07 - 13:56:03 »
Ich denke mal, dass das Script auf die Bretter geht, sobald du über die Anzahl der Einträge in dem Item Mailaddress hinaus kommst mit dem j. Du musst die Obergrenze für j bestimmen und nur bis dahin auch iterieren.

Insgesamt ist mir aber nicht ganz klar, was dieser Scriptschnipsel macht.

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #3 am: 04.05.07 - 14:01:57 »
Ich denke der Code hat so einige Fehler.

Du willst doc.Send machen obwohl doc nicht gesetzt ist! es gibt nur docsend
Wie lange soll er die While Schleife machen??? Endlosschleife?

Was willst du genau machen?

robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #4 am: 04.05.07 - 14:04:38 »
Im Feld "MailAddress" Stehen mehrere E-Mail-Addis an die jeweils einzeln eine E-Mail versendet werden soll...

@tks:
Danke für deine Antwort, aber ich wusste bereits das GetItemValue ein Arry zurückliefert...

@MadMetzger:
Ich glaub bei deiner Antwort bin ich auf dem richtigen Weg... Das Problem ist allerdings das im Feld "MailAddress" mal 2, mal 3, oder mal viel mehr Adressen stehen können... Also kann ich keine feste Obergrenze definieren... kann ich nicht vorher irgendwie schauen wie viele Werte in dem Feld "MailAddress" stehen und diesen Wert als Obergrenze definieren?

 ???

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #5 am: 04.05.07 - 14:07:52 »
@robertpp:
es ist nur ein Auszug aus dem gesamtscript...

doc ist schon gesetzt als NotesDocument genauso wie docsend...

Ich möchte einfach nur eine Möglichkeit haben, jeden einzlnen Werte aus dem Feld "MailAddress" auszulesen (das geht ja schon) und sofort ne Mail zu senden an diesen Adresse...

Das Problem ist eben das er nicht aus der Schleife geht sobald er an den letzten Wert eine Mail gesendet hat sondern wieder an den Schleifenanfang und dann den Fehler bringt...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #6 am: 04.05.07 - 14:08:33 »
Dafür gibt es Ubound.

Bernhard

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Problem mit Schleife
« Antwort #7 am: 04.05.07 - 14:09:13 »
@Manuel:  UBound(docsend.GetItemValue( "MailAddress" )) und Du weißt, wie wieviele Einträge MailAddress hat.

P.S.: Argl. Bernhard war schon wieder schneller.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #8 am: 04.05.07 - 14:12:58 »
Merci für den Tipp aber schon beim Einfügen von der Codezeile meckert er...  ???

Unexpected: UBound; Expected: Statement

Was will er?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #9 am: 04.05.07 - 14:13:27 »
Argl. Bernhard war schon wieder schneller.

Dafür warst Du schneller im Kommunbräu  ;D

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #10 am: 04.05.07 - 14:15:46 »
Danke hat sich erledigt ;-) hab es in eine Variable x geschrieben und diese mit Integer deklariert ;-)

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Problem mit Schleife
« Antwort #11 am: 04.05.07 - 14:19:29 »
Recipients ist doch schon ein Mehrfachfeld oder hast du da Mehrfach-Mehrfachwerte drin?
Dann könntest Du auch einfach ein
Code
Forall rcp in docsend.getitemvalue("Recipients")
if rcp="" then goto endsub
Messagebox "Das sind die Mailaddressen " & recipients
tmpMsg = tmpMsg & "~" & rcp
Call doc.Send(False, Split(rcp, ","))         
end forall

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #12 am: 04.05.07 - 14:27:46 »
nein ich hab da keine mehrfach-mehrfachwerte drin  :)

das war noch ein überbleipsel aus nem test ;-)

Aber wie definiere ich denn eine Obergrenze für meine Schleife?

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Problem mit Schleife
« Antwort #13 am: 04.05.07 - 14:31:33 »
Ubound(Array)
oder via forall x in Array
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Problem mit Schleife
« Antwort #14 am: 04.05.07 - 14:31:51 »
Als Abbruchbedingung für die Schleife?

Pseudocode:
Code
while i < Obergrenze
    do something
    i hochzählen
wend

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Problem mit Schleife
« Antwort #15 am: 04.05.07 - 14:34:22 »
Wenn keine MehrfachMehrfachwerte dann gehts doch auch so:
Code
Dim Recipients as variant
Recipients = docsend.getitemvalue("Recipients")
if recipients(0)="" then goto endsub
Messagebox "Empfänger =" & join(recipients,",")
call docsend.send(false,recipients)
....

ohne Schleife :-)
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Problem mit Schleife
« Antwort #16 am: 04.05.07 - 14:45:02 »
Umi, er will aber jedem User einzeln eine Mail schreiben, ohne dass alle Empfänger im "To" auftauchen (so hätte ich den Code interpretiert).
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Problem mit Schleife
« Antwort #17 am: 04.05.07 - 14:49:54 »
Naja, dafür gibts ja das Feld "BlindCopyTo" :-)
Code
Call docsend.replaceitemvalue("BlindCopyTo",docsend.getitemvalue("Recipients"))
call docsend.send(false)
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline ManuelPf

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: Problem mit Schleife
« Antwort #18 am: 04.05.07 - 14:58:57 »
@m3:
genau richtig... so soll es sein...

@umi:
ja gibt es schon aber es muss doch auch die möglichkeit geben übers To: jedem einzeln ne Mail zu senden...

@madmetzger:

ich habs mit

"While j>x
       Goto End Sub

"
versucht, aber da springt er mit aus der kompletten funktion raus und beendet alles...
Ist nicht schlecht, aber da ich nach dem versenden noch eine nachricht ausgeben will wieviel Mails versendet wurden ist das dumm...

 :(

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Problem mit Schleife
« Antwort #19 am: 04.05.07 - 15:00:42 »
Na dann mach doch das Goto einfach woanders hin und nicht zum Ende der Sub. Maaaah!
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz