Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Nexus am 05.08.04 - 08:33:13

Titel: Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 08:33:13
Servus,

ist es möglich irgendwie ohne Lotus Script in der Formelsprache nen Ablauf zusammenzuwurschteln, dass ich den Effekt einer Zählschleife habe  ???
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Axel am 05.08.04 - 08:34:41
Hi,

meines Wissens nicht. Schleifenfunktionen gibt's erst ab Version 6


Axel
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 11:03:32
Ohne mehr über das angestrebte Ziel zu wissen, bleibt nur die Standard-Antwort: Nein, die R5-Formelsprache erlaubt keine Schleifen.
Wenn Du aber sagst, was Du erreichen willst, fällt uns aber vielleicht ein Workaround ein.

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 12:42:03
Ich hab hier versucht einen Zähler zu bauen. Welcher ne art Zählschleife emulieren soll. Aber irgendwie zählt er nicht... verstehs nicht :(

FIELD Speicher2 := Testfeld1 ;"";


@Replace(Speicher2; "; "; " : " );
FIELD Speicher1 := @Elements(Speicher2);
@If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
   Zaehler + "1" &
   @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
      Zaehler + "1" &
      @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
         Zaehler + "1" &
         @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
            Zaehler + "1" &
            @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
               @Prompt([OK];"Warnung"; Zaehler))
            )
         )
      )
)
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 12:52:47
Deine Formel ist ... sagen wir mal "abenteuerlich" ...

Code
@If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
Soweit ist es noch okay: Wenn Dein Feld Zaehler @Elements ... entspricht, gib' 'nen Prompt aus.
Jetzt kommt der "sonst"-Teil:

Code
Zaehler + "1" &
   @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
Jetzt versuchst Du, zur Zahl "Zaehler" den Text "1" zu addieren und eone LOGISCHE VERKNÜPFUNG mit dem Ergebnis der nächsten If-Abfrage zu machen ...

Beantworte lieber meine Frage, die ich oben gestellt habe: Was willst Du erreichen ?

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Axel am 05.08.04 - 12:53:53
Hi,

du "addierst" Strings. Das kann nicht gehen.

Versuch's mal so:

Zaehler := 0;

FIELD Speicher2 := Testfeld1 ;"";


@Replace(Speicher2; "; "; " : " );
FIELD Speicher1 := @Elements(Speicher2);
@If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
   @Set("Zaehler"; Zaehler  + 1) &
   @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
      @Set("Zaehler"; Zaehler  + 1) &
      @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
         @Set("Zaehler"; Zaehler  + 1) &
         @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
            @Set("Zaehler"; Zaehler  + 1) &
            @If(speicher1 = Zaehler; @Prompt([OK];"Ausgabe"; @Max(Zaehler;Speicher2));
               @Prompt([OK];"Warnung"; Zaehler))
            )
         )
      )
)

Axel
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 12:58:56
Die Sache wird ja noch verrückter:
Erst heisst es:
Code
@Replace(Speicher2; "; "; " : " );

Speicher2 enthält also einen String oder eine StringListe.
Dann kommt aber:
Code
@Max(Zaehler;Speicher2)

Wie soll denn das Maximum aus einer Zahl und einer Textliste ermittelt werden ?

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Axel am 05.08.04 - 13:04:54
Uupps.

Hab ich doch glatt übersehen.

Axel
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 13:08:18
Ging mir auch so. Aber wenn man länger schaut ...

Code
@Prompt([OK];"Warnung"; Zaehler))

Das gibt 'ne leere Massage-Box, da Zaehler nicht in Text umgewandelt wurde.  ;D

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 13:24:36
Ich trage eine Anzahl von Namen ein. Diese sollen ermittelt werden also die Anzahl. Dann soll eine Schleife jeden Namen einzel heraus nehmen und in ein Feld speichern. Die Schleife soll solange laufen, bis die Anzahl der Namen erreicht ist.
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Glombi am 05.08.04 - 13:29:16
Ich trage eine Anzahl von Namen ein.
=> Wo werden die Eingetragen? In ein Feld?

Diese sollen ermittelt werden also die Anzahl. Dann soll eine Schleife jeden Namen einzel heraus nehmen und in ein Feld speichern.
=> in EIN Feld oder pro Name ein Feld?

Wir brauchen schon mehr Infos.

Andreas
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 13:30:00
 ???
Du hast ein Feld A mit n Namen. n ist Dir zur Laufzeit unbekannt.
Die n Namen sollen dann in ein Feld B geschrieben werden.
 ???

So habe ich das jetzt verstanden. Aber das kann es ja nicht sein, denn dann wäre ja
FIELD B := A;

 ???
Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Axel am 05.08.04 - 13:33:36
Hi,

meines Erachtens ist das mit der Formelsprache nicht zu machen, da ja die Anzahl der Namen unterschiedlich sein kann.


Mit fällt auf kein Würkaround ein, sei er selbst noch so gewürkt.

Da wirst du wohl an Script ran müssen.


Axel
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 13:34:08
Namen werden ausgewählt bzw. eingetragen in einem Dialoglisten Feld.

Als ergebnis soll jeder Namen in einem eigenen Feld eingetragen werden. Bzw. übermittelt in eine Feld als eigner Datensatz.

So dass in einer Ansicht, welche eine Spalte hat mit der Beschriftung Namen ( Eindeutige Namen ) diese auflistet, als jeweiliges Dokument.
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Glombi am 05.08.04 - 13:34:38
???
Du hast ein Feld A mit n Namen. n ist Dir zur Laufzeit unbekannt.
Die n Namen sollen dann in ein Feld B geschrieben werden.
 ???

So habe ich das jetzt verstanden. Aber das kann es ja nicht sein, denn dann wäre ja
FIELD B := A;

 ???
Bernhard
;) Das war genau mein Gedankengang.

Bin gespannt, wie sich das entwickelt...

Andreas
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Glombi am 05.08.04 - 13:36:48
"Als ergebnis soll jeder Namen in einem eigenen Feld eingetragen werden. Bzw. übermittelt in eine Feld als eigner Datensatz.

So dass in einer Ansicht, welche eine Spalte hat mit der Beschriftung Namen ( Eindeutige Namen ) diese auflistet, als jeweiliges Dokument. "
==> Pro Name als ein Dokument,

Sowas hatten wir doch erst hier, oder?
Sei es drum, es geht nur mit Script.

Andreas
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 13:36:57
;) Das war genau mein Gedankengang.

Bin gespannt, wie sich das entwickelt...

Andreas

Zum massiven Baldriankonsum !
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 13:38:13
Da wirst du wohl an Script ran müssen.

Axel


Mh... keine Ahnung, wie ich das mit dem Script machen soll :(
Bin nicht so der Notes Spezialist.
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 13:41:00
Mh... keine Ahnung, wie ich das mit dem Script machen soll :(
Bin nicht so der Notes Spezialist.
Das hätten wir jetzt gar nicht gemerkt ...

Schreib' doch mal genau auf, was Du machen willst - und schreibe sauber und nicht sowas wie "soll jeder Namen in einem eigenen Feld eingetragen werden. Bzw. übermittelt in eine Feld als eigner Datensatz" (zwischen "Feld" und "Dokument" besteht schon ein klitzekleiner Unterschied.

Vielleicht lässt sich das ganze ja auch ganz anders lösen.

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Axel am 05.08.04 - 13:46:20
Hi,

ich denke mal das Ganze soll beim Speichern des Dokumentes erfolgen, oder ?

So könnte das aussehen.  Die Feldnamen und den Maskennamen musst du natürlich anpassen.

Sub Querysave(Source As Notesuidocument, Continue As Variant)

Dim session As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim docThis As NotesDocument
Dim docNew As NotesDocument
Dim idx as Integer

Set db = session.CurrentDocument
Set docThis = source.Document

For i = 0 to Ubound(docThis.Dialogliste)
  Set docNew = New NotesDocument(db)
  docNew.Form = "Name der Maske"
  docNew.FeldfürName = docThis.Dialogliste(idx)
  Call docNew.Save(True, False)
Next

...


Axel
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 14:02:38
Also ich habe eine Datenbank übernommen, welche eine Art Terminplaner ist. Da legt eine Person an, und kann anhand von 31 Tagen eintragen, was man an dem jeweiligen Tag macht. siehe Ahnang 1.

Dies wird in einer Ansichtsmaske angezeigt, wo man die Leute sieht, wann sie da sind und wann nicht.

siehe Anhang 3.

Meine Aufgabe ist es jetzt, dass ich eine Maske entwerfen soll, welche eine Gruppenplanung vornimmt. ( Siehe Anhang 2 ) Man hat wie bei der Personenmaske ein ähnlichen aufbau. Man trägt pro Tag die Personen ein und gibt oben an, was sie machen. Dann wird dies gespeichert. Jetzt soll die Maske die Änderungen so durchführen, dass diese in der Ansichtsmaske richtig übernommen werden.



Versteht ihr jetzt,was ich machen möchte / muss ?
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 14:14:41
Auch wenn Du es "machen musst": Du kannst es (noch) nicht und musst dies dem Auftraggeber sagen. Dir fehlt momentan das komplette Grundverständnis für Notes.

Solche konsolidierten Dokumente erstellt man normalerweise mit einem serverbasierenden Agent, und mit Formelsprache ist das nicht zu lösen - LotusScript (oder Java) ist unabdingbar.

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 14:17:44
Kennt ihr eine gutes Lotus Script Tutorial im Netz ?
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 14:23:49
Guckst Du hier:
http://web.archive.org/web/20001022055345/www.lotus.com/wwbpp/action.nsf/101b68a264bc2592852564c000556c79/aadd59b3e427f00c852564e3004929df?OpenDocument (http://web.archive.org/web/20001022055345/www.lotus.com/wwbpp/action.nsf/101b68a264bc2592852564c000556c79/aadd59b3e427f00c852564e3004929df?OpenDocument)

Aber Du musst erstmal bei den Grundlagen anfangen: Begriffe wie "Ansichtsmaske", "Datensatz" oder Aussagen wie "Jetzt soll die Maske die Änderungen so durchführen, dass diese in der Ansichtsmaske richtig übernommen werden" müssen völlig 'raus aus den Gedanken. Mit LS kommst Du sonst keinen Schritt weiter - eher im Gegenteil.

HTH,
Bernhard

PS: Um entsprechende Fachliteratur kommst Du keinesfalls herum.
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Nexus am 05.08.04 - 14:41:06
ok... hab etlich Bücher mir mal besorgt.
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: koehlerbv am 05.08.04 - 23:49:24
Und wenn Du nach oder während der Lektüre auf Probleme stösst: Lass' es uns wissen. Die "Professionals" hier wissen alle, dass sie mal "klein" angefangen haben  ;)

Bernhard
Titel: Re:Formelsprache: Eine Art Zählschleife
Beitrag von: Tode am 06.08.04 - 09:32:32
Muss auch noch meinen Senf dazu geben...

@Nexus:
Wenn Du Notes verstanden hast (und das wirst Du nur mit einem guten Buch oder mit einem Kurs), dann wirst Du sehen, dass das, was Du willst gar nicht so kompliziert ist, wie Du Dich ausdrückst:

Du willst X Namen in ein Dokument eintragen, und in  der Ansicht soll dann für jeden Namen ein Eintrag erscheinen... Das geht ganz einfach (und ohne eine Zeile Script) über die Option "Mehrfachwerte getrennt anzeigen" in der Ansicht...

So, jetzt lernst Du aber erste mal die Terminologie (was ist eine Maske, ein Dokument, ein Feld, eine Ansicht...) und dann kriegst Du das sicher ganz alleine hin.

Tode