Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: yes2002 am 31.01.03 - 22:03:50

Titel: Status der Datenbank abfragen ...
Beitrag von: yes2002 am 31.01.03 - 22:03:50
Hi,

folgendes Problem - ich möchte auf einem Server auf bestimmte Datenbanken zugreifen. Wenn ich mindestens Entwicklerrechte auf eine Datenbank habe (das weiß ich leider vorher nicht) möchte ich Änderungen in der Datenbank vornehmen.

Frage:
Wie kann man am besten seine Rechte auf eine DB testen.

Workaround:
Zur Zeit versuche ich die DBzu referenzieren und fange mögliche Zugriffsfehler mit on error ab. Ich bin damit aber nicht zufrieden. Wer hat eine bessere Idee???

   On Error Goto Fehlerbehandlung
Dim db As New NotesDatabase(persdoc.MailServer(0), persdoc.MailFile(0))

Fehlerbehandlung:
   If Err() = 4060 Then
      Call notesLog.LogError( 0, "FEHLER, kein Zugriff - " & Error() & " (" & Cstr( Err() ) & ") Line:" & Erl() )
      zugriff = 0
      Resume Next
   End If
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: ata am 31.01.03 - 23:46:57
... um deine Rechte auf einer Datenbank zu überprüfen kannst du mit den Notes-Klassen arbeiten. Es gibt speziell dafür die NotesACL- und NotesACLEntry- Klassen... mehr dazu findest du in der Notes-Hilfe...

ata
Titel: Danke - hilft aber nicht ...
Beitrag von: yes2002 am 01.02.03 - 09:40:55
Hallo, das hilft leider nicht. Wenn ich auf eine Datenbank keinen Zugriff habe - bekomme ich schon bei Dim db as new ... (siehe Script unten) diese Fehlermeldung:

user XY cannot open Databse no.nsf

... und der Agent bleibt stehen. Einziger Workaroud ist on error - das möchte ich aber anders lösen.

Hat jemand noch ein Tipp????

Sub Initialize
   Dim session As New NotesSession
   Dim db As  New NotesDatabase("","no.nsf")
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   Set db = session.CurrentDatabase
   Set acl = db.ACL
   Set entry = acl.GetEntry( "Dyetra Jones" )
End Sub
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: Performance am 01.02.03 - 09:53:56
einen anderen Workaround habe ich nicht, aber dein Ansatz ist nicht schlecht. Wenn du auf eine db kein Zugriff hast kommt der error 4060 den fängst du mit on error ab, ist doch ok.

da gibt es nicht mehr viel ausser einem flag = db.open()

wieso bleibt der Agent stehen? du hast doch ein resume next drin ?

cu
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: yes2002 am 01.02.03 - 10:08:26
Hi,

doch, in der Fehlerbehandlung ist ein Resume next aufgeführt. Ich hatte gehofft - mir wäre ein Denkfehler unterlaufen und man könnte auf on error an der Stelle verzichten ...

Danke!
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: ata am 01.02.03 - 23:06:30
... ob du überhaupt Zugriff hast fragst du wie folgt ab...

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim server As String
   Dim dbName As String
   Dim Level As Integer
   
   server = ""
   dbName = "DBName.nsf"
   Set db = session.GetDatabase( server, dbName )
   If db.isOpen Then
      Level = db.CurrentAccessLevel
      If Level = 0 Then
         Msgbox "Kein Zugriff",0,server +" - " + dbName
      Elseif Level = 1 Then
         Msgbox "Archivar - Einlieferer",0,server +" - " + dbName
      Elseif Level = 2 Then
         Msgbox "Leser",0,server +" - " + dbName
      Elseif Level = 2 Then
         Msgbox "Autor",0,server +" - " + dbName
      Elseif Level = 2 Then
         Msgbox "Editor",0,server +" - " + dbName
      Elseif Level = 2 Then
         Msgbox "Entwickler",0,server +" - " + dbName
      Elseif Level = 2 Then
         Msgbox "Manager",0,server +" - " + dbName
      End If
   Else
      Msgbox "Sauerei - die Datenbank existert nicht...",0,server +" - " + dbName
   End If

ata
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: yes2002 am 02.02.03 - 10:06:20
hi ata,

erstmal Danke für die Mühe - aber der Fehler "user XY cannot open Databse no.nsf" tritt beim isopen bereits auf, und der Agent bleibt stehen.

Hilft leider nicht weiter - ich glaube um die on error Lösung komme ich nicht herum.

Danke
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: ata am 02.02.03 - 11:31:32
... ich habe mir eine Datenbank gebastelt - und bin noch dabei - in der ich alle Möglichen Jobs sammle und auch von dort aus laufen lasse. Ich verwende den Code in einer Aktion, und da arbeitet er einwandfrei  - scheint also Probleme im Agent zu machen...

ata
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: yes2002 am 02.02.03 - 16:32:05
hi,
... funktioniert leider nicht.

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim server As String
   Dim dbName As String
   Dim Level As Integer
   
   server = ""
   dbName = "no.nsf"
   Set db = session.GetDatabase( server, dbName )
   If db.isOpen Then

Genau hier kommt vom System eine Messagebox mit der Meldung "user XY cannot open Databse no.nsf".

Wie habe ich getestet:

Eine lokale DB angelegt - no.nsf. Dann konsistente ACL eingestellt und mir alle Rechte entzogen (No Access).

Dann Script Agenten erstellt - Dein Quellcode reinkopiert und no.nsf als DB angeben.

Danke und Gruß
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: ata am 02.02.03 - 19:52:03
... wie gesagt, ich habe den Code in einer Aktion, bzw. Button, und da funktioniert er...

... ich habe eine Datenbank, in der ich "No Access" habe, und bekomme das Level 0 - Kein Zugriff zurück...

... ich arbeite mit Lotus Notes 5.05 und 5.08...

ata
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: Performance am 03.02.03 - 09:46:09
@ata
du hast kein access aber du hast bestimmt noch read oder write  public docs angeklickt, dann funktioniert das mit dem öffnen, ansonsten nicht

cu
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: ata am 03.02.03 - 11:06:19
Zitat
du hast kein access aber du hast bestimmt noch read oder write  public docs angeklickt, dann funktioniert das mit dem öffnen, ansonsten nicht
... ich denke nicht, kann ich aber zu Hause prüfen...

ata
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: yes2002 am 03.02.03 - 21:03:44
Hi,

ja - ist leider. Kein Zugriff läßt sich nur mit on error abfangen.

Danke!
Titel: Re:Status der Datenbank abfragen ...
Beitrag von: ata am 03.02.03 - 22:51:50
... zur Kompletierung, deine Vermutung stimmt. Ich hatte Public Access aktiviert. Nach dem Deaktivieren kann nur mit onError abgefangen werden - damit wäre dies eine zusätzliche Fallunterscheidung...

ata