Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: wuwu am 13.05.05 - 11:44:13
-
Hallo,
User erhalten von uns per Mail einen Link zu einem Dokument in einer Datenbank.
Dieses Dokument öffnen Sie dann, und sehen unter anderem eine eingebettete Ansicht.
Dort habe ich im InViewEdit einen Code eingebaut der auf die aktuelle DB zugreift:
set db = ws.currentdatabase.database
Jetzt bekomme ich natürlich einen Fehler wenn die DB nicht offen ist!
1. Wie kann ich das Abfragen ob die DB im Workspace schon offen ist? Wenn ja,
2. Das öffnen einer DB im WS ist kein Problem, aber wenn ich Sie öffne, das er dann auf das geöffnete Dokument zurückspringt, wie geht das bzw. geht das überhaupt?
Danke für eure Hilfe im vorhinein!
Mfg Horst
-
"Fehlermeldung wenn die Datenbank nicht offen ist":
Was für eine Fehlermeldung ?
In dem Moment wo Du eine Maske / Ansicht / Rahmengruppe / irgendwas aus einer Datenbank offen hast, ist auch die Datenbank an sich "offen".
Also sag uns bitte, welche Fehlermeldung exakt erscheint, an welcher Stelle sie erscheint (debugger), und wie die betreffenden Variablen gefüllt sind. Dann können wir Dir vielleicht auch helfen...
Tode
-
Der Code lautet:
Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
On Error Goto Errorhaendler
Const QUERY_REQUEST = 1 ' used when the user enters the editable column
Const VALIDATE_REQUEST = 2 ' used when the user exits the editable column
Const SAVE_REQUEST = 3 ' saves after validation for an existing view entry
Const NEWENTRY_REQUEST = 4 ' after validation when the user makes a new entry in a view
' Editable columns
fieldName(0) = "work_plan_device_percent"
fieldName(1) = "work_plan_setup_time"
fieldName(2) = "device_piece"
fieldName(3) = "work_plan_time_piece"
fieldName(4) = "work_plan_follow_nr"
Dim ws As NotesUIWorkspace
Dim note As NotesDocument
Dim db As NotesDatabase
Dim i As Integer
Set db = ws.CurrentDatabase.Database
If (Source.CaretNoteID = "0") Then Exit Sub
.............
Beim Fett angezeigte Codeabschnitt kommt die Meldung Objekt Variable not Set.
Code steht im InViewEditMode!
Sorry, das ich das nicht gepostet habe!
-
und hier ist der Fehler:
Dim ws As NotesUIWorkspace
muss heissen
Dim ws As New NotesUIWorkspace
sonst ist nämlich die Object Variable "ws" not set.
Tode
-
Hi,
du hast zwar die Variable ws deklariert, aber nicht instanziiert. Daher die Fehlermeldung.
Dim ws As New NotesUIWorkspace
Dim note As NotesDocument
Dim db As NotesDatabase
Dim i As Integer
Set db = ws.CurrentDatabase.Database
If (Source.CaretNoteID = "0") Then Exit Sub
...
Axel
-
Das habe ich schon mal probiert, hat aber tortzdem nicht funktioniert.
Es kommt die gleiche Fehlermeldung erneut!
Der Fehler tritt auf wenn ich direkt in der eingebetteten Ansicht - in einer Spalte, einen Wert verändern möchte. Zur Info, die DB ist nicht in der Arbeitsumgebung geöffnet, das Dokument selbst wird über ein Link im Mail geöffnet!
-
Hallo,
ob die Datenbank geöffnet ist kann man mit der Property .IsOpen prüfen. Wenn nicht, dann kann diese mit der Methode .Open geöffnet werden.
Viele Grüße
ghost
-
Hi,
probier's mal über die NotesSession an das Handle der Datenbank ranzukommmen.
Dim session As New NotesSession
Set db = session.CurrentDatabase
Axel
-
Wenn die Datenbank nicht offen wäre käme die Fehlermeldung "Database has not been opened yet". Diese Meldung kann aber (imho) in diesem Zusammenhang gar nicht kommen, weil der User die Datenbank ja schon offen hat (wenn auch nur "implizit" über ein Dokument aus der Datenbank).
Die Meldung "Object Vairable not set" sagt aber, dass ein Objekt nicht initialisiert ist.
und in der angegebenen Zeile können das nur drei "verdächtige" sein:
-1-
ws selbst: der ist instantiiert, wenn mit Set ws = New NotesUIWorkspace gestartet.
-2-
ws.CurrentDatabase: Wenn man die Designer- Hilfe richtig liest, dann liegt hier die grösste Wahrscheinlichkeit für den Fehler, denn offensichtlich kann diese Property unter bestimmten Umständen (z.B. wenn instantiiert durch eine Ansicht) leer sein.
Versuch mal folgendes:
Set db = ws.GetCurrentDatabase.Database
-3- ws.CurrentDatabase.Database
Wenn es ein UIDatabase- Objekt gibt, dann hat dieses auch IMMER (soviel ich weiss) eine Database- Property, dieser Punkt fällt also auch als Fehlerursache weg...
HTH
Tode
-
Alternativ könntest Du auch über die Source gehen
...
dim view as notesview
...
set view = source.view
set db = view.parent
gruss
umi
-
-2-
ws.CurrentDatabase: Wenn man die Designer- Hilfe richtig liest, dann liegt hier die grösste Wahrscheinlichkeit für den Fehler, denn offensichtlich kann diese Property unter bestimmten Umständen (z.B. wenn instantiiert durch eine Ansicht) leer sein.
Versuch mal folgendes:
Set db = ws.GetCurrentDatabase.Database
HTH
Tode
Hallo Tode,
genau das wars, jetzt ist das eintragen bei "nicht im Arbeitsbereich geöffneter DB" möglich.
Vielen, vielen Dank!
Mfg Horst