Domino 9 und frühere Versionen > ND6: Entwicklung
Refresh im privaten Ordner
ata:
--- Zitat von: Axel ---Du irrst dich nicht.
--- Ende Zitat ---
... 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
ata:
--- 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.
--- Ende Zitat ---
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
Jürgen Schomann:
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.
ata:
... 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
Jürgen Schomann:
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?
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln