Autor Thema: uidoc aus doc ermitteln  (Gelesen 6722 mal)

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
uidoc aus doc ermitteln
« am: 07.12.05 - 15:58:50 »
Hallo,

gibt es eine allgmeine Form aus einer Variable die ein doc Element enthält eine entsprechende uidoc Variable mit dem uidoc zu füllen?

Die Frage ist absichtlich so allgemein gehalten, weil mich wirklich ein allgemeiner Weg interessieren würde.

Gruß,

Andreas

botschi

  • Gast
Re: uidoc aus doc ermitteln
« Antwort #1 am: 07.12.05 - 16:02:40 »
Moin,

meinst Du

set uidoc = doc.document

 ???

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: uidoc aus doc ermitteln
« Antwort #2 am: 07.12.05 - 16:15:20 »
Du verwechselst da was botschi. Du meinst wahrscheinlich
set doc = uidoc.Document

Mit
Set notesUIDocument = notesUIWorkspace.EditDocument(....)
kommt man eher ans ziel.

HTH
†090620141300

botschi

  • Gast
Re: uidoc aus doc ermitteln
« Antwort #3 am: 07.12.05 - 16:29:23 »
Natürlich, Du hast Recht. set doc = uidoc.document ist richtig.
Mein Fehler...  ;D

Um auf das uidoc zu kommen ist der UIWorkspace das Richtige. Mit .EditDocument setzt man es sogar gleich ins Bearbeiten...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: uidoc aus doc ermitteln
« Antwort #4 am: 07.12.05 - 17:31:16 »
Mit .EditDocument setzt man es sogar gleich ins Bearbeiten...

Optional ja, aber das muss nicht sein. Primär öffnet das ein Backend-Dokument im FrontEnd - wenn gewünscht auch nur zum Anschauen  ;)

Bernhard

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: uidoc aus doc ermitteln
« Antwort #5 am: 08.12.05 - 07:59:09 »
Aber uiworkspace öffnet mir einen workspace des gerade aktiven docs.
Ein Beispiel:


Set db = session.CurrentDatabase
Set response = source.Document
   
Set parent = db.GetDocumentByUNID ( response.ParentDocumentUNID )


parent enthält nun ein doc. Wie würde ich zu diesem doc das uidoc ermitteln?


Set parentuidoc =


Deswegen die Frage nach etwas allgemein gültigem.

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: uidoc aus doc ermitteln
« Antwort #6 am: 08.12.05 - 08:35:06 »
Hi,

das steht doch in den obigen Antworten.


Set parentuidoc = notesUIWorkspace.EditDocument(....)


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: uidoc aus doc ermitteln
« Antwort #7 am: 08.12.05 - 08:54:08 »
hab das bisher mit einem call versucht, darum hat es nicht geklappt.

gibt es eine Möglichkeit das parent-doc nach Aufruf der Zeile nicht in den Vordergrund springen zu lassen?


Set parentuidoc = workspace.EditDocument(False , parent , , , True , False)

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: uidoc aus doc ermitteln
« Antwort #8 am: 08.12.05 - 08:58:54 »
Ich wüsste im Moment nicht wie.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: uidoc aus doc ermitteln
« Antwort #9 am: 08.12.05 - 09:50:05 »
Ein Problem ist es immer dann, wenn Fenster ohne für den Benutzer ersichtlichen Grund ihren Platz im Vordergrund tauschen. Denn das verwirrt eine ganze Reihe Anwender. Deswegen werd ich lieber nach dazu über gehen dann das auslösende doc nach Ende des Vorgangs automatisch zu schließen.

Danke für eure Hinweise!

Viele Grüße!

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: uidoc aus doc ermitteln
« Antwort #10 am: 08.12.05 - 10:12:49 »
Ein Problem ist es immer dann, wenn Fenster ohne für den Benutzer ersichtlichen Grund ihren Platz im Vordergrund tauschen. Denn das verwirrt eine ganze Reihe Anwender.

Das sehe ich genauso. Aber was willst du denn damit errreichen. Vielleicht gibt's noch einen anderen Weg.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: uidoc aus doc ermitteln
« Antwort #11 am: 08.12.05 - 10:50:45 »
das übliche Lied..

parent ruft child auf -> nach abgeschlossener Bearbeitung (postsave) soll ein Statusindikator des parent aktiv werden (hidewhen-Formel ergibt nun FALSE) -> dazu muß der refresh vom child ausgelöst werden damit das auch ohne Benutzereingriff sofort sichbar wird.

da dafür nur das uidocument eine Methode bereithält muß der Umweg über editdocument gegangen werden. Funktioniert ja auch, bis auf die Nebenwirkung von editdocument das Element unvermittelt in den Vordergrund zu bringen.

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: uidoc aus doc ermitteln
« Antwort #12 am: 08.12.05 - 11:02:46 »
das übliche Lied..

Richtig. Hier kommt wieder die "sagenhafte Echtzeitverarbeitung" von Notes ins Spiel.  >:D
Wer Automatismus braucht und haben will muss leiden.   :o  ;)

Aber Spass beiseite. In diesem Fall wird dir fast nicht anderes übrigbleiben. Oder der User refresht das Dokument manuell.

Axel



Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: uidoc aus doc ermitteln
« Antwort #13 am: 08.12.05 - 11:12:27 »
Ja, bis vorhin habe ich das über eine Schaltfläche für den Benutzer gelöst die ein @Command([RefreshHideFormulas]) auslöste. Nun denke ich aber daß es sinnvoller ist das Fenster dann einfach automatisch zu schließen, zumal die Bearbeitung daran zum Zeitpunkt des speicherns eigentlich bereits abgeschlossen sein müsste.

Du hast schon recht, je automatischer die Abläufe von Hand gehen sollen und je weniger der Anwender von den eigentlichen Vorgängen mitbekommen soll, desto mehr Hirnschmalz muß bei der Entwicklung investiert werden.

Danke Axel.


Gruß,

Andreas

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: uidoc aus doc ermitteln
« Antwort #14 am: 09.12.05 - 13:24:25 »
Ich hoffe ich hab´s richtig verstanden und schlage dir hier jetzt keinen Misst vor.

  • Du hast das Parent in Bearbeitung
  • öffnest das Child
  • Bearbeitst das Child
  • Speicherst das Child und aktualisiers gleichzeitig das Parent
  • Schließt das Child
  • Das Parent sollte aktualisiert sein

Beim Öffnen des Childs holst du die in Initialize das aktuelle NotesUIDocument in eine, in der Maske des Childs, global deklarierte Objektvariable.
Beim Speichern des Childs kannst du das Parent (das eigentlich gerade geöffnet ist) im Backend als NotesDocument-Objekt ermitteln und mit dem NotesDocument-Objekt der globalen Objektvariable vergleichen und so ggf. aktualisieren.

Globals (Maske des Childs):
Code
Public uidoc_parent As NotesUIDocument
Sub Initialize
	Dim uiws As New NotesUIWorkspace
	Set uidoc_parent = uiws.CurrentDocument
End Sub

Postsave (Maske des Childs)
Code
Sub Postsave(Source As Notesuidocument)
	
	Dim db As NotesDatabase	' current database
	Dim doc_parent As NotesDocument	' parent document of the current document
	Dim s As New NotesSession	' current session
	
' get the parent document
	Set db = s.CurrentDatabase
	Set doc_parent = db.GetDocumentByUNID(Source.Document.ParentDocumentUNID)
	
' refresh parent if is currently open
	If doc_parent.UniversalID = uidoc_parent.Document.UniversalID Then
		Call uidoc_parent.Refresh
	End If
	
End Sub
Gruß
Johnson

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: uidoc aus doc ermitteln
« Antwort #15 am: 09.12.05 - 14:02:28 »
Hi,

funktioniert super. Das ist genau das, was ich gebraucht habe. Ich stand vor dem gleichen Problem.

Ich habe deinen Code noch erweitert, denn wenn das Parent-Dok. nicht im Bearbeiten-Modus ist, was bei mir vorkommen kann, gibt's einen Fehler (Dokumentbefehl kann nicht ausgeführt werden). Ich prüfe, ob das Dokument im Edit-Modus ist. Wenn ja, wird Refresh direkt ausgeführt, wenn nein, dann wird das Dokument in den Edit-Modus gesetzt, refresht und gespeichert. Dann wird das Dok. wieder in den Lese-Modus gesetzt.

Code
...
' refresh parent if is currently open
	If doc_parent.UniversalID = uidoc_parent.Document.UniversalID Then
		
		If uidoc_parent.EditMode Then
			Call uidoc_parent.Refresh
		Else
			uidoc_parent.EditMode = True
			Call uidoc_parent.Refresh
			Call uidoc_parent.Save
			uidoc_parent.EditMode = False			
		End If  'If bolEditMode Then
		
	End If
...

Wäre es eigentlich wert als Ergänzug in den BP-Artikel Das Arbeiten mit Haupt- und Antwort-Dokumenten aufgenommen zu werden. Ich stell's mal zur Diskussion.


Axel
« Letzte Änderung: 09.12.05 - 14:12:49 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: uidoc aus doc ermitteln
« Antwort #16 am: 09.12.05 - 15:02:13 »
Nicht nur
Zitat
Das Arbeiten mit Haupt- und Antwort-Dokumenten
das funktioniert auch bei Dialogboxen.

Wenn das Dokument, das zum öffnen der Dialogbox verwendet wird, nicht das gleiche ist wie das, in dem die Dialogbox aufgerufen wird, kann man auch so vorgehen.

DocA geöffnent => DocB in Dialogbox öffnen => DocB aktualisiert/holt Daten aus DocA
Gruß
Johnson

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: uidoc aus doc ermitteln
« Antwort #17 am: 12.12.05 - 07:43:06 »
Super! Das ist eine gute Idee, Johnson. Werd ich wahrscheinlich noch ein paar Mal brauchen.

Guten Start in die neue Woche,

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz