Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Lancelot am 26.05.08 - 14:34:30

Titel: Wie verlinkt man 2 Dokumente?
Beitrag von: Lancelot am 26.05.08 - 14:34:30
Hi Leute,

ich bekomme bei meinem Problem zwar graue Haare, aber dafür auch keine Lösung hin. ;o)

Habe eine  DB A und eine DB B.
In DB A wird ein Doc A erstellt und gespeichert.
Aus diesem Doc A kann man bei Bedarf einen Button drücken und eine Maske aus DB B wird geöffnet.
Beim Speichern von Doc B werden die DocID von Doc A in Doc B geschrieben.
Bis dahin kein Problem, doch jetzt soll ich die DbID und die DocID von Doc B in das Doc A der DB A schreiben.
Doc A und Doc B sind dabei gleichzeitig geöffnet, doch ich weiß nicht wie ich Doc A ansprechen kann um den Doclink von der DB B und Doc B dort funktionstüchtig ein zu tragen.

Bin für jede Idee die ich nachgehen kann dankbar.
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DerAndre am 26.05.08 - 14:47:59
Ich versteh das nicht wirklich A-Bär:

Du hast doch alles was du brauchst.

CurrentDoc, CurrentDB NewDoc DBOfNewDoc...
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: Lancelot am 26.05.08 - 14:57:14
Zwei Datenbanke A und B.
Datenbank A ist geöffnet und enthält ein Doc A.
Doc A wird in Bearbeitung geöffnet und darauß per Knopfdruck die Maske aus Datenbank B
geöffnet.
Schließe ich das Doc B in Datenbank B wieder soll in dem immer noch geöffnetet Dokument A der Datenbank A der Doclink zu Dokument B der Datenbank B eingetragen werden.

Leider bin ich Script mäßig nicht so Sattelfest um zu wissen wie ich beim schließen von Dokuemnt B das Dokument A aus Datenbank A  ansprechen muß.

Hoffe es wurde verständlicher.
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: botschi am 26.05.08 - 15:21:01
Geht so, wenn ich ehrlich bin...

Aber wenn Du die UNID des Doc hast (egal ob DocA oder DocB oder DocC), dann kannst Du mit
set DocX = DatenbankB.GetDocumentByUNID(ID_DES_DOKS_ALS_STRING) das Doc öffnen.

Matthias
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DAU-in am 26.05.08 - 15:25:49
Entweder du hast docA noch im zugriff, dann ist es doc kein Problem.

Und wenn du es nicht mehr im Zugriff hast, dann nimm doch die UNID, die du in DocB hinterlegt hast und grabsch nach

set docA = notesDatabase.GetDocumentByUNID( unid$ )



Ansonsten: poste doch mal deinen Code

grüsse

Dau-in
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DAU-in am 26.05.08 - 15:27:15
Oder ist das Problem, dass du alles über das Frontend machen willst?
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: klaussal am 26.05.08 - 15:33:57
Ja, das wird es wohl sein. Steht auch so da: ... gleichzeitig geöffnet.....
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: Lancelot am 26.05.08 - 15:40:06
Genau so ist es, es muß im Frontend passieren da beide Datenbanken und
beide Dokumente zur gleichen Zeit geöffnet sind.

Verzweiflung macht sich bei mir breit. ;o)

Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DAU-in am 26.05.08 - 15:41:46
dann würde ich doch mal mit

Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode] , [notesDocument]  )


experimentieren.

Und aufpassen, dass keine Frontend und Backendoperationen gemischt werden, sonst gibt es Replizierkonflikte.
Müssen beide Dokumente gleichzeitig geöffnet sein?
Änderst du Dokument A, während Bokument B geöffnet ist?
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: klaussal am 26.05.08 - 15:45:27
So gaanz versteh ich den Sinn nicht.
Vielleicht erfahren wir ein bisschen über den Hintergrund dieser Aktion ? Evt. gibt es dann andere Lösungsmöglichkeiten.
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DerAndre am 26.05.08 - 15:46:23
Ok, das habe ich jetzt mit meiner trüben Birne verstanden  ;D

Hm, das Problem ist erstmal, daß das Dokument erst nach dem Speichern eine Identität bekommt
Wenn das Dokument B aus Dokument A generiert wird ( Backend ), danach gespeichert ( ab hier UNID ) sollte ein ordentlicher Link möglich sein.
Dann stellt sich die Frage, was passiert, wenn der Benutzer sagt, ach nee, will doch nicht...
Leider kannst Du auch nicht aus Doc B in Doc A schreiben, weil dieses offen ist. Das gibt Schimpfe von Notes.
Idee:
Wie sieht es aus, das neue Dokument per Dialogbox zu erstellen? Gibt es die Chance?
Dann bekommst Du mit, wann und wie das Dokument geschlossen wird und kannst den Link setzten.
Hm, geht das überhaupt, die Maske aus einer anderen DB als Dialobbox zu öffnen?

Ich glaub ich bin zu komplziert m Moment...

Oder Embeddet View...
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: Lancelot am 26.05.08 - 15:46:58
Ja gem. Pflichtenheft sollen beide Dokumente dabei offen sein.
Das sollte so sein, falls der User im Doc A noch was nachschauen müßte.
Somit würde ich auch beide Dokuemnte ändern, wenn sie noch offen sind.

Bringt mir das die nächsten Probleme?
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: Lancelot am 26.05.08 - 15:52:20
Meines wissen kann man bei Dialogboxen keinen Datenbankpfad angeben.
Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DerAndre am 26.05.08 - 16:02:43
Meine Idee war das Dokument in der anderen Datenbank mit new Notesdocument ( db ) zu erstellen und der Dialogbox das unterzuschieben:

flag = notesUIWorkspace.DialogBox( form$ , [autoHorzFit] , [autoVertFit] , [noCancel] , [noNewFields] , [noFieldUpdate] , [readOnly] , [title$] , [notesDocument] , [sizeToTable] , [noOkCancel] , [okCancelAtBottom] )

Allerding müsste die Form dann in beiden Datenbanken sein, das ist sehr unschön.

Vergiss das erstmal.

Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: DAU-in am 26.05.08 - 16:03:58
docA ist offen

docB wird geöffnet und gespeichert

dabei wird über die UNID auf docA via Backend gegriffen, der Focus des geöffenten Dokumentes auf uiDokA gesetzt, und wenn nur die UNID eingetragen werden soll, mit

Call notesUIDocument.FieldSetText( fieldName$, textValue$ )

eintragen. Du kannst halt dann nur Strings eintragen.
Ich weiss nicht, ob das wirklich so geht, aber in der richtung würde ich es probieren.

Du darfst halt auf keinen Fall via Backend was ändern, wenn die Dinger im Frontend offen sind

Titel: Re: Wie verlinkt man 2 Dokumente?
Beitrag von: Driri am 26.05.08 - 16:30:51
Die sauberste Lösung dürfte IMO immer noch das Einfügen des DocLinks über das Backenddokument und ein anschließendes Reopen des Backenddocs im Frontend sein.

Anton aka Ata hat dazu eine ReOpen-Funktion geschrieben, such mal hier im Forum danach.