Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: rento am 09.06.04 - 12:22:56

Titel: DocLink in Sub Querysave
Beitrag von: rento am 09.06.04 - 12:22:56
Hallo brauche mal wieder hilfe.

Ich möchte in der Sub Querysave einen DocLink per mail an der User senden.
Das Dokument ist auch schon gespeichert gewesen.

Dieses senden soll nur passieren, wenn an dem Dokument was geändert wurde. Warum kann ich hier keinen DocLink senden?

Danke für Infos
Titel: Re:DocLink in Sub Querysave
Beitrag von: TMC am 09.06.04 - 19:38:39
Warum kann ich hier keinen DocLink senden?

Ich sehe jetzt auf Anhieb keinen Grund, warum das nicht gehen sollte.

Poste doch mal Deinen Code.
Titel: Re:DocLink in Sub Querysave
Beitrag von: Glombi am 09.06.04 - 21:09:13
Ist eine Vorgabeansicht vorhanden?
Titel: Re:DocLink in Sub Querysave
Beitrag von: TMC am 09.06.04 - 21:20:05
Stimmt, vollkommen richtiger Einwand, Andreas. Daran könnte es natürlich auch liegen.

Wir sollten mal eine Liste must-have's in der Notes/Entwicklung erstellen:
- Option Declare
- Immer Vorgabeansicht definieren
- Code kommentieren
....
(to be continued)
Titel: Re:DocLink in Sub Querysave
Beitrag von: Glombi am 10.06.04 - 09:12:01
Du hast recht. Alleine die Frage mit Doclinks und die Lösung "fehlende Vorgabeansicht" kann so um die hundert mal hier.
Ist das was für Best Practices?

Andreas
Titel: Re:DocLink in Sub Querysave
Beitrag von: TMC am 10.06.04 - 19:13:43
Ich habs mal in die BP-Diskussionen gestellt:
http://www.atnotes.de/index.php?board=27;action=display;threadid=16269

Titel: Re:DocLink in Sub Querysave
Beitrag von: rento am 11.06.04 - 08:05:08
Hallo Hier mein komplettes skript

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim senddoc As NotesDocument
   Dim item As NotesItem   
   Dim rtitem As NotesRichTextItem
   Dim collection As NotesDocumentCollection
   Dim Teamlead As String
   
   Set db = session.CurrentDatabase
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   Set senddoc = New NotesDocument(db)
   Set collection = db.AllDocuments
   Set doc = collection.GetFirstDocument()
   
   While Not(doc Is Nothing)  
      If doc.HasItem ("TeamLeader") Then
         If doc.HasItem ("Form") Then
            Teamlead = Cstr (doc.Teamleader(0))
         End If
      End If
      Set doc = collection.GetNextDocument(doc)
   Wend
   
   DueDateStatus = uidoc.FieldGetText("DueDateStatus")
   OldDueDateStatus = uidoc.FieldGetText("OldDueDateStatus")
   
   If OldDueDateStatus = "" Then
      Call uidoc.FieldSetText("OldDueDateStatus", DueDateStatus)
      Goto ende
   End If
   
   
   If DueDateStatus <> OldDueDateStatus Then
      Call uidoc.FieldSetText("OldDueDateStatus", DueDateStatus)      
      senddoc.form = "Memo"
      senddoc.Subject = "Status Change" & " " & db.Title
      
'Anlegen und füllen des Richtextfeldes für die Aufgabenbeschreibung
      Set  rtitem = senddoc.CreateRichTextItem("Body" )
      Subject = uidoc.FieldGetText("Subject")
      Call rtitem.AppendText("The Status was changed in document "  &"/ " & Subject & " \" &" ")  
      Call rtitem.AppendDocLink(doc, db.Title) ' Documenten link anlegen
      Call senddoc.send (True,Teamlead)
   End If
ende:      
   
   
End Sub

Ich hoffe das euch das weiter hilft.
Weiterhin hoffe ich das ich nicht wieder aus dummheit was übersehen habe. ;D
Titel: Re:DocLink in Sub Querysave
Beitrag von: TMC am 11.06.04 - 08:19:14
Bevor wir uns den Code ansehen:

Du hast noch nicht beantwortet ob eine Vorgabeansicht definiert ist.

Denn daran könnte es wie oben von Andreas erwähnt auch liegen.
Titel: Re:DocLink in Sub Querysave
Beitrag von: rento am 11.06.04 - 08:29:33
Ja es gibt eine Ansicht mit "Vorgabe beim ersten Öffnen der Datenbank".

Aber was hat das mit dem senden eines DocLink´s zu tun? Verstehe ich net.

Könnt ihr mir das bitte erklären?

Danke schonmal
Titel: Re:DocLink in Sub Querysave
Beitrag von: TMC am 11.06.04 - 08:45:25
Aber was hat das mit dem senden eines DocLink´s zu tun?

Damit Doclinks funktionieren, muss bei einer Ansicht der DB "Default when database is first opened" ausgewählt sein.
Lotus Script benötigt diese Ansicht, um die Doclink-Lokation zu erstellen.

Titel: Re:DocLink in Sub Querysave
Beitrag von: TMC am 11.06.04 - 08:53:21
Wollte mir jetzt gerade Dein Script ansehen.

Dazu fehlen aber noch ein paar Infos:
- Wo genau hängt es? Du schreibst nur: "Warum kann ich hier keinen DocLink senden?"
- Falls es zu einem Script-Fehler kommt: Bei welcher Zeile entsteht der Fehler? (-> Debugger hilft da)

Beim überfliegen hab ich gesehen, dass Du da Anweisungen wie "Goto ende" drinhast. Damit überspringst Du übrigens Dein senddoc.send - vielleicht liegt es auch daran.
Titel: Re:DocLink in Sub Querysave
Beitrag von: Glombi am 11.06.04 - 09:00:02
Mit
Call senddoc.send (True,Teamlead)
wird die Maske im Dokument gespeichert (1. Parameter = True). Das willst Du nicht wirklich (sonst hättest Du nicht zuvor Form = "Memo" gesetzt). Ersetze das mal durch ein False.

Evtl. gibt es in der Maske, die Du aktuell versendest, gar kein Body Feld.

Andreas
Titel: Re:DocLink in Sub Querysave
Beitrag von: rento am 11.06.04 - 09:27:55
Das Skirpt wird bei Querysave eingehangen und ausgeführt.

Mit Goto überspringe ich den teil nur wenn die bedingungen nicht zutreffen, die ich brauche, damit er ne Mail sendet.

Mit senddoc.send (False,Teamlead) habe ich auch schon probiert funktioniert auch net.

Wenn ich das senddoc.send auf True setzt kommt der Fehler vom debuger an der Stelle wo ich den DocLink einfügen möchte.
Das Bodyfeld ist vorhanden.
Habe das senddoc.send jetzt auf False stehen und nur der DocLink wir nicht angezeigt.

Achso noch ne Info Mails komme alle an nur der DocLink ist nicht vorhanden.
Titel: Re:DocLink in Sub Querysave
Beitrag von: Glombi am 11.06.04 - 09:33:00
Endlich die Info wo der Debugger zuschlägt  ;D

Es ist klar: Du referenzierst auf "doc", welches es gar nicht gibt. Vorher iterierst Du solange bis: doc is nothing
Also gibt es kein doc, auf das Du verlinken kannst.

Im ürbigen ist Deine Methode, den Teamleider zu ermitteln, äußerst unperformant: Du gehst über alle Dokumente der Datenbank und suchst solange, bis ein Teamleiter gefunden wurde.
Besser ist da eine Ansicht, die nur Dokumente anzeigt, in denen der Teamleiter vorhanden ist. Dann kann Du mit
set doc = view.GetFirstDocument
arbeiten...

Andreas
Titel: Re:DocLink in Sub Querysave
Beitrag von: rento am 11.06.04 - 09:47:29
Hey supper vielen und Großen danke.

Also war es doch mal wieder meine Eigene Dummheit, das das mit dem doc net gesehen hab  :-[ .

Das mit der Ansicht ist ne gute idee kann ich noch einbauen.

nochmal ganz viel dank.
Titel: Re:DocLink in Sub Querysave
Beitrag von: Glombi am 11.06.04 - 09:55:33
Schön dass es jetzt funktioniert.
Um den Doklink einzufügen, kannst Du

Call rtitem.AppendDocLink(uidoc.Document, db.Title)

verwenden.

BTW: Kannst Du den Thread noch auf "Erledigt" setzen. Es gibt da einen entsprechenden Button oben.

Andreas