Autor Thema: Form von UIDoc herausfinden  (Gelesen 2843 mal)

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Form von UIDoc herausfinden
« am: 27.07.04 - 16:38:07 »
Ich habe das Problem, dass ich in Lotusscript den Namen der Form eines neuen Dokumentes bräuchte. Da das Dokument aber noch nicht gespeichert ist, ist dieser nicht verfügbar. Hier noch mein Code, hoffe jemand hat eine Idee. Geht dabei darum Anhänge einzufügen ohne das Dokument zuvor speichern zu müssen.

Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim filenames As Variant
   filenames=ws.OpenFileDialog(False,"Bitte Anhang wählen!","Text Dateien|*.txt|Notes Templates|*.ntf","M:\")
   If Not(Isempty(filenames)) Then
      AddAttachment ws,"fa_Person","ParentUID",filenames(0)
   End If
End Sub


Sub AddAttachment(uiws As NotesUIWorkspace, FormName As String,ItemName As String,FileName As String)
   Dim uidoc As NotesUIDocument
   Dim ws As New NotesUIWorkspace
   Dim thisdoc As NotesDocument   
   Dim rtitem As NotesRichTextItem
   Dim olduidoc As NotesUIDocument
   Set olduidoc=uiws.CurrentDocument
   Set thisdoc = uiws.CurrentDocument.Document ' doc in memory but hasn't been saved yet
   thisdoc.RemoveItem ItemName
   Set rtitem = New NotesRichTextItem (thisdoc,ItemName)
   rtitem.EmbedObject EMBED_ATTACHMENT, "", FileName
   rtitem.Update
   thisdoc.Form=FormName
   ' set the SaveOptions field so that when the uidoc is closed, the user won't be asked to save
   thisdoc.SaveOptions = "0"
   ' close the uidoc. It won't actually happen until the code is finished executing
   olduidoc.Close False
   ' create a new uidoc and open the backend doc that is still in memory with added doc link
   Set uidoc = uiws.EditDocument(True, thisdoc)
   ' delete the reference to the old uidoc
   ' this is necessary because the code below affects it if left in memory
   Delete olduidoc
   ' re-associate the variable with the backend doc
   ' have to do this because the olduidoc reference was deleted
   Set thisdoc = uidoc.Document
   ' remove the SaveOptions field so the doc can be saved
   thisdoc.RemoveItem "SaveOptions"
   uidoc.Refresh
End Sub
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Glombi

  • Gast
Re:Form von UIDoc herausfinden
« Antwort #1 am: 27.07.04 - 16:46:51 »
In so einem Fall muss man ein Feld namens "Form" in die Maske einbauen und dort den Maskennamen bzw. Alias eingeben.
Dann kannst Du das bereits im Postopen auswerten.

Andreas

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re:Form von UIDoc herausfinden
« Antwort #2 am: 28.07.04 - 13:00:38 »
Hallo Andreas

Ein "Berechnet zur Anzeige" Feld mit der Formel "@If(Form="";@ThisValue;Form)" reicht aus, aber halt wieder eine Abhängigkeit an die man bei jeder Verwendung denken muss. Mit Evaluate rausfinden funktioniert leider auch nicht. Frage mich wie Notes überhaupt weiss was da rein schreiben.  ;)

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline jmanuel

  • Junior Mitglied
  • **
  • Beiträge: 76
Re:Form von UIDoc herausfinden
« Antwort #3 am: 07.04.05 - 23:54:21 »

Ein "Berechnet zur Anzeige" Feld mit der Formel "@If(Form="";@ThisValue;Form)" reicht aus,

Hallo,

diese Formel funktioniert aber auch erst nach dem Speichern eines Dokuments. Gibt es wirklich keine Möglichkeit, den Maskennamen vor dem Speichern herauszufinden ??

echt seltsam!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Form von UIDoc herausfinden
« Antwort #4 am: 08.04.05 - 00:12:43 »
Das ist richtig, dass man auf den Standardwert "Form" erst nach dem Speichern zugreifen kann. Aber was spricht denn dagegen, ein berechnetes Feld namens Form zu machen, in dem der Name hardcodiert drin steht? Problematisch ist dabei nur die Pflege der Maske, denn wenn der Maskenname geändert wird, muss man auch daran denken, dieses Feld zu ändern.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline jmanuel

  • Junior Mitglied
  • **
  • Beiträge: 76
Re: Form von UIDoc herausfinden
« Antwort #5 am: 08.04.05 - 10:32:38 »
OK,

wie wichtig es ist zeigt das folgende Szenario:

Eine generische Subform wurde entwickelt, die in beliebige Datenbanken, in beliebige Forms eingebunden werden kann. Die Subform benutzt nun den alias Formnamen als Key, um auf Konfigurationsdokumente zu zugreifen. Die Subform muss irgendwie herausfinden wo sie ist! Jetzt können aber Werte nicht berechnet werden, da kein Key (Formname) und keine Werte herangeholt werden können.

Ein statisches Formfeld hilft an dieser Stelle leider nicht, da alles generisch ist.

Toll wäre in der ws noch eine property wie currentdocument...currentform oder so 

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Form von UIDoc herausfinden
« Antwort #6 am: 08.04.05 - 10:54:08 »
Da muss aber irgendwo ein architektonischer Designfehler drinstecken. Daten sollten von der Darstellung völlig getrennt werden. Mit dem Zugriff auf den Formnamen bekommst Du eine Abhängigkeit von der Darstellung statt vom Inhalt. Sprich, da fehlt doch irgendwo eine Datenmarkierung.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline jmanuel

  • Junior Mitglied
  • **
  • Beiträge: 76
Re: Form von UIDoc herausfinden
« Antwort #7 am: 08.04.05 - 11:08:03 »
Das Szenario habe ich nicht ausführlich erläutert: Die Subform wird in bereits bestehende Datenbanken eingebunden. Hierbei handelt es sich um eine Modulkomponente,  ein Feature.

Wenn ich nun ein neues Dokument mit der neuen Komponente erstelle, dann brauche ich irgendein Key das mir sagt, wo ich bin, um das dafür entsprechende Profildokument in DBx, für diese Maske! heranhole. Ich nehme den Formnamen als Key.
Ich weiss, den Formnamen als Key ist nicht gut, aber ich habe keine andere Alternative gefunden. eine Ideee ?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Form von UIDoc herausfinden
« Antwort #8 am: 08.04.05 - 11:13:01 »
OK, typische Realitätslösung :)

Musst Du eben tatsächlich in die Formulare, in denen Du das einfügst, zusätzlich noch ein Feld mit dem Formnamen einfügen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re: Form von UIDoc herausfinden
« Antwort #9 am: 08.04.05 - 11:18:37 »
In jeder gut gemachten Maske gibt es wohl irgendein Feld, dass sich eindeutig zu Deiner Konfiguration zuordnen lässt. Du musst das Mapping etwas dynamischer gestalten.

Noch ein Hinweis: Es gibt auch die Möglichkeit, die Maske im Dokument zu speichern. In diesem Fall legt Notes NICHT automatisch das Feld "Form" an, sondern ein Feld namens "$TITLE". Das muss eine wie auch immer geartete Lösung ebenfalls berücksichtigen.

Andreas

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Form von UIDoc herausfinden
« Antwort #10 am: 08.04.05 - 11:22:47 »
ich weiß nicht, ob ich das richtig verstanden habe, aber falls ja, dann würde ich nicht den Namen der Form als Key nehmen, sondern einen eigens zur Identifikation bestimmten Wert, der in einem speziellen Feld steht (Berechnet beim Anlegen).

Grund: Form ist ein Systemfeld und hat schon eine Bedeutung, würde also zusätzlich eine zweite Bedeutung erhalten, die nicht für jeden sofort ersichtlich ist. + Der Formname ist nicht eindeutig, also zur Identifikation ungeeignet.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Form von UIDoc herausfinden
« Antwort #11 am: 08.04.05 - 11:24:19 »
Das von Thomas gesagte geht genau in die Richtung, die ich oben erwähnt habe. Die Idee, hier mit einer unabhängigen Identifikation zu arbeiten, ebenfalls. Super Vorschlag.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

elajen

  • Gast
Re: Form von UIDoc herausfinden
« Antwort #12 am: 08.04.05 - 12:01:38 »
Hallo Fedaykin,

Wenn ich dich richtig verstehe, benötigst du unterschiedliche Teilmasken, je nach dem, welche Aufgabe der User lösen soll. Frage, wie erzeugst du dein Dokument: per @Compose?

Gruß von Ekki.

Offline jmanuel

  • Junior Mitglied
  • **
  • Beiträge: 76
Re: Form von UIDoc herausfinden
« Antwort #13 am: 08.04.05 - 12:09:39 »
Hallo,

vielen Dank für eure Vorschläge!
@Glombi : daran hatte ich auch schon gedacht  '$Title-Feld' das stimmt !

@All:
Also mein Problem ist nur, wie finde ich ein Key, als von beiden Seite eindeutig ist. Idee: Kann ich in ein Design Note über Script erstellen ? Dann würde ich ein Key Produzieren und es dem Deisgn Note mitgeben ?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Form von UIDoc herausfinden
« Antwort #14 am: 08.04.05 - 12:14:46 »
Na, irgendwie bekommt man das schon hin, nur sehe ich den Sinn nicht ganz, was hindert Dich daran, die Formulare zu ändern, in die Du ja sowieso eingrefen musst, um Deine Teilmaske zu integrieren?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline jmanuel

  • Junior Mitglied
  • **
  • Beiträge: 76
Re: Form von UIDoc herausfinden
« Antwort #15 am: 08.04.05 - 12:41:47 »
Gute Frage!

Ziel ist es, den Designeingriff so gering wie möglich zu halten. Das Einfügen der Subform übernehmen  externe Desginer.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz