Autor Thema: +++ Q: Automatisches Generieren eines DocLinks +++  (Gelesen 2607 mal)

Offline geisslix

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
  • ***+++***
hallo forum,
ich habe folgendes problem:

in einer maske habe ich ein feld (vom Typ Namen) erzeugt, mit dem ich aus einer kontakt-db eine kontaktperson auswählen kann.

in einem weiteren feld soll dann automatisch nach auswahl der person eine dokumentenverknüpfung zu dieser person eingefügt werden.

soweit die theorie, doch jetzt zur praxis.
wie geht das?  ???

hat jemand einen tipp, code oder script, wie das gemacht wird?

ich arbeite mit notes 5.0.11 unter w2k
Server 5.0.11 W2K
Client  5.0.11 W2K

Offline Centaury

  • Senior Mitglied
  • ****
  • Beiträge: 294
  • Geschlecht: Männlich
  • Hi! Kennst du Murphy??
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #1 am: 02.06.03 - 14:51:57 »
Such mal in der Designer Hilfe nach "AppendDocLink"!   :)
Man sollte immer eine kleine Flasche Whisky dabei haben, für den Fall eines Schlangenbisses - und außerdem sollte man immer eine kleine Schlange dabei haben. - W. C. Fields

Offline geisslix

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
  • ***+++***
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #2 am: 02.06.03 - 15:51:08 »
@Centaury,
erst einmal vielen dank für die prompte hilfe.

soweit ich verstanden habe, beschreibt diese methode (AppendDocLink) den weg, aus einer datenbank x eine mail zu verschicken mit den jeweiligen doclink zur datenbank oder dokument in der datenbank x.

diese methode könnte ich natürlich auch dazu verwenden, ein dokument in der datenbank y zu erstellen, der diesen automatischen doclink in ein bestimmtes feld des types rich text einträgt (als aktion oder agent).

meine frage betrifft aber den umgekehrten weg.  ;)

ich bin in der datenbank y, suche über ein dialogfenster (die suche in einem adressbuch) einen namen (kontaktdokument), wähle diesen (durch doppelklick oder durch ok-button) und möchte in einem weiteren feld (vom typ rich text) den doclink automatisch generiert bekommen.

kann ich die oben beschriebene methode auch als eingabeumsetzung nach auswahl oder als aktion bei onSelect (für das feld des typs namen) verwenden?
oder muss ich einen ganz anderen weg beschreiten (per @DialogBox, @PickList, o.ä.)?

mir fehlt da leider der programmiertechnische background.

vielen dank für weitere unterstützung

mfg

geisslix
Server 5.0.11 W2K
Client  5.0.11 W2K

Offline Centaury

  • Senior Mitglied
  • ****
  • Beiträge: 294
  • Geschlecht: Männlich
  • Hi! Kennst du Murphy??
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #3 am: 02.06.03 - 16:12:24 »
Call notesRichTextItem.AppendDocLink( linkTo, comment$ [, HotSpotText$ ] )
erzeugt in einem RichText Feld einen Doclink zu dem Dokument, Datenbank oder View "linkTo". Du willst ein Dokument suchen und als Doclink (in ein RichTextFeld) anhängen.
Also suchst du dir das Dokument und übergibst es an die Methode...

Oder willst du wissen, wie du an das Dokument herankommst, das du einfügen willst?
Man sollte immer eine kleine Flasche Whisky dabei haben, für den Fall eines Schlangenbisses - und außerdem sollte man immer eine kleine Schlange dabei haben. - W. C. Fields

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #4 am: 02.06.03 - 16:55:42 »
... wenn du das nicht über ein Namen-Auswahlsfeld machst, sondern über eine Picklist im Backend, dann hast du das doc im Zugriff und kannst zusätzlich einen DocLink platzieren...

ata
Grüßle Toni :)

Offline geisslix

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
  • ***+++***
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #5 am: 03.06.03 - 13:16:34 »
@ata, @Centaury,

habe aus euren antworten geschlossen, dass der weg über ein Namen-Auswahlfeld wohl der falsche ist. soweit ersteinmal danke.

habe jetzt
@PickList( [Custom] : [Single] ; Server : Datei ; Ansicht ; Titel ; Eingabeaufforderung ; Spalte ; Kategorie  )
auf eine schaltfläche gelegt, auf eine ansicht in der adressdatenbak verwiesen, lese dort spaltenwerte aus und lasse diese werte in meiner maske in berechnete felder eintragen.
in dieser ansicht habe ich auch einen spaltenwert, der mit @Text(@DocumentUniqueID) die dokumenten-ID anzeigt, die ich verwenden wollte, um einen DocLink in meiner maske zu erzeugen.

das hat natürlich nicht geklappt.

die dokumenten-ID wird zwar sauber übernommen (jedoch nur, wenn das berechnete feld vom typ text ist, als rich text aktualisiert er das feld nicht, wenn ich einen anderen namen auswähle, es bleibt der bei der ersten auswahl gesetzte eintrag stehen).

weiter weiss ich nicht, wie ich jetzt aus der Dokumenten-ID den DocLink basteln muss, der bei mausklick auf das dokument in der adressdatenbank linkt.

ich bin für weitere anregungen dankbar.

cu
Server 5.0.11 W2K
Client  5.0.11 W2K

klaussal

  • Gast
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #6 am: 03.06.03 - 13:19:47 »
rich-text-felder müsser erst gespeichert werden (also das doc). sonst ist da nix drinne...

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #7 am: 03.06.03 - 13:20:17 »
... ich hätte es mit LotusScript gelöst. Wie fit bist du mit LS?

ata
Grüßle Toni :)

Offline geisslix

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
  • ***+++***
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #8 am: 03.06.03 - 23:46:10 »
@ ata,

ich würde mich eher als engagierten anwender bezeichnen denn als fitten programmierer.  :-[

ich glaube jedoch, ls lesen, einigermaßen verstehen und anpassen zu können.

deshalb bin ich auch brennend an einen programmatischen ansatz interessiert, der mein oben beschriebenes problem lösen könnte.

wenn du einen ansatz hättest, der in ls vorhanden ist und für mein problem von mir angepasst werden müsste, wäre ich mehr als zufrieden.

geisslix
Server 5.0.11 W2K
Client  5.0.11 W2K

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #9 am: 04.06.03 - 08:21:59 »
Hi,

ich hab' mal so was ähnliches realisiert. Ich habe eine Adressdatenbank und eine dazugehörige Vorgangsdatenbank, in der zu den einzelnen Adresse Vorgänge, wie Korrespondenz, Mails etc. gespeichert werden. Aus den Vorgangsdokumenten lassen sich Aufgaben in der jeweiligen Maildatenbnak des Users erzeugen. In den Aufgaben werden zwei DocLinks eingefügt, einmal der zum Vorgangsdokument und zum anderen ein Link zu Adress-Dokument.

Hier ist der Code des Agenten. Er wird über eine Aktion aus dem jeweiligen Dokument ausgeführt.

Zitat
Sub Initialize
   
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim maildb As NotesDatabase
   Dim adressdb As NotesDatabase
   Dim currentdb As NotesDatabase
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim adrdoc As NotesDocument
   Dim taskdoc As NotesDocument
   Dim taskuidoc As NotesUIDocument
   Dim rtitem As NotesRichTextItem
   Dim strTemp As String
   Dim vDbName As Variant
   Dim iAdressDbError As Integer
   
   iAdressDbError = 0
   Set currentdb = session.CurrentDatabase
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
'Prüfen ob Mail-DB vorhanden
   Set maildb = New NotesDatabase("","")
   Call maildb.OpenMail
   If Not maildb.IsOpen Then
      Messagebox "Mail-Datenbank kann nicht geöffnet werden." + Chr$(10) + "Es wird keine Aufgabe erstellt.", 16, "Adressen"
      Exit Sub
   End If  'If Not maildb.IsOpen Then
   
   If ConfigLookup("xAdressDB", vDbName) And vDbName(0) = "" Then
      iAdressDbError = 1
   Else
      Set adressdb = New NotesDatabase(currentdb.Server, vDbName(0))
      If Not adressdb.IsOpen Then
         iAdressDbError = 1         
      End If  'If Not adressdb.IsOpen Then
   End If  'If ConfigLookup("xAdressDB", vDbName) Then
   
   Set adrdoc = adressdb.GetDocumentByUNID(doc.xAdressID(0))
   If adrdoc Is Nothing Then
      iAdressDbError = 1               
   End If  'If adrdoc Is Nothing Then
   
'Neue Aufgabe erstellen
   Set taskdoc = New NotesDocument(maildb)
   taskdoc.Form = "Task"
   Call taskdoc.ComputeWithForm(True, True)
   
   If doc.Kontaktperson(0) = "" Then
      strTemp = doc.Firma(0)
   Else
      strTemp = doc.Kontaktperson(0) + " - " + doc.Firma(0)
   End If  'If doc.Kontaktperson(0) = "" Then
   taskdoc.Subject = "Aufgabe zu einem Vorgang zu " + strTemp
   
'Anlegen und füllen des Richtextfeldes
   Set rtitem = taskdoc.CreateRichTextItem("Body" )
   Call rtitem.AppendText(doc.Aktionen(0))   
   
   Call rtitem.AddNewLine(2)
   Call rtitem.AppendText("Vorgang -> ")   
   Call rtitem.AppendDocLink(doc, "")
   
   If Not iAdressDbError Then
      Call rtitem.AddNewLine(2)
      Call rtitem.AppendText("Adresse -> ")   
      Call rtitem.AppendDocLink(adrdoc, "")      
   End If  'If Not iAdressDbError Then
   
   Call taskdoc.Save(True,False)  'Temp. Speichern des Backend-Doc. damit RTF-Feld angezeigt wird.   
   Set taskuidoc = workspace.EditDocument(True, taskdoc)  'Dokument im Frontend öffnen
   Call taskdoc.Remove(True)  'Das Dokument, das im Backend erstellt wurde, löschen
   
End Sub
Ohne Computer wären wir noch lange nicht hinterm Mond!

feel_x

  • Gast
Re:+++ Q: Automatisches Generieren eines DocLinks +++
« Antwort #10 am: 04.06.03 - 14:40:53 »
Hi,

Ich hab das auch über LS gelöst,
bei mir wählt man im Feld "Ort" per Picklist einen Ort aus,
das Querysave-skript sucht in der Ansicht "Tagungsorte" nach dem Dokument mit dem gleichen Titel und generiert im versteckten Feld "OrtsLinkText" einen Link, den ich dann von einem weiteren Feld aus aufrufen kann.

Der Link funktioniert nach dem speichern des Dokumentes.
Das ganze ist besonders praktisch bei Dialoglisten oder Auswahllisten :)

skript:


Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim session As New notessession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   
   Dim backendDoc As NotesDocument
   Set backendDoc = Source.Document 'get the backend doc
   
   Dim newProjectDoc As NotesDocument
   Dim view As NotesView
   
   Dim strOrt As String
   Dim server As String, serverNName As NotesName
   Dim dbpath As String
   
   server = db.Server
   Set serverNName = New NotesName(server)
   dbpath = db.FilePath
   strOrt = Source.FieldGetText("Ort")
   If strOrt <> "" Then
      Set view = db.GetView( "Tagungsorte" ) ' Zielview sortiert nach Suchfeld
      Set newProjectDoc = view.GetDocumentByKey( strOrt, True )  'Zieldokument
      If Not(newProjectDoc Is Nothing) Then
         backendDoc.OrtsLinkText = "notes://" & serverNName.Common & "/" & dbpath & "/" & view.Name & "/" & newProjectDoc.UniversalId & "?OpenDocument"
         Call backendDoc.Save( True, False )
         Call Source.Refresh
      Else
         Msgbox  "Achtung, Fehler! verlinktes Dokument nicht gefunden"
      End If
   End If      




Gruß, feel_x

« Letzte Änderung: 04.06.03 - 14:46:52 von feel_x »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz