Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: manuel am 30.10.02 - 16:24:42

Titel: Script: Privaten Ordner erstellen
Beitrag von: manuel am 30.10.02 - 16:24:42
Hallo !!!

Ich habe einen Ordner vom Typ "Gemeinsam, privat bei Erstbenutzung". In diesen Ordner fülle ich Dokumente per Script. Wenn aber nun dieser Ordner voher noch nicht beim User händisch erstellt wurde, kommt die Fehlermeldung "Can't move document to shared Private On First Use folder ...."

Nun meine Frage: Gibt es im Script eine Möglichkeit, diesen Ordner zu erstellen. Angelegt wurde er bereits vorher ("Gemeinsam, privat bei Erstbenutzung"), er müsste also nur noch für den gerade aktiven User erstellt werden, als privater Ordner also.
Verständlich?

Schönen Gruß
Manuel
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Don Pasquale am 30.10.02 - 16:41:21
Hi Manuel,
würde mich auch interessieren
ich habe das gleiche Problem und bisher keine Lösung gefunden.
Ich lasse die Ordner bisher vorher manuell erstellen.

Ciao

Don Pasquale
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: manuel am 30.10.02 - 16:47:02
Ich lasse ihn auch vorher manuell erstellen, ist aber keine besonders tolle Lösung. Naja, abwarten ....
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: ata am 30.10.02 - 22:21:43
Hallole,

so weit ich weiß geht genau das nicht. Der Ordner (Public, privat on first use) muß zuvor manuell erstellt werden. Mir ist leider kein Script bekannt, daß das leistet...

... aber ich lasse mich gerne eines besseren belehren...

ata
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: wflamme am 30.10.02 - 22:45:41
Gerade vor ein paar Tagen erfolgreich getestet:
Man brauch den Schmonzes überhaupt nicht. Will sagen, auf einem Win32 Client kann man mit individueller Suchmaske arbeiten und behält die Highlightfunktion und kann auf das Rüberschubsen in Folder kpl. verzichten.

Der Trick: 1.Agent öffnet SearchBar per @Command und startet LS-Agent No. 2

Agent No 2 öffnet ein Formular (SaveOptions="0"), baut die Query zusammen und tippt das Ganze per keystrokes-API in die SearchBar. Noch ein 'Return'-keystroke hinterher und ab geht die Post.  Sauschnell und bisher keinerlei Probleme!

Habe mal TheView kontaktiert, ev. sind die an den Details interessiert.

Grüße,
Wolfgang
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Rob Green am 31.10.02 - 00:43:21
oder eine Umgehung des Problems, ich zitiere mal "Walter L" von spotlight.de:

Bei einer Suchfunktion mit ähnlichem Prinzip hab ich das mal so gelöst:

Die Dokumente werden genau wie bei Euch von einem Script-Agent gesucht und verarbeitet, aber als Wrapper drumherum läuft folgende Formel, und die sorgt zuverlässig dafür daß der private Folder existiert bevor das Script versucht, Dokumente hineinzulegen.

@Command([OpenView];"FolderSearch";"";1);
@Command([EditSelectAll]) ;
@Command([RemoveFromFolder];"FolderSearch") ;
@Command([FileCloseWindow]) ;
@Command([FileCloseWindow]) ;
@Command([ToolsRunMacro];"(Ausgabe)");
@PostedCommand([OpenView];"FolderSearch";"";0);

Erklärung:

Zuerst mal wird der Ordner geöffnet - falls er noch nicht als privater existiert, wird er JETZT erstellt - und die Ergebnisse einer evtl vorher gelaufenen Suche werden rausgenommen.

Warum dann 2 mal FileCloseWindow kommt, hab ich vergessen :-)

Danach wird der Script-Agent getriggert, und zuletzt wieder der private Ordner geöffnet um das Ergebnis zu zeigen.

Nebenbei: man sollte IMHO immer die privaten Ordner in der Datenbank auf dem Server ablegen, nie im Desktop. Bei den unweigerlich folgendenen Design-Updates muß sonst der arme Admin jedem einzelnen User erklären wie er die Kachel vom Arbeitsbereich (den ein R5 User ja gar nicht kennt) runternimmt und wieder hinzufügt.

Geschickt von Walter L am 13.02.2002 um 12:55:08


Quelle: http://spotlight.de/zforen/alts/m/alts-1013601308-11691.html
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Axel am 31.10.02 - 08:26:44
Hi,

die Art und Weise wie Rob gepostet hatte ich auch mal versucht. Aber bei über der Hälfte der Clients hat es nicht funktioniert. Nach FileCloseWindow war Feierabend. Ich vermute ein Timing-Problem, aber ganz bin ich der Sache nie auf den Grund gekommen. Hab's dann irgendwann verworfen.

Wenn ich solche privaten Ordner brauche, gehe ich folgenden, wenn auch nicht schönen Weg. Ich füge in den Postopen-Event im Datenbank-Script folgenden Zeilen ein:

@Command([OpenView];"Ordnername");
@Command([FileCloseWindow]) ;

Damit wird der Ornder, wenn er nicht vorhanden ist, beim Öffnen der Datenbank angelegt. Das kurze Öffnen des Ordners ist kaum zu sehen.

Axel
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: manuel am 07.11.02 - 09:42:56
Hallo,

danke für die reichlichen Antworten. Hab' mir das mal näher angesehen was Axel da beschrieben hat.

Da ich im Postopen schon ein bisschen Script-Code habe, habe ich den Formel-Code in einen Agenten gepackt, der nun vom Postopen aus gestartet werden soll. Wenn ich nun mit agent.RunOnServer den Agenten starte, wird dieser auch ausgeführt, zumindest lässt sich das durch den Rückgabewert erahnen.

Doch es wird kein Ordner erstellt. Wenn anschließend versucht wird Dokumente in den Ordner zu verschieben, erscheint erneut eine Fehlermeldung.

Wenn ich den Formel-Code in das QueryOpen packe, schmiert mir gleich das ganze Notes ab.

Was ist da los? Wie könnte ich das lösen, damit beim Öffnen der Ordner erstellt wird, ich aber schon im PostOpen Script-Code habe?

Schöne Gruße, und tschuldiung für die späte Antwort
Manuel
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Axel am 07.11.02 - 10:04:07
Hi,

wieso agent.RunOnServer ?  Wenn du einen privaten Ordner anlegen willst, brauchst du einen Usernamen und den hast du, wenn der Agent auf dem Server läuft m.E. nicht. Der Agent muß auf dem Client ausgeführt werden. Versuch's mal mit agent.run.


Axel
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: manuel am 07.11.02 - 10:12:09
Klingt irgendwie logisch! bekomme aber auch hier die Fehlermeldung "Can't move doc ...... "
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Axel am 07.11.02 - 10:30:16
Hi,

läuft der Agent denn und wir überhaupt ein Ordner angelegt ?


Axel
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: manuel am 07.11.02 - 11:12:06
Der Agent läuft, als Rückgabewert bekomme ich "0" - also war der Agent (anscheinend) erfolgreich. Nur der Ordner wurde nicht erstellt.

Folgende Fehlermeldung habe ich nun erhalten:
Notes-Fehler: @Befehle und andere UI-Funktionen sind in diesem Suchtyp nicht zulässig; bitte wählen Sie 'Einmal ausführen (@Befehle können benutzt werden)'

Also hab' ich mal folgendes eingestellt:
"Verfügbar für Benutzer mit öffentlichem Zugriff",
"Manuell aus der Liste der Agenten"
und
"Einmal ausführen (...)"


Funktioniert auch nicht  ???

Vielleicht funktionieren diese Befehle in einem Agenten nicht, obwohl in der Hilfe steht, dass man @Command-Befehle in manuellen Agenten bzw. in Agenten, die bei Eingang einer neuen Mail ausgelöst werden, nutzen kann.
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Axel am 07.11.02 - 11:39:15
Hi,

die Befehle funktionieren in einem Agenten. So was hab ich auch schon gemacht, allerdings hab ich den Agenten mit @Command([ToolsRunMacro]; ...) gestartet.

Vielleicht liegt es an der Art und Weise, wie der Agent aufgerufen wird. Versuch doch mal den Agent manuell aus dem Menü Aktionen zu starten.

Sonst fällt mir im Moment dazu relativ wenig ein.   :(

Axel
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: manuel am 07.11.02 - 12:07:55
Hi Axel

Wenn ich den Agenten manuell aufrufe funktionierts, nur das ist eben nicht Sinn und Zweck, das ganze sollte automatisch ablaufen.

Ich versuche den Agenten mit folgenden Script aufzurufen:
   Dim agent As NotesAgent
   Set agent = db.GetAgent("VDataErstellen")
   status = agent.Run
   Msgbox status, 0, "agent"

Der Rückgabewert ist wie gesagt '0'

Mahlzeit !
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: Axel am 07.11.02 - 13:14:45
Hi,

der Code sieht eigentlich richtig aus. Ich gehe mal davon aus da die Variable db richtig initialisiert ist, d.h. session.CurrentDatabase.
Sollte prinzipiell funktionieren.

Ich selbst hatte allerdings schon diverse Probleme mit dieser Art Agenten zu starten. Das warum habe ich nie herausfinden können. Ich konnte es dann immer irgendwie umgehen.

Könnte sein, das die gesamte Klasse nicht ganz sauber läuft.

Vielleicht hat noch jemand irgendeine Idee, ich bin mit meinem Latein leider am Ende.  >:( >:(

Axel
 
 
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: ata am 07.11.02 - 13:54:45
... ich habe das Posting verfolgt. Zu dem Agent fällt mir noch folgendes ein: Ein Agent handelt im Auftrag dessen, mit wessen ID er unterzeichnet ist. Vielleicht kann man private Ordner nur mit der eigenen ID erstellen....

... sonst fällt mir im Augenblick nichts dazu ein...

ata
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: manuel am 08.11.02 - 08:46:57
Naja, der Agent wurde von mir erstellt, und ich will ihn ausführen, also müsste er auch im Auftrag meiner handeln.

Vielleicht ist es auch nicht notwendig sich hierbei auf einen Agenten zu fixieren. Vielleicht gibt's andere Möglichkeiten, wie beim Öffnen des Dokuments eine Formel ausgeführt werden kann. Eine andere Möglichkeit wäre, das Script in einen Agenten zu packen und diesen dann mit einem Formel-Befehl aufrufen. Dann könnte man auch die Formel zur Erstellung des Ordners unterbringen. Ich versuch's mal....
Titel: Re:Script: Privaten Ordner erstellen
Beitrag von: ata am 08.11.02 - 09:23:10
... ich gehe davon aus, daß du im Serverdokument unter Einschränkugen die erforderlichen Rechte hast... oder ?

ata