Domino 9 und frühere Versionen > ND6: Entwicklung

Error Handling für @PostedCommand([FileOpenDBRepID];DB;Server)

(1/3) > >>

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