Autor Thema: @while Frage  (Gelesen 2296 mal)

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
@while Frage
« am: 26.08.04 - 12:44:04 »
Hallo,

folgendes Problem:

Ich möchte von einem Form aus dynamisch mehrere andere Forms erstellen. Diese sollen Werte von Feldern aus dem Ursprungsform übernehmen. Das anze klappt soweit auch für einzelne Dokumente.
Nun möchte ich das ganze aber für alle zu erstellenden Forms (Anzahl abhängig von n) in einen Abwasch durchlaufen lassen. Also habe ich den code der für ein einzelnes dokument funktioniert genommen udn eine while schleife drumgepackt.

Die Schleife läuft auch durch und erstellt mir insgesamt n Dokumente, soweit so gut. Nur klappt das aktualisieren der Felder im Ausgangsformular irgendwie nicht so recht. Er übergibt in allen durchgängen die gleichen Daten, obwohl die Felder welche übergeben werden bei jedem Durchlauf dynamisch (abhängig von n) geändert werden sollten...

Gibt es da irgendetwas zu beachten? Muss irgendwo ein refresh gesetzt werden???? Irgendwelche ideen?


n:=-numberss;

subsysexp:=@Explode(subsys);
ecnumbersxp:=@Explode(ecnumbers);
alldriversxp:=@Explode(alldrivers);
allplatformsxp:=@Explode(allplatforms);
alllongnamesxp:=@Explode(alllongnames);
allrecxp:=@Explode(allrec);
allactxp:=@Explode(allact);
allacttimexp:=@Explode(allacttime);
allaccxp:=@Explode(allacc);
allmaxxp:=@Explode(allmax);

@While(n!=0;@Prompt([Ok];"laufvariable n ="+ @Text(n);@Text(n));FIELD subsys_temp:=@Subset(@Subset(subsysexp;n);1);FIELD ecnumbers_temp:=@Subset(@Subset(ecnumbersxp;n);1);FIELD alldrivers_temp:=@Subset(@Subset(alldriversxp;n);1);
FIELD allplatforms_temp:=@Subset(@Subset(allplatformsxp;n);1);FIELD alllongnames_temp:=@Subset(@Subset(alllongnamesxp;n);1);FIELD allrec_temp:=@Subset(@Subset(allrecxp;n);1);
FIELD allact_temp:=@Subset(@Subset(allactxp;n);1);FIELD allacttime_temp:=@Subset(@Subset(allacttimexp;n);1);
FIELD allacc_temp:=@Subset(@Subset(allaccxp;n);1);FIELD allmax_temp:=@Subset(@Subset(allmaxxp;n);1);
@Command([FileSave]);@Command([Compose];"add_subsystem");@Command([FileSave]);@Command([FileCloseWindow]);n:=n+1)



Hier das @while nochmal etwas leserlicher:

@While(n!=0;@Prompt([Ok];"laufvariable n ="+ @Text(n);@Text(n));
FIELD subsys_temp:=@Subset(@Subset(subsysexp;n);1);
FIELD ecnumbers_temp:=@Subset(@Subset(ecnumbersxp;n);1);
FIELD alldrivers_temp:=@Subset(@Subset(alldriversxp;n);1);
FIELD allplatforms_temp:=@Subset(@Subset(allplatformsxp;n);1);
FIELD alllongnames_temp:=@Subset(@Subset(alllongnamesxp;n);1);
FIELD allrec_temp:=@Subset(@Subset(allrecxp;n);1);
FIELD allact_temp:=@Subset(@Subset(allactxp;n);1);
FIELD allacttime_temp:=@Subset(@Subset(allacttimexp;n);1);
FIELD allacc_temp:=@Subset(@Subset(allaccxp;n);1);
FIELD allmax_temp:=@Subset(@Subset(allmaxxp;n);1);

@Command([FileSave]);  //zum zwischenspeichern der neuen feldnamen
@Command([Compose];"add_subsystem");
@Command([FileSave]);
@Command([FileCloseWindow]);n:=n+1)



EDIT: Irgendwie scheint er das neue dokument nicht gescheit zu saven+schließen, irgendwie funktioniert die reihenfolge nicht richtig. Am Ende des Durchlaufes sind nur die letzten Datensätze im Form, alle subforms sidn erstellt, aber leer- was kann man da machen???


Danke
« Letzte Änderung: 26.08.04 - 13:42:59 von Peacemaker »

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:@while Frage
« Antwort #1 am: 26.08.04 - 13:52:54 »
versuch das ganze in Script.......
Gruss

Urs

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

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:@while Frage
« Antwort #2 am: 26.08.04 - 13:56:06 »
Jo, hier kommst du vernünftigt nur mit Script weiter

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re:@while Frage
« Antwort #3 am: 26.08.04 - 15:24:30 »
bin in Notes Script ganz schlecht.

Was wäre denn ein Code der im bestehenden Dokument ein neues, anderes Form öffnet, Felder mit werten aus dem ausgangsformular beschreibt und das ganze in einer schleife n mal?

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re:@while Frage
« Antwort #4 am: 26.08.04 - 16:16:19 »
gerade ist mir noch etwas wichtiges aufgefallen - das beschreiben der felder scheint zu klappen - aber :

Wenn ich den Prozess mit Strg+pause unterbreche sind alle bis dahin erstellten formulare noch offen, d.h. sie erben voneinander und nichtmehr vom ursprungsform. Erst nach dme letzten werdne alle auf einmal geschlossen.

Wieso schließt er nicht jedes erstelltes Dokument, direkt nachdem es created wird, so wie es in der schleife definiert ist???

@Command([Compose];"add_subsystem");
@Command([FileSave]);
@Command([FileCloseWindow]);

Denke daran hängt es sich auf

Driri

  • Gast
Re:@while Frage
« Antwort #5 am: 26.08.04 - 16:25:02 »
Die Ausführungsreihenfolge von @Commands entspricht nicht zwangsläufig der innerhalb der Formel.

Ich meine, einige @Commands würden erst zum Schluß ausgeführt. Da gabs schon einige Diskussionen hier im Forum zu.

Offline pedsola

  • Aktives Mitglied
  • ***
  • Beiträge: 128
  • Geschlecht: Männlich
    • anders und sehr GmbH - Internetagentur und eCollaboration
Re:@while Frage
« Antwort #6 am: 26.08.04 - 16:27:15 »
genau!

und um diesen Misstand zu umgehen (zumindest teilweise) kann man @PostedCommand benutzen
Gruß
Pedro

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:@while Frage
« Antwort #7 am: 26.08.04 - 16:33:41 »
... und die @Commands laufen im FrontEnd ab, was nicht dafür gedacht ist, "en masse" Dokumente anzulegen (das gilt auch für LS). Eine vernünftige Lösung ist "nur" über LS und im Backend möglich, mit dem man das alles wirklich selber ind er Hand behält.

Bernhard

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re:@while Frage
« Antwort #8 am: 26.08.04 - 16:44:29 »
... und die @Commands laufen im FrontEnd ab, was nicht dafür gedacht ist, "en masse" Dokumente anzulegen (das gilt auch für LS). Eine vernünftige Lösung ist "nur" über LS und im Backend möglich, mit dem man das alles wirklich selber ind er Hand behält.

Bernhard


wie sähe eine solche lösung im ansatz aus? Wie gesagt, ich habe mit LS noch nicht viel gearbeitet.

In die richtung geht ja folgender beitrag und der darin beschriebene code:
http://www.atnotes.de/index.php?board=3&action=display&threadid=17182

Sub Click(Source As Button)

Dim session As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim uidocNew As NotesUIDocument
Dim docCurrent As NotesDocument
Dim docNew As Notesdocument  

Set uidoc = ws.CurrentDocument
Set docCurrent = uidoc.Document
Set db = session.CurrentDatabase  
Set docNew = New NotesDocument(db)  'Neues Dokument anlegen

docNew.Form = "add_subsystem"
docNew.subsys_temp = doc.Current.subsys_temp
docNew.ec_temp = docCurrent.ec_temp

Set uidocNew = ws.EditDocument(True, docNew)  'Dokument im Frontend öffnen
Call uidocNew.Refresh 'Dokument aktualisieren

End Sub



Beleg ich damit aber ein Button im Form, bekomm ich nur "Variant does not contain an object". Hab das LS soweit umgeschrieben wie in dem Thread beschieben...
Und das Schleifenproblem und das sich in dem Ursprungsform ja durch @subset bei jedem surchlauf die Fieldvalues ändern auch nicht

« Letzte Änderung: 26.08.04 - 16:45:35 von Peacemaker »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:@while Frage
« Antwort #9 am: 26.08.04 - 16:52:23 »
Code
docNew.subsys_temp = doc.Current.subsys_temp 

Der Punkt hinter doc ist überzählig. Du hast docCurrent instantiiert, aber nicht doc.

Warum willst Du eigentlich das neue Doc dann im FrontEnd in den EditMode bringen ? Dann hast Du ja wieder den Trödel wie gehabt ...

Bernhard

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re:@while Frage
« Antwort #10 am: 26.08.04 - 16:58:41 »
Code
docNew.subsys_temp = doc.Current.subsys_temp 

Der Punkt hinter doc ist überzählig. Du hast docCurrent instantiiert, aber nicht doc.

Warum willst Du eigentlich das neue Doc dann im FrontEnd in den EditMode bringen ? Dann hast Du ja wieder den Trödel wie gehabt ...

Bernhard

Das war noch das beispiel aus dem thread - natürlich sind die zeile weg, stattdessen:
Call docNew.Save(True, False)

jetzt kommt auch kein fehler mehr, aber es passiert einfach auch nix, wenn der button gedrückt wird :(

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz