Autor Thema: Status der Datenbank abfragen ...  (Gelesen 3468 mal)

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Status der Datenbank abfragen ...
« 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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Status der Datenbank abfragen ...
« Antwort #1 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
Grüßle Toni :)

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Danke - hilft aber nicht ...
« Antwort #2 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

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Status der Datenbank abfragen ...
« Antwort #3 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
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Re:Status der Datenbank abfragen ...
« Antwort #4 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!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Status der Datenbank abfragen ...
« Antwort #5 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
Grüßle Toni :)

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Re:Status der Datenbank abfragen ...
« Antwort #6 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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Status der Datenbank abfragen ...
« Antwort #7 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
Grüßle Toni :)

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Re:Status der Datenbank abfragen ...
« Antwort #8 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ß

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Status der Datenbank abfragen ...
« Antwort #9 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
Grüßle Toni :)

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Status der Datenbank abfragen ...
« Antwort #10 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
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Status der Datenbank abfragen ...
« Antwort #11 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
Grüßle Toni :)

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Re:Status der Datenbank abfragen ...
« Antwort #12 am: 03.02.03 - 21:03:44 »
Hi,

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

Danke!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Status der Datenbank abfragen ...
« Antwort #13 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
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz