FileLink

  • Hallo nochmal,
    jetzt hab ich wieder ein Problem.
    Folgendes:


    Ich habe eine Maske in der eine Tabelle mit mehreren Zeilen ist. Genau gesagt sind es 20. Also in die Zeilen kann man die Artikel Nummer, Zeichnungsnummer und noch so paar Daten eintragen.
    In jeder Zeile sind auch noch 2 Hot-Spot Verlinkungen auf eine 2. bzw. 3. Maske. In den Masken sind nur so paar Felder. Für die Arbeitsberichte (Rich Text) und noch eine für Kommentare. Also ganz einfache.
    Was jetzt mein Problem ist, wenn ich auf diese HotSpot Links klicke, komme ich natürlich auf die neue Maske. Ich fühle da meine Felder aus, gehe auf speichern, und ich sehe die ausgefühlten Masken dann in den Views. Das Problem ist aber, dass ich jetzt in meiner Zeile (Hauptmaske) noch so einen FileLink-Icon brauche der dann auf die Seite anzeigt. Weil es hilft mir ja nichts wenn sie irgendwo in der DB drin sind, aber ich sie nicht zuordnen kann.
    Also brauche ich neben den HotSpot links, auch diese Link-Icons die dann erscheinen, sobald ich was auf diesen anderen Masken ausgefühlt habe.
    Hoffentlich habt ihr jetzt verstanden was ich meine. ...


    Dankeschön

  • Hallo,


    also wenn ich Dich richtig verstanden habe, dann willst Du die aktuellen Daten aus anderen Dokumenten mit anzeigen.


    In diesem Fall würde ich eine einbettete Ansicht in die Maske einbauen, wo die zusätzlichen Dokumente per single-Category einbunden werden. Dann brauchst Du nicht um irgendwelche Links kümmern.


    Gruß von Ekki

  • @elajen:


    Nein. Die Dokumente sind alle in einer DB drin.
    Ich versuche es nochmal zu erklären.


    Also ich habe eine Hauptmaske. Nennen wir sie Maske A.
    Auf der Maske A sind viele Zeilen und Spalten drauf. In einer Zeile hab ich 8 Spalten und 3 Action HotSpots drin.
    Diese HotSpots verlinken auf 3 weitere Masken. Nennen wir eine von denen Maske B. Soweit ist alles klar hoffe ich.


    Da ich ja noch will dass Werte von paar Feldern von der Maske A auf die Maske B, beim Anklicken des Hotspots, übenommen werden, steht in dem HotSpot folgendes Script drin:



    Sub Click(Source As Button)

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim uidocNew As NotesUIDocument
    Dim docCurrent As NotesDocument
    Dim docNew As Notesdocument

    Set uidoc = ws.CurrentDocument
    Set docCurrent = uidoc.Document
    Set db = session.CurrentDatabase
    Set docNew = New NotesDocument(db) 'Neues Dokument anlegen

    docNew.Form = "Bemerkungen"

    docNew.ProjectNo = docCurrent.ProjectNo
    docNew.Customer = docCurrent.Customer
    docNew.ProjectName = docCurrent.ProjectName
    docNew.Coordinator = docCurrent.Coordinator
    docNew.SIANo = docCurrent.SIANo
    docNew.ProductType = docCurrent.ProductType
    docNew.PONum = docCurrent.PONum
    docNew.CustDwgNo = docCurrent.CustDwgNo
    docNew.ILANo = docCurrent.ILANo


    Set uidocNew = ws.EditDocument(True, docNew) 'Dokument im Frontend öffnen
    Call uidocNew.Refresh 'Dokument aktualisieren

    End Sub



    So. Also ich fülle da meine Zeile in der Maske A aus, klicke auf den HotSpot, komme auf die Maske B, ergänze sie noch ein wenig und speichere ab.


    Und ab da hab ich jetzt ein Problem. Die DB hat so eine Diskussionsform - Form. Sprich ich habe meine Hauptthemen und Antworten (Parent und Childs).


    Wenn ich jetzt in der Maske B was abspeichere, tut er das irgendwo in der DB abspeichern. Ich kann es dann zwar in der Ansicht sehen, aber es ist weder zu meinem Hauptthema (also als Antwort), noch irgendwie anders sortiert oder kategorisiert.


    Am liebsten wäre mir die in der Ansicht ganz auszublenden.


    Aber das eigentliche Problem ist, dass wenn ich ein Dokument in der Maske B abgespeichert habe (z.B. Arbeitsplan für ne bestimmte Komponente), und dann später gehe ich in die MAske A zurück (Hauptmaske) und klicke wieder auf den HotSpot für die Maske B, kommt wieder eine neue Seite, und nicht die die ich dann vorher ausgefüllt und abgespeichert habe.


    Also das Problem ist, dass die Dokumente nicht an dieser Stelle bleiben. Ist auch verständlich weil ich das im Scripr nirgends drin deklariert und definiert habe.


    So, falls jetzt jemand weiss, wie ich es schaffe, dass nach dem abspeichern, ich wieder über den HotSpot auf das abgespeicherte Dokument drauf komme, könnte vielleicht kurz was posten.


    Vielen herzlichen Dank


    fiuman

  • 1. Die Zuordnung der Dokumente zum Hauptdokument kannst Du als Antwortdok machen oder als normales Dok. In einer ansicht kannst Du die zugehörigen Doks dann per Kategorie zusammenführen.


    2. Wenn Du auf einem Hotspot draufklickst, und Du erstellst ein Dok und beim zweiten Mal soll das erzeugte Dok wieder angezeigt werden, dann mußt Du schon eine Abfrage reinbauen - gibt's das Dok schon oder nicht?


    Als erstes würde ich eine versteckte Ansicht machen, die nach Projektnummer und Dokumenttyp sortiert ist (ProjektNo~Doktyp in einer Spalte), und wo alle Doks drinne sind.


    dann mußt Du in deinem Hotspot-Script diese ansicht instanziieren. Dann holst Du aus der Ansicht alles was mit der Projektnummer aus dem Hautpdok anfängt. Du bekommt eine DocumentCollection. Dann durchsucht Du die DocColl nach dem Dokumenttyp( Bericht oder so ). Wenn Du's gefunden hast, dann öffnen, wenn nicht, dann neu erstellen.


    Alles Klar??? :)



    Gruß von Ekki.

  • Dann musst du beim Speichern des Antwortdokumentes eben sagen, dass es ein Antwortdokument ist bzw dies in den Maskeneigenschaften festlegen.
    Dein Script musst du dann so anpassen, dass er wenn eine Antwort existiert diese geöffnet wird statt eines neuen Dokumentes

  • Habs jetzt so eingestellt, aber der speichert es wieder nicht als Antwort.
    Liegt vielleicht auch an meinem Lotus Script bei den HotSpot für die Wertübernahme .... hm

  • Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim Hauptthema As NotesDocument
    Dim Anfrage As NotesDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView( "Alle Projekte mit Versuchen" )
    Set Hauptthema = view.GetFirstDocument
    Set Anfrage = view.GetNextDocument( Hauptthema )
    Call Anfrage.MakeResponse( Hauptthema )
    Anfrage.Form = "Response"
    Call Anfrage.Save( True, True )


    Es müsste irgendwie so ausschauen. Aber wo soll ich das reinkopieren ?

  • Geht nicht. Gab jetzt das Script um den Response ergänzt aber er speichert es immer noch ganz wo anders und nicht in dem Thema drin.


    Sub Click(Source As Button)

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim uidocNew As NotesUIDocument
    Dim docCurrent As NotesDocument
    Dim docNew As Notesdocument

    Set uidoc = ws.CurrentDocument
    Set docCurrent = uidoc.Document
    Set db = session.CurrentDatabase
    Set docNew = New NotesDocument(db) 'Neues Dokument anlegen

    docNew.Form = "Bemerkungen"

    docNew.ProjectNo = docCurrent.ProjectNo
    docNew.Customer = docCurrent.Customer
    docNew.ProjectName = docCurrent.ProjectName
    docNew.Coordinator = docCurrent.Coordinator
    docNew.SIANo = docCurrent.SIANo
    docNew.ProductType = docCurrent.ProductType
    docNew.PONum = docCurrent.PONum
    docNew.CustDwgNo = docCurrent.CustDwgNo
    docNew.ILANo = docCurrent.ILANo


    Set uidocNew = ws.EditDocument(True, docNew) 'Dokument im Frontend öffnen
    <b>Call docNew.MakeResponse( docCurrent )</b>
    Call uidocNew.Refresh 'Dokument aktualisieren

  • Ich habs jetzt mit dem Scripten versucht: Aber haut auch nicht so richtig hin.


    <b>Dokument erstellen:</b>


    ...
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim newdoc As NotesDocument
    Dim uidoc As NotesUIDocument


    Set doc = workspace.CurrentDocument.Document
    Set db = session.CurrentDatabase


    Set newdoc = New NotesDocument(db)
    Set newdoc.Form = "MaskeA"
    Set newdoc.ParentID = doc.UniversalID


    Set uidoc = workspace.EditDocument(newdoc)
    ...






    <b>Zugriff auf Dokument</b>


    ...
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim tmpdoc As NotesDocument
    Dim uidoc as NotesUIDocument
    Dim collection As NotesDocumentCollection
    Dim strSearch As String


    Set db = session.CurrentDatabase
    Set doc = workspace.CurrentDocument.Document


    strSearch = {Form = 'MaskeA' & ParentID = '} & doc.UniversalID & {'}
    Set collection = db.Search(strSearch, Nothing, 0)


    If collection.Count > 0 Then
    Set tmpdoc = collection.GetFirstDocument
    Set uidoc = workspace.EditDocument(tmpdoc, false)
    End If


    ...



    Sieht jemand was da falsch sein könnte? Der Hintergedanke ist.:
    Ich speichere in den beiden Dokumenten MaskeA und MaskeB jeweils die DocID des Doks aus dem sie erstellt wurden.
    Um die anzeigen zu können, führe ich dann einen Search aus und suche eben nach dieser DocID und den Maskennamen. Mit derm Ergebnis (NotesDocumentCollection) sollte ich dann das Dokument anzeigen lassen......


    Leider gehts nicht ....

  • Warum erstellst du dir nicht eine Ansicht, die in der ersten Spalte nach ParentID sortiert ist und suchst in der über getDocumentByKey.
    Das ist auf jeden Fall schneller und auch weniger fehleranfällig.
    Ansonsten wo genau liegt denn das Problem bei deinem Script ? Findet er das Dokument nicht ?

  • Ja der Fehler liegt einfach daran, dass er das Dokument nicht mal richtig abspeichert und bestimmt auch nicht richtig ausliest.. Weil wenn ich draufklicke passiert nichts .... :(