Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Escort am 26.04.04 - 18:00:15

Titel: Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 26.04.04 - 18:00:15
Hallo Spezialisten,

ich bräuchte dringendst Eure Hilfe!

Mein System besteht im Prinzip aus zwei Datenbanken:
1) einem Datenbank-Portal (PORTAL)
2) Projekte-Datenbank (PRJDB) - hiervon kann es unendlich viele geben

Prinzipiell sieht meine Idee folgendermassen aus:

ad 1) Das PORTAL hat folgende Funktionalität:
*) Neues Projekt (PRJDB) anlegen
*) gewünschte PRJDB durch Doppelklick öffnen (jede PRJDB repräsentiert eine eigene NSF-Datei)
*) Zugriffsrechte für die jeweilige PRJDB definieren
*) Dokumenten-Vorlagen definieren (Word-Briefvorlagen, Excel-Kalkulationen, Fax-Deckbätter, etc)
*) Link auf andere notwendige Datenbanken (Adressen, etc.)

Die Dokumenten-Vorlagen haben z.B.
*) einen Titel (z.B: Brief, Kalkulation)
*) im Feld Body entweder ein Word-Dokument, eine Excel-Kalkulation, ein Fax-Deckblatt, etc
*) definierte Zugriffsrechte (jeder User soll einstellen können, wer seine Vorlagen ebenfalls verwenden darf)

ad2) hier befinden sich die eigentlichen Projekt-Daten, also
++ Mails
++ Briefe
++ Fax
++ Kalkulationen
++ etc.

Nun zum Problem:
Die Dokumenten-Vorlagen werden im PORTAL angelegt, um sie dann in den jeweiligen PRJDB verwenden zu können,
d.h., wenn ich mich in einem Projekt befinde, soll ich die Möglichkeit haben, ein neues Dokument mittels einer Vorlage
aus dem PROTAL zu erstellen (das ich dann fertig ausfüllen kann).
In der Ansicht der PRJDB gibt's also einen Button "Dokument erstellen von Vorlage", wo  ich dann mittels
Picklist-Befehl sämtliche Vorlagen zur Auswahl bereitstelle.

So, und jetzt steh ich leider etwas daneben - Wie bekomme ich jetzt sämtliche Daten von der jeweiligen Vorlage in mein Dokument der aktuellen PRJDB?

Könnt Ihr mir bitte etwas auf die Sprünge helfen?

Danke im voraus.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: MrMagoo am 27.04.04 - 08:27:53
Hallo Escort,

ich denke Du möchtest die Vorlage (Word, Excel ) komplett in deine PRJDB übernehmen?


Also ich würde es nach auswahl aus der Picklist einfach zwischenspeichern

      If ( o.Type = EMBED_ATTACHMENT ) Then
                  Call o.ExtractFile("c:\temp\temp.doc")
               End If

und dann an das neu zu erstellende Dokument anhängen

Call Source.CreateObject("Letter","","c:\temp\temp.doc")

hoffe das hilft Dir.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 08:57:33
Hallo Escort,

ich denke Du möchtest die Vorlage (Word, Excel ) komplett in deine PRJDB übernehmen?


Also ich würde es nach auswahl aus der Picklist einfach zwischenspeichern

      If ( o.Type = EMBED_ATTACHMENT ) Then
                  Call o.ExtractFile("c:\temp\temp.doc")
               End If

und dann an das neu zu erstellende Dokument anhängen

Call Source.CreateObject("Letter","","c:\temp\temp.doc")

hoffe das hilft Dir.


Vielleicht hab ich mich etwas unverständlich ausgedrückt.

Meine Vorlagen-Masken  haben folgende Felder:
*) einen Typ (Text): z.B. Word, Excel
*) eine Bezeichnung (Text): z.B. Brief, Kalkulation, Fax,
*) ein Body-Feld (Rich-Text): und dieses Feld beinhaltet jetzt sozusagen diese Dokumentenvorlage eingebettet(also einen Word-Brief, oder eine Excel-Kalkulation,etc - aber nicht als Attachment, sondern eingebettet!!!).

Wenn ich jetzt auf "Neues Dokument von Vorlage" wählen anklicke, anschliessend als Vorlage z.B: Brief auswähle (das Dokument mit der eingebetten Word-Vorlage), soll das System in der aktuellen Datenbank ein neues Dokument öffnen, das eben wir oben beschrieben der Vorlage entpricht.

Zur Weiterbearbeitung dieses neuen Dokuments (von der Vorlage) könnte ich dann eben noch den
*) Titel
*) bzw. durch Doppelklick auf das eingebettete Word-Dokument meinen Brief weiterbearbeiten

Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 09:26:31
Hi,

also die Vorlagen sind fertige Dokumente im PORTAL ?

Dann könnte man das folgendermaßen machen :

- nach Auswahl der Vorlage Kopieren des Dokuments in die jeweilige PRJDB über NotesDocument.CopyToDatabase

- Ermitteln des neuen Dokuments (ergibt sich aus dem CopyToDatabase) und Öffnen des neuen Dokuments im Frontend


Problem ist dann natürlich, daß das Dokument bereits angelegt ist. D.h. Du müßtest Dir noch überlegen, was passiert wenn der Benutzer dann doch nicht speichern will.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 09:46:20
Hi,

also die Vorlagen sind fertige Dokumente im PORTAL ?

Dann könnte man das folgendermaßen machen :

- nach Auswahl der Vorlage Kopieren des Dokuments in die jeweilige PRJDB über NotesDocument.CopyToDatabase

- Ermitteln des neuen Dokuments (ergibt sich aus dem CopyToDatabase) und Öffnen des neuen Dokuments im Frontend


Problem ist dann natürlich, daß das Dokument bereits angelegt ist. D.h. Du müßtest Dir noch überlegen, was passiert wenn der Benutzer dann doch nicht speichern will.
könnte das irgendwie mit einem Profildokument funktionieren - wo ich zuerst das ganze Dokument reinkopiere und dann im neuen Dokument die Felder aus dem Profildokument setze oder die DocumentUniqueID umbiege?
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 09:55:11
Wozu Profildokumente bemühen ? Der Weg über CopyToDatabase ist eigentlich recht einfach, vorausgesetzt, die Vorlagen liegen als fertige Dokumente in der PORTAL-DB.

Du brauchst in der PORTAL dann eine Ansicht, die alle Vorlagen enthält und baust Dir aus Typ und Bezeichnung einen Key zusammen. Wenn Du dann über eine PicklistCollection die Auswahl triffst, erhälst Du als Ergebnis ein Dokument zurück. Diese wird dann per CopyToDatabase in die jeweilige PRJDB kopiert und geöffnet.

Das Löschen kann man über verschiedene Wege realisieren. Sei es, daß der User beim Speichern ein Flag setzt und ein Agent im Hintergrund periodisch nicht geflagte Docs löscht oder über Aktionen direkt löschen.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 10:16:03
Wozu Profildokumente bemühen ? Der Weg über CopyToDatabase ist eigentlich recht einfach, vorausgesetzt, die Vorlagen liegen als fertige Dokumente in der PORTAL-DB.

Du brauchst in der PORTAL dann eine Ansicht, die alle Vorlagen enthält und baust Dir aus Typ und Bezeichnung einen Key zusammen. Wenn Du dann über eine PicklistCollection die Auswahl triffst, erhälst Du als Ergebnis ein Dokument zurück. Diese wird dann per CopyToDatabase in die jeweilige PRJDB kopiert und geöffnet.

Das Löschen kann man über verschiedene Wege realisieren. Sei es, daß der User beim Speichern ein Flag setzt und ein Agent im Hintergrund periodisch nicht geflagte Docs löscht oder über Aktionen direkt löschen.

Ja die Vorlagen im PORTAL sind komplett fertig - ich möchte sozusagen nur die Werte des neuen Dokuments als Defaultwerte mit denen der Vorlage belegen.

...Ich weiss nicht so recht - der Agent müsste ja dann permanent laufen - ist das sinnvoll?

Mir würde meine Variante besser gefallen, allerdings hab ich keine Ahnung wie man das prinzipiell lösen könnte.

Kann ich die fertige Vorlage aus dem Portal mit einem Rutsch in ein Profildokument schaufeln und dann in das neue Dokument einlesen? (dann könnt ich mir auch den per. Agenten sparen)
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 11:01:40
D.h. Du willst die Vorlagen als Profile in die PRJDBs reinkopieren ? Dann kannst Du ja gleich die Vorlagen beim Erstellen der PRJDB rüberkopieren. Und Profildokumente sind auch dort nicht notwendig, auch dann reichen normale Dokumente, von denen eine Kopie gezogen wird.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 11:13:56
D.h. Du willst die Vorlagen als Profile in die PRJDBs reinkopieren ? Dann kannst Du ja gleich die Vorlagen beim Erstellen der PRJDB rüberkopieren.
Beim Erstellen rüberkopieren bringt nix - sollte sich die Vorlage iregndwann ändern (z.B geänderte Fax/TelNr, Anschrift, etc) dann hab ich ein Problem für alle ab diesem Zeitpunkt erstellten Dokumente.

D.h. die ProjekteDatenbank soll sich schon immer auf die aktuelle Vorlage im PORTAL beziehen.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Axel am 27.04.04 - 11:21:41
Hi,

wenn ich dich richtig verstehe, sollen alle Projekt-Datenbanken sich die Vorlagen aus dem Portal holen. Richtig?


Axel
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 11:36:46
Hi,

wenn ich dich richtig verstehe, sollen alle Projekt-Datenbanken sich die Vorlagen aus dem Portal holen. Richtig?


Axel

Ja genau - eigentlich ganz einfach!

Ich öffne übers PORTAL irgendeine ProjektDB und in dieser möcht ich jetzt z.B. einen Brief erstellen.
Damit ich meinen eingebetten Word-Brief nicht jedesmal (mit Firmennamen, Anschrift, Tel, Fax, ......) neu erfinden muss, lege ich eine Vorlage (also ein Dokument mit  eingebettetem Word-Dokument) ins PORTAL.
-->Ich klick auf "Neues Dokument von Vorlage" --> wähle meine Vorlage aus dem PORTAL und in meiner ProjekteDB soll jetzt ein neues Dokument geöffnet werden, inder sich eingebettet mein Word-Brief (den ich dann durch Doppleklick im Word öffnen kann) befindet
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Axel am 27.04.04 - 11:53:37
Hi,

ganz grob skizziert könnte ich mir das so vorstellen:

Du läßt dir von der Picklist die DocID des gewählten Dokumentes zurückgeben. Dann suchst du dir das Dokument mit der Methode GetDocumentByUNID aus der NotesDatabase-Klasse. Anschließend öffnest du das Dokument mit der Methode EditDocument aud NotesUIWorkspace.

Beispiele zu den Methoden findest du in der Designer-Hilfe.

Axel
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 11:53:42
Okay, dann würde ich immer noch die Lösung über CopyToDatabase nehmen.

Das mit den Profildokumenten hab ich in dem Zusammenhang dann auch nicht richtig verstanden. Vielleicht erklärst Du nochmal, wie Du das meinst.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 12:27:44
Okay, dann würde ich immer noch die Lösung über CopyToDatabase nehmen.

Das mit den Profildokumenten hab ich in dem Zusammenhang dann auch nicht richtig verstanden. Vielleicht erklärst Du nochmal, wie Du das meinst.

Naja, ich hab mir gedacht - nachdem mir Picklist ja nur einen Wert zurückliefert z.B; die DOCID der Vorlage - kopiere ich erstmal die Vorlage mit der jeweiligen DOCID (die mir Picklist liefert) aus dem PORTAL in meine aktuelle PROJEKTEDB in ein Profildokument (das unsichtbar sein kann).

--> dann hätt ich zumindest mal die Daten
*) Typ (Text):
*) Bezeichnung (Text):
*) Body-Feld (Rich-Text):
in meiner aktuellen PROJEKTEDB.

Jetzt öffne ich in meiner aktuellen PROJEKTEDB ein NEUES DOKUMENT, das ebenfalls die Felder
*) Typ (Text):
*) Bezeichnung (Text):
*) Body-Feld (Rich-Text):
enthält, und fülle sie mit dem Inhalt des Profildokuments (Vorlage) der aktuellen Datenbank.

Die Idee des Profildokuments wollt ich deswegen verwenden, weil ich es als Ablage für "globale Variablen" also die Vorlagenwerte einsetzen möchte.
Theoretisch könnte man das Profildokument, nachdem die Felder des "Neuen Dokuments" mit den Profildokument-Werten gefüllt wurden, wieder verwerfen.

Ich weiss nicht, vielleicht geht's auch viel einfacher?
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 12:53:14
Dann brauchst Du aber eigentlich kein Profildokument, da reicht ja auch die Vorlage selber.

@Axel :

So würde aber die Vorlage zum Bearbeiten geöffnet. Dann müßte man von der immer noch eine Kopie in der PRJDB erstellen.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Axel am 27.04.04 - 13:01:55
@Diri

Yoo, hast recht. Hab ich übersehen.


Axel
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 13:06:16
Dann brauchst Du aber eigentlich kein Profildokument, da reicht ja auch die Vorlage selber.

@Axel :

So würde aber die Vorlage zum Bearbeiten geöffnet. Dann müßte man von der immer noch eine Kopie in der PRJDB erstellen.

Wie, was? Das versteh ich jetzt nicht ganz?
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 13:25:57
Welches von beiden  ;D

Wenn Du erst die Vorlage in ein Profildokument kopierst, daraus dann ein neues Dokument erzeugst und dann das Profil wieder wegwirfst, wozu dann überhaupt ein Profildokument ?
Dann kannst Du dir den einen Schritt doch gleich sparen und direkt aus der Vorlage ein neues Dokument erzeugen.

Axel hatte vorgeschlagen, über eine Picklist die DocID der Vorlage zu ermitteln und diese dann zum Bearbeiten zu öffnen. Dann würden Änderungen aber direkt in der Vorlage gespeichert. Man müßte dann also wieder eine Kopie ziehen und die Änderungen in der Vorlage verwerfen.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 13:29:46

Dann kannst Du dir den einen Schritt doch gleich sparen und direkt aus der Vorlage ein neues Dokument erzeugen.


Und wie mach ich das? Wie erstell ich in meiner PROJEKTEDB ein neues Dokument aus der Vorlage im PORTAL? Das ist ja das Problem von dem ich die längste Zeit schreibe?
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 13:35:21
Das habe ich Dir in meinem ersten Post beantwortet. Entweder kopierst Du das komplette Dokument oder Du kopierst die Items aus der Vorlage in ein neues Dokument (das stand nicht im ersten Post, ist mir gerade noch eingefallen).
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 27.04.04 - 13:41:55
Das habe ich Dir in meinem ersten Post beantwortet. Entweder kopierst Du das komplette Dokument oder Du kopierst die Items aus der Vorlage in ein neues Dokument (das stand nicht im ersten Post, ist mir gerade noch eingefallen).

Kann ich die Items aus der Vorlage im PORTAL direkt in mein neues Dokument in der PROJEKTEDB kopieren?
Wenn ja, wie (mit welchen Mitteln/Befehl/Klasse)?
Die DOCID der Vorlage im PORTAL hätt ich ja (von Picklist), aber wie kann ich dann die Items der Vorlage im PORTAL aus einer anderern Datenbank (PROJEKTEDB) auslesen?

Was ich meine, wie funktioniert der Datenaustausch zwischen zwei Datenbanken
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 27.04.04 - 16:48:47
Dafür bräuchtest Du ein neues Dokument und die Vorlage. Dann kannst Du über CopyAllItems die Items aus der Vorlage in das neue Dokument kopieren.

Call VorlageDoc.CopyAllItems(NeuesDoc, True)

Allerdings dürfte es da mit RTF wieder mal die üblichen Probleme geben, denn diese werden erst nach einem Save korrekt angezeigt. Ist dann also gehupft wie gesprungen, ob Du das über CopyToDatabase oder über CopyAllItems machst.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 29.04.04 - 22:45:26
Hi,

also die Vorlagen sind fertige Dokumente im PORTAL ?

Dann könnte man das folgendermaßen machen :

- nach Auswahl der Vorlage Kopieren des Dokuments in die jeweilige PRJDB über NotesDocument.CopyToDatabase

- Ermitteln des neuen Dokuments (ergibt sich aus dem CopyToDatabase) und Öffnen des neuen Dokuments im Frontend


Problem ist dann natürlich, daß das Dokument bereits angelegt ist. D.h. Du müßtest Dir noch überlegen, was passiert wenn der Benutzer dann doch nicht speichern will.

Hallo Leute...

...vorerst mal danke für eure Geduld und Hilfe.

Mittlerweile hab ich es endlich geschafft, dass mein Programm die gewählte Vorlage
aus dem PORTAL in die PROJEKTEDB reinkopiert und abspeichert (anders wäre es glaub ich zu kompliziert).

Ich hab es so gelöst:
Ein Aktionsbutton in einer $All-Ansicht öffnet mir mittels Picklist eine Auswahl der verfügbaren Vorlagen und ich speichere mir in einem Profildokument der aktuellen Datenbank die UID der gewählten Vorlage.
Mittels CopytoDatabase zieh' ich mir dann die Vorlage in meine aktuelle PROJEKTEDB rein.

Mein Problem:
Ich möchte zur weiteren Bearbeitung nun die importierte Vorlage im Edit-Mode öffnen.
Allerdings habe ich jetzt hier ein kleines Verständnisproblem:
-> Wie weiss ich, welches mein neues Dokument eigentlich ist (ich kenn ja keine ID oder ähnliches).

Könnt ihr mir bitte wiedermal helfen.

Danke im voraus!
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: koehlerbv am 30.04.04 - 00:00:51
Schaust Du mal in die DesignerHelp ?
Zitat
Set notesDocument = notesDocument.CopyToDatabase (notesDatabase )
Du hast doch damit für das gerade instantiierte NotesDocument alle Properties von diesem im Zugriff, auch die UniversalID ...

Bevor Du weiter machst, solltest Du Dir unbedingt einen genaueren Überblick über die Notes-Klassenbibliothek (bzw. die Notes-Architektur insgesamt) machen. Du wirst sehen, dass Dir anschliessend vieles erheblich leichter fällt. Zur Zeit stocherst Du arg im Nebel !

Bernhard
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 30.04.04 - 07:22:03
Schaust Du mal in die DesignerHelp ?
Zitat
Set notesDocument = notesDocument.CopyToDatabase (notesDatabase )
Du hast doch damit für das gerade instantiierte NotesDocument alle Properties von diesem im Zugriff, auch die UniversalID ...

Bevor Du weiter machst, solltest Du Dir unbedingt einen genaueren Überblick über die Notes-Klassenbibliothek (bzw. die Notes-Architektur insgesamt) machen. Du wirst sehen, dass Dir anschliessend vieles erheblich leichter fällt. Zur Zeit stocherst Du arg im Nebel !

Bernhard
Ja genau - das war's! DANKE!

hatte anstatt
++  Set newdoc = doc.CopytoDatabase(db)
nur
++ Call doc.CopyToDatabase( db )

verwendet.
Ist mir um dieses Uhrzeit nicht mal in der Designerhelp aufgefallen, dass es eigentlich dort so geschrieben steht.
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 30.04.04 - 09:48:14
Schön, daß es geklappt hat.  :)

Aber ich verstehe immer noch nicht, warum Du da mit nem Profildokument arbeitest ?
Wenn Du die ID der Vorlage hast, kannst Du doch direkt drauf zugreifen, warum erst in ein Profil packen und dann von dort aus die Vorlage öffnen ?

Soll jetzt deine Lösung nicht schlechtmachen, ich suche nur nach dem Grund  ;)
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Escort am 30.04.04 - 10:47:28

Aber ich verstehe immer noch nicht, warum Du da mit nem Profildokument arbeitest ?
Wenn Du die ID der Vorlage hast, kannst Du doch direkt drauf zugreifen, warum erst in ein Profil packen und dann von dort aus die Vorlage öffnen ?
Ja da hast du eigentlich recht!

Ich habe ursprünglich die Picklist-Auswahl als Formel realisiert gehabt -> daher die ID in einem
Profildokument zwischengespeichert -> anschliessend von dort einen Srcipt-Agent gestartet, dort die ID aus dem Profil ausgelesen und den Kopiervorgang ausgeführt.

Jetzt ist's perfekt -> habe dank deines Tipps, alles mit Script erledigt -> damit erübrigt sich das Profildokument.

Danke vielmals :)
Titel: Re:Wie Dokumenten-Vorlage aus Datenbank importieren
Beitrag von: Driri am 30.04.04 - 11:08:13
Gerne  :)

Jetzt hab ichs auch kapiert  ;)