Autor Thema: Refresh im privaten Ordner  (Gelesen 3492 mal)

Jürgen Schomann

  • Gast
Refresh im privaten Ordner
« am: 19.03.08 - 18:07:17 »
Ich habe eine Maske mit einem eingebetteten Ordner 'Gemeinsam, privat bei Erstbenutzung'. In dem Ordner möchte ich bei einem Doppelklick auf ein Dokument Werteaus dem Dokument in die zugehörige Maske übernehmen und anschließen ein Refresh für die Berechnung weiterer Felder in der Maske ausführen. Dazu enthält der Ordner beim Ereignis Queryopendocument folgendes:

Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Call uidoc.Refresh
Continue = False

Doch bei dem Refresh bricht Notes insgesamt ab. Das gleiche passiert bei einer privaten Ansicht oder einem privaten Ordner. Es klappt auch nicht in der Variante, dass o. g. Code in eine Schaltfläche der Ansicht lege.
Der gleiche Vorgang funktioniert aber ohne Probleme mit einer gemeinsamen Ansicht oder einem gemeinsamen Ordner, nur nicht mit privaten Ansichten bzw. Ordnern.
Kann mir hierzu jemand etwas sagen.

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: Refresh im privaten Ordner
« Antwort #1 am: 19.03.08 - 19:13:33 »
Mal ins Blaue hinein gefragt: Werden die privaten Ordner in der Datenbank oder im Desktop gespeichert?


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

Jürgen Schomann

  • Gast
Re: Refresh im privaten Ordner
« Antwort #2 am: 19.03.08 - 20:21:22 »
Sie werden in der Datenbank gespeichert. Ich hatte doch geschrieben 'Gemeinsam, privat bei Erstbenutzung'. Wenn auf dem Desktop, dann lautet die Bezeichnung '''Gemeinsam, für Desktop privat bei Erstbenutzung'. Ausserdem habe ich geschrieben, dass der Fehler generell für private Ordner oder Ansichten gilt. Die Sache ist ja leicht nachzubilden. Nur eine Maske, braucht nicht mal Felder zu haben, und eine beliebige private Ansicht einbetten mit dem genannten Code. Dann  'erstellen -Maske' Maske öffnen und Doppelklick auf ein Dokument in der eingebetteten Ansicht.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Refresh im privaten Ordner
« Antwort #3 am: 19.03.08 - 20:24:21 »
Warum hast du den Code für den Refresh in der Ansicht - Wozu der Abbruch mit Continue = False??

Toni
Grüßle Toni :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Refresh im privaten Ordner
« Antwort #4 am: 19.03.08 - 20:29:41 »
In QueryOpenDocument steht noch gar kein Dokument zur Verfügung, was zu refreshen wäre! In diesem Zusammenhang ist der Code also Unfug.

Bernhard

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Refresh im privaten Ordner
« Antwort #5 am: 19.03.08 - 20:33:24 »
... wie du schon erwähnst, Bernhard Query... bedeutet davor - doch was soll das bezwecken?

Toni
Grüßle Toni :)

Jürgen Schomann

  • Gast
Re: Refresh im privaten Ordner
« Antwort #6 am: 19.03.08 - 20:45:18 »
bitte lest doch mal meinen ersten Text. Es funktioniert doch bei gemeinsamen Ordnern/Ansichten meine Frage warum nicht bei privaten. Ihr fragt immer nur warum, ich möchte wissen warum es abbricht. Ich möchte beim doppelclick nicht das Dokument öffnen, deshalb Continue = False. Ich möcht nur über Source.CaretNoteID das ausgewählte Dokument mir holen und Werte in die umgebende Maske übernehmen. die Maske und damit das uidoc stehen sehr wohl zu dem Zeitpunkt zur Verfügung.
Ich habe schon eine Anwendung lange so mit einer gemeinsamen Ansicht bei Kunden laufen. Nur für diesesmal brauche ich einen privaten Ordner.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Refresh im privaten Ordner
« Antwort #7 am: 20.03.08 - 00:06:20 »
Zitat
Ihr fragt immer nur warum...

... kann bei der Lösungsfindung durchaus nützlich sein...

Zitat
...  ich möchte wissen warum es abbricht.

... sonst würde sich hier keiner die Mühe machen - mich interessiert die Ursache - denn aus Fehlern kann man lernen...

Zitat
Sie werden in der Datenbank gespeichert. Ich hatte doch geschrieben 'Gemeinsam, privat bei Erstbenutzung'. Wenn auf dem Desktop, dann lautet die Bezeichnung '''Gemeinsam, für Desktop privat bei Erstbenutzung'.

... das ist nicht ganz korrekt. In der ACL kann man die Erstellung von privaten Ordnern/Ansichten verweigern. In diesem Fall werden die privaten Ansichten/Ordner lokal gespeichert - wenn ich mich nicht ganz irre - ist schon eine Weile her...

Und ansonsten - der Ton macht die Musik - gute Nacht...

Toni
Grüßle Toni :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Refresh im privaten Ordner
« Antwort #8 am: 20.03.08 - 00:53:48 »
Ich sehe das auch so wie Toni. Vor allem das mit dem Ton - ich habe mir vor meiner letzten Antwort mal die vorherigen Postings angeschaut und daher so harsch reagiert ("... ist der Code also Unfug ...")

Um nun auch keinen Quark zu erzählen, habe ich mir die "Mühe" gemacht (nein, das Thema ist ja auch interessant - und Jürgens Behauptung oder Beschreibung sowieso), mal meine Aussage zu verifizieren.
Also: Ansicht erzeugt, im QueryOpenDocument steht
Code
Sub Queryopendocument (Source As Notesuiview, Continue As Variant)
	
	Dim ws As NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Set ws = New NotesUIWorkspace
	Set uidoc = ws.CurrentDocument
	
	On Error Goto ErrorRoutine
	
	Messagebox uidoc.Document.Form (0)
	
	'Call uidoc.Refresh
	Continue = False
	
	Exit Sub
	
ErrorRoutine:
	Call ErrorHandler ("View - QueryOpenDocument")
	Exit Sub
End Sub

Also Jürgens Originalcode, ergänzt um einen ErrorHandler (hier nicht kriegsentscheidend!) und den Ersatz des uidoc.Refresh durch eine Messagebox, um das Item Form des angeblich instantiierten Frontend-Dokuments mit der eingebetteten Ansicht auszugeben.

Das Ergebnis: uidoc bleibt nothing, der ErrorHandler schlägt in der Zeile mit "Messagebox ..." zu - der Debugger zeigt es schon vorher an.
Wohlgemerkt: Die eingebette Ansicht war der Einfachheit halber eine vollkommene normale Ansicht - nicht privat noch sonst irgendetwas.

Und jetzt kommst Du, Jürgen - und komme bitte nicht wieder unbegründet damit, wir hätten dieses und jenes nicht gelesen. Erkläre bei der Gelegenheit bitte auch, warum Du in Deinem letzten Posting auf einmal CaretNoteID ins Spiel bringst - davon ist in Deinem Code keine Rede ...

Bernhard

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: Refresh im privaten Ordner
« Antwort #9 am: 20.03.08 - 08:16:19 »
... das ist nicht ganz korrekt. In der ACL kann man die Erstellung von privaten Ordnern/Ansichten verweigern. In diesem Fall werden die privaten Ansichten/Ordner lokal gespeichert - wenn ich mich nicht ganz irre - ist schon eine Weile her...

Du irrst dich nicht.


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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Refresh im privaten Ordner
« Antwort #10 am: 20.03.08 - 08:47:20 »
Zitat von: Axel
Du irrst dich nicht.

... blieb doch noch was im Großhirn hängen  ;D

@Bernhard,

... da schein ich mit meiner Meinung ja nicht alleine zu sein - das war mir gestern absolut zu spät - zumal ich gerade an einem Hexenschuß laboriere - dann kann ich mir den Testfall sparen...

Wäre da etwas anderes herausgekommen, dann  hätte ich zu zweifeln begonnen... ::)

Toni
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Refresh im privaten Ordner
« Antwort #11 am: 20.03.08 - 09:30:47 »
Zitat von: Jügen Schomann
Ich möchte beim doppelclick nicht das Dokument öffnen, deshalb Continue = False. Ich möcht nur über Source.CaretNoteID das ausgewählte Dokument mir holen und Werte in die umgebende Maske übernehmen. die Maske und damit das uidoc stehen sehr wohl zu dem Zeitpunkt zur Verfügung.

Mir scheint da was gehörig krummm zu gehen.
- Was willst du in einer Maske anzeigen ohne das Dokument zu öffnen?
- Wie werden bei dir Dokumente angezeigt?

"Set uidoc = ws.CurrentDocument" ist aber nicht gleich "Source.CaretNoteID" - irgendwas scheint in deiner Darstellung deines Codes nicht zu stimmen - wie Bernhard bereits angesprochen hat. Entweder läuft da noch mehr - oder anders als dargestellt...

Solltest du tatsächlich Hilfe brauchen, dann schildere es bitte so, daß man es auch verstehen und lesen kann. Auch eine Gliederung der Aussagen hilft beim Erfassen - danke...

... ansonsten wärs das erst mal...

Toni
Grüßle Toni :)

Jürgen Schomann

  • Gast
Re: Refresh im privaten Ordner
« Antwort #12 am: 20.03.08 - 17:08:19 »
Habe euere Anworten alle gelsen, bin etwas sehr in Druck mit dem Problem. Bitte euch alle um Entschuldigung für meine Stil.

Vielleicht schenkt Ihr mir noch einmal gehör. Danke.

Hier also noch einmal mein Problem. Ich habe aus dem Gesamtumfang versucht es auf das Wesentliche zu minimieren.

Ich habe folgende Maske

s. angehängte Datei Refresh.jpg, Bild 1

Das Feld SaveOptions hat den Wert "0", damit das Dokument nicht gespeichert werden kann. Ich brauche die Maske nur für die Eingabe von Angaben für später auszulösende Aktionen über Hotspots, die dann noch in der Maske eingebaut werden.
Das Feld F1 ist ein bearbeitbares Feld.
Das Feld dspF1 ist ein Feld berechnet zur Anzeige mit der Formel F1, als berechnet sich aus dem Inhalt von Feld F1.
Darunter befindet sich eine eingebettete gemeinsame Ansicht, die zum Test nur ein Dokument mit einem Feld F10 = "a" enthält.

Die eingebettete Ansicht enthält im Queryopendocument-Ereignis folgenden Code:

   Dim ws As NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim session As NotesSession
   Dim db As NotesDatabase
   
   On Error Goto ErrorException
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set ws = New NotesUIWorkspace
   Set uidoc = ws.CurrentDocument
   
   ' zur Kontrolle gebe ich das uidoc-Objekt aus, es ist nicht Nothing -> False wird ausgegeben
   
   Msgbox (uidoc Is Nothing)
   
   ' aus dem in der eingebetteten Ansicht ausgewählten Dokument hole ich mir ein Feld F10
   ' und speicher es in das uidoc-Dokument im Feld F1
   
   Set doc = db.GetDocumentByID(Source.CaretNoteID)
   Call uidoc.Document.ReplaceItemValue("F1", doc.GetItemValue("F10"))
   
   ' mit dem Refresh möchte ich weitere Felder in dem uidoc-Dokument aktualisieren
   ' in diesem Test das Feld dspF1, das sich aus dem Inhalt vom Feld F1 berechnet
   
   Call uidoc.Refresh
   
   Continue = False
   Exit Sub

ErrorException:
   Msgbox "Zeile: " & Cstr(Erl()) & Chr(10) & "Errorcode: " & Err() & Chr(10) & "Errortext: " & Error$(Err())
   Continue = False
   Exit Sub

Der Ablauf sieht folgendermaßen aus. Über Erstellen öffne ich o. g. Maske

s. angehängte Datei Refresh.jpg, Bild 2

Dann klicke ich 2-mal auf das in der eingebettete Ansicht angezeigte Dokument. Es erscheint folgendes:

s. angehängte Datei Refresh.jpg, Bild 3

Die Meldung kommt von o. g. Messagebox. Das uidoc ist nicht Nothing. Bei einem direkten 2-mal Klick in der Ansicht wäre es natürlich Nothing. Aber ich bin ja in einer geöffneten Maske und habe so ein uidoc-Dokument.
Nach dem OK für die Messagebox erscheint folgendes:

s. angehängte Datei Refresh.jpg, Bild 4

Aus dem ausgewählten Dokument wird das Feld F10 mit dem Wert "a" geholt und dieser Wert in dem uidoc-Dokument in das Feld F1 gespeichert.
Danach wird über das Refresh des uidoc-Dokuments eine Berechnung des Feldes dspF1 im uidoc-Dokument ausgelöst. Lt. o. g. Maske berechnet sich der Inhalt aus dem Inhalt von Feld F1, wird also auch "a".

Dies funktioniert wie gesagt ohne Probleme mit gemeinsamen Ansichten oder auch Ordnern.

Verwende ich statt der o. g. gemeinsamen Ansicht eine private Ansicht oder auch einen privaten Ordner läuft alles bis zu der Anweisung

Call uidoc.Refresh

ohne Fehler. Man sieht auch noch das Ergebnis des Refreshs. Danach bricht Notes aber mit folgendem ab:

s. angehängte Datei Refresh.jpg, Bild 5


Die privaten Ordner sind gemeinam, privat nach Erstbenutzung und in der Datenbank gespeichert. Die Zugriffsrechte bestehen für private Ordner/Ansichten.

Vielleicht hilft Euch dies für eine Klärung der möglichen Ursachen.
Wie schon erwähnt. Läuft eine Lösung mit einer eingebetteten gemeinsamen Ansicht schon lange ohne Probleme. Nur jetzt muss ich aber einen privaten Ordner einsetzen.


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Refresh im privaten Ordner
« Antwort #13 am: 21.03.08 - 00:02:28 »
... das hört sich schon besser an - danke... ;)

... vermutlich ist das uidoc ein anderes - hast du es mal überprüft, welches du hast => DocUNID ziehen, um herauszufinden, ob es das besagte ist.

Für den "Call uidoc.Refresh" muß das uidoc im EditMode sein - das könntest du noch vorher checken - eventuell kann auch hier eine Fehlerstelle sein.

Notes erstellt aufgrund der Fehlermeldung eine RIP-Datei - was ist dort für den Fehler gelogt?

... das wären mal so ein paar erste schnelle Gedanken...

Ansonsten gehe die Neuberechnung manuell im Code durch, wenn der Refresh hier scheitert...


Toni
« Letzte Änderung: 21.03.08 - 00:04:16 von ata »
Grüßle Toni :)

Jürgen Schomann

  • Gast
Re: Refresh im privaten Ordner
« Antwort #14 am: 21.03.08 - 15:12:44 »
Eine Kontrolle des uidoc-Dokuments bezüglich der UniversalID ergabe keine Unstimmigkeiten. Habe die UniversalID  beim Postopen der Maske und beim Queryopendocument ausgegeben. Sind beide Iidentisch. Das mit dem Edit-Mode brauche ich eigentlich nicht prüfen. Ich gehe ja über Notes-Menü Erstellen - Maske, so dass ein neues Dokument geöffnet wird, das dann ja im Edit-Mode ist. Habe den Test aber auch noch mit einem bestehenden Dokument wiederholt, dabei natürlich im Edit-Mode geöffnet. Es bleibt bei dem Fehler. Wie gesagt nur bei privaten Ordnern/Ansichten. Eigentlich läßt sich das Queryopendocument auf Setzen des uidoc-Documents und Refresh reduzieren, dann bekommt man schon den Fehler.
Ein Workarround mit Verzicht auf das Refresh habe ich auch schon im Hinterkopf, macht allerdings Mühe alles selbst nachzurechnen. Übrigens ein Versuch mit RefreshHideFormulas klappt. So kann man wenigstens die Absatz verbergen-Formeln berechnen.
Mit deinem Hinweis auf die rip-Datei kann ich leider wenig anfangen, davon verstehe ich nicht viel. In meinem Notes-Data-Verzeichnis gibt es ein Unterverzeichnis IBM_TECHNICAL_SUPPORT. In diesem sind zum Fehlerzeitpunkt 2 Dateien entstanden: Eine Datei core.NLNOTES.... und eine Datei nsd....log. In der Log-Datei stehen viele Informationen, womit ich aber nicht viel anfangen kann. Wo könnte ich da nachsehen?

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Refresh im privaten Ordner
« Antwort #15 am: 21.03.08 - 18:26:10 »
Zeig das Log File mal her.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Jürgen Schomann

  • Gast
Re: Refresh im privaten Ordner
« Antwort #16 am: 23.03.08 - 13:31:08 »
habe deine Antwort gerade erst gelesen als ich meine 2. Nachricht abgeschickt hatte.
Hier also das Log.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz