Domino 9 und frühere Versionen > ND6: Administration & Userprobleme

Schleife mit variabler Zelle

<< < (3/5) > >>

Thomas Schulte:

--- Zitat von: LukasSChl am 21.04.10 - 09:08:55 ---jedoch versteh ich nicht, warum die Prüfung ob das Feld leer ist schon fehlschlägt.
Außerdem ist mir die Bedeutung der Zeile:
"counter = counter + m" nicht klar (aus dem Beispiel in der Hilfe übernommen)

Wie sieht der Code denn sonst aus, aufm richtigen Weg??

--- Ende Zitat ---
Deine Prüfung schlägt deswegen fehl,weil du in der verkürzten Notation schreibst. Und da hat Bernhard dir schon gesagt ,das du dann IMMER mit einem ARRAY rechnen musst.
oDoc.pause_1 = "" geht gar nicht. Wenn schon, dann oDoc.pause_1(0). Noch sinnvoller wäre es aber wenn du mit dem NotesItem Object arbeiten würdest.
Davon abgesehen ist die ganze Konstruktion falsch. Du mixt verkürzte und lange Notation mit einer While Schleife bei der du wieder die verkürzte Notation verwendest.

Les dir doch bitte bevor du jetzt weiterbastelst erst einmal alles was in der Hilfe zu NotesItem steht durch.

Peter Klett:
If oDoc.Pause_1 = "" Then ist nicht ganz korrekt, richtig ist:

If oDoc.Pause_1 (0) = "" Then

Felder in Notes sind grundsätzlich Arrays, selbst wenn es keine Mehrfachwerte sind

While oDoc.Pause_1  >< ""  

ungleich ist <>, aus dieser Schleife kommst Du niemals wieder raus, weil oDoc.Pause_1 (besser gesagt oDoc.Pause_1 (0), per obiger Bedingung schon ungleich leer ist.

Was soll das Script eigentlich genau machen?

Das mit dem Zuweisen von Werten in Felder klären wir dann danach, das geht so nicht, wie Du es geschrieben hast.

LukasSChl:
Danke für die Hilfe

@Thomas Schulte
gemacht, leider bleibt davon kaum was hängen, da ich die ScriptSpache nie gelernt habe, bin einfach eingestiegen und hab mir was die Script-Sprache angeht, alles entweder abgeguckt oder selbst "erbastelt".

@Peter Klett
Es soll gucken ob das erste Feld leer ist,
wenn ja -> reinschreiben
wenn nein -> gucken ob nächstes Feld leer ist, solange bis alle Felder abgearbeitet wurden.

Hab jetzt noch etwas dran geschraubt:

--- Code: ---For X = 1 To 6
     If oDoc.GetItemValue("Pause_" & X)(0) = "" Then
          Array = oDoc.GetItemValue("Pause_" & X)
          Forall P In Array
               counter = counter + m ' ka wozu diese Zeile gut sein soll
               Set item = oDoc.ReplaceItemValue( "Array", (Pause_Std & ":" & pause))
          End Forall
     End If
Next

--- Ende Code ---

Die Prüfungen laufen alle ohne Probleme.
Was jetzt noch fehlt ist, dass hier:
"Set item = oDoc.ReplaceItemValue( "Array", (Pause_Std & ":" & pause))"
in das jeweilige Feld reingeschrieben wird.

So wie es jetzt ist, wird in Array aber nur der Wert den jeweiligen Feldes gespeichert, anstatt der Verweis auf das Feld selber.

Also im Endeffekt muss ja nurnoch an folgenden Zeile was verändert werden:
"Array = oDoc.GetItemValue("Pause_" & X)"
und
"Set item = oDoc.ReplaceItemValue( "Array", (Pause_Std & ":" & pause))"

Die einfachste Lösung:
"Array = oDoc.GetItemName("Pause_" & X)"
geht leider nicht xD

Edit:

Folgendes klappt auch leider nicht, obwohl man so ja laut Hilfe den Namen des Items herrausbekommt.

--- Code: ---For X = 1 To 6
     If oDoc.GetItemValue("Pause_" & X)(0) = "" Then

          Set item = doc.GetFirstItem( "Pause_" & X ) ' "Variant does not contain an Object"
          itemName = item.Name

          Forall P In Array
               counter = counter + m ' ka wozu diese Zeile gut sein soll
               Set item = oDoc.ReplaceItemValue( "itemName", (Pause_Std & ":" & pause))
          End Forall
     End If
Next

--- Ende Code ---

mfg Lukas

Peter Klett:
das sieht jetzt schon viel besser aus.

Das Schreiben in das Feld ist einfacher, als Du gedacht hast. So sollte es das tun, was Du willst:

For X = 1 To 6
     If oDoc.GetItemValue("Pause_" & X)(0) = "" Then         
          Call oDoc.ReplaceItemValue("Pause_" & X, (Pause_Std & ":" & pause))
     End If
Next

Peter Klett:
Nachtrag: den Counter habe ich weggelassen, wenn Du den für irgendetwas benötigst, muss der natürlich noch da mit rein.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln