Domino 9 und frühere Versionen > ND6: Entwicklung
Error Handling für @PostedCommand([FileOpenDBRepID];DB;Server)
theBastian:
Hi,
ich versuche mich gerade mal an Formulas.
Habe eine DB-Bibliothek, die alle DB auflistet und das Öffnen der dieser DB's per Button ermöglichen soll.
Buttoncode:
--- Code: ---@PostedCommand([FileOpenDBRepID];DB;Server)
--- Ende Code ---
Da ja FileOpenDBRepID unter Script die DB nur im Backend öffnet und die User damit nichts anfangen können, muss ich also auf Formulas gehen. :(
Wenn der User Zugriff auf die ausgewählte DB hat, wird diese auch korrekt geöffnet. Ansonsten erscheint ein Dialogfeld in dem der User zusätzliche Server zur DB-Suche auswählen kann. >:(
Natürlich begreift keiner, dass das mit den Rechten zusammenhängen könnte. Daher wollte ich dieses Dialogfeld abfangen und statt dessen ein Prompt bringen.
Leider schlagen meine Versuche mit @ifError usw. fehl. Habt Ihr vielleicht eine Idee, wie man das anstellen könnte?
cu
der B@sti
Glombi:
Mit
Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )
kannst Du auch in Script eine Datenbank öffnen.
Vorher dann die DB im Backend öffnen und dort ein Error Handling einbauen.
set targetdb = New NotesDatabase( "", "" )
call targetdb.OpenByReplicaID( replicaid )
if not targetdb.IsOpen then
msgbox "...."
elseif
targetdb.ReplicaID = "00000000:00000000"
msgbox...
end if
call ws.OpenDatabase(targetdb.Server, targetdb.Filepath,...)
Sowas in der Art.
Andreas
eknori:
--- Zitat ---call targetdb.OpenByReplicaID( replicaid )
--- Ende Zitat ---
Die ReplicaID muss hier OHNE den Dopelpunkt übergeben werden; nur so als Hinweis hintendran
koehlerbv:
Auch noch einen Tip von mir: Auf jeden Fall ErrorHandling dahingehend erweitern, dass die Fehlernummer lsERR_NOTES_DBNOACCESS = 4060 nach Deinen Wünschen abgefangen wird.
Bernhard
theBastian:
Danke erst mal für Eure schnelle Hilfe.
Mein Code nach einem harten Arbeitstag ...
--- Code: ---On Error Goto ErrorHandler
On Error 4060 Goto ErrorAccess
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.document
Dim strServer As String
Dim vReplicaID As Variant
Dim strReplicaID As String
Dim strPathname As String
strServer = doc.Server(0)
vReplicaID = doc.ReplicaID
Dim oldvalue(0) As String
Dim newvalue(0) As String
oldvalue(0) = ":"
newvalue(0) = ""
newvReplicaID = Replace (vReplicaID, oldvalue, newvalue)
strReplicaID = newvReplicaID(0)
Dim db As New NotesDatabase( "", "" )
Call db.OpenByReplicaID( strServer, strReplicaID )
If Not db.Isopen Then
Print "Fehler bei Öffnen","Error"
Else
strPathname = doc.Pathname(0)
Call workspace.OpenDatabase( strServer, strPathname )
End If
GoOut:
Exit Sub
ErrorHandler:
Msgbox "Error #" & Err & " — " & Error$ & " (line: " & Erl & ")"
Resume GoOut
ErrorAccess:
Msgbox "Zugriffsverletzung"'
Resume GoOut
--- Ende Code ---
Was sagen die Fachleute dazu? ;)
cu
der B@sti
PS:
@koehlerbv: Wo kriegst Du eigentlich immer die ErrorCode her? Gabs da nicht eine Datei, in der sowas steht?
cu
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln