Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Weixel am 30.04.08 - 15:27:27

Titel: Postopen der DB
Beitrag von: Weixel am 30.04.08 - 15:27:27
Hallo Ihr @Notes'ler

Kann mir jemand sagen (Habe leider nichts über die Suche gefunden), warum der NotesUIDatabase.Close Befehl nicht direkt im Postopen der DB ausgeführt werden kann ?


Code
Sub Postopen(Source As Notesuidatabase)

Dim UserRoles As Variant
Dim int_x As Integer
	
UserRoles = Evaluate( {@UserRoles} )
	
For int_x = 0 To Ubound( UserRoles) Step 1
	If UserRoles(int_x) = "" Then
                Source.Close
	End If
Next

Danke schonmal für jedliche Hilfe

MfG
Patrick
Titel: Re: Postopen der DB
Beitrag von: Werner Götz am 30.04.08 - 15:50:07
Ich musste diese Erfahrung leider auch schon in mehreren Projekten machen.
Besser wäre es natürlich, den Anwender erst gar nicht in die Datenbank zu lassen, also ein QueryOpen-Event für die NotesUiDatabase.
Habe hierzu auch die Idee in IdeaJam eingestellt:
http://ideajam.net/IdeaJam/P/ij.nsf/0/1779BDE35CD8581686257413002FE374?OpenDocument

Ich mir im letzten Projekt über einen Timer weitergeholfen, der die Datenbank mit ca. 1 Sekunde Verzögerung schließt. Nicht wirklich schön - aber immerhin.
Titel: Re: Postopen der DB
Beitrag von: klaussal am 30.04.08 - 15:55:48
Zitat
Besser wäre es natürlich, den Anwender erst gar nicht in die Datenbank zu lassen

Macht man das nicht über die ACL ?
Titel: Re: Postopen der DB
Beitrag von: m3 am 30.04.08 - 15:57:23
Besser wäre es natürlich, den Anwender erst gar nicht in die Datenbank zu lassen
Ich hätte auch gesagt, dass der Zugriff über eine Rollen eindeutig in der ACL zu definieren ist.
Titel: Re: Postopen der DB
Beitrag von: Weixel am 30.04.08 - 15:58:22
Zitat
Besser wäre es natürlich, den Anwender erst gar nicht in die Datenbank zu lassen

Macht man das nicht über die ACL ?

Klar, das Problem hier ist allerdings wie ich die DB verwende.


Das ganze ist eine Vorlagendatenbank in der sich Textbausteine zB befinden.
Diese füge ich in ein Dokument in der eigentlichen DB mit einer simplen Copy-Paste funktionalität ein, was leider auch vorraussetzt, dass der User Edit-Rechte in der Vorlagendatenbank hat.
Deswegen fällt die Möglichkeit über die ACL leider weg
Titel: Re: Postopen der DB
Beitrag von: klaussal am 30.04.08 - 16:01:47
Zitat
leider auch vorraussetzt, dass der User Edit-Rechte in der Vorlagendatenbank hat.

Warum ? Leserecht sollte reichen.
Titel: Re: Postopen der DB
Beitrag von: klaussal am 30.04.08 - 16:03:11
Wie schön, dass es diese DB bereits gibt...  ;D

http://www.alanlepofsky.net/alepofsky/alanblog.nsf/dx/paste-information-application (http://www.alanlepofsky.net/alepofsky/alanblog.nsf/dx/paste-information-application)
Titel: Re: Postopen der DB
Beitrag von: koehlerbv am 30.04.08 - 16:06:05
Abgesehen davon ist es letztlich Quatsch, sowas über das DatabaseScript-Postopen lösen zu wollen, da dieses nicht zwingend ausgeführt werden muss. Das sollte aber auch bekannt sein.

Bernhard
Titel: Re: Postopen der DB
Beitrag von: Werner Götz am 30.04.08 - 16:18:52
Wie soll man das denn dann am besten lösen?
Titel: Re: Postopen der DB
Beitrag von: m3 am 30.04.08 - 16:23:58
1) ACL
2) Es reichen Leserechte. Editor-Rechte sind nicht notwendig.
Titel: Re: Postopen der DB
Beitrag von: Werner Götz am 30.04.08 - 16:27:39
Es gibt immer mal wieder den Fall, dass man in einer Datenbank eben Leserechte braucht, dass man aber verhindern will, dass ein "normaler" Anwender eine Datenbank öffnet und darin navigiert.

ACL = Leser hält ihn hiervon ja nicht ab.
Titel: Re: Postopen der DB
Beitrag von: m3 am 30.04.08 - 16:49:42
Sorry, das versteh ich nicht.
Er darf die Dokumente in der DB lesen, soll aber nicht darin "herumnavigieren"? Warum nicht? Er darf doch eh alles sehen, was in der DB drinnen ist, sonst hätte er keine Leserechte.

 ???
Titel: Re: Postopen der DB
Beitrag von: Werner Götz am 30.04.08 - 17:00:01
Klar, klingt erst mal "seltsam", macht aber in bestimmten Situationen schon mal Sinn.

Es gibt aber auch andere Situationen, wo man den Anwender davon abhalten möchte, eine Datenbank zu öffnen. Ich hatte neulich den Fall, dass der Anwender davon abgehalten werden soll, mit der lokalen Replik zu arbeiten, wenn die Server-DB auch zur Verfügung steht.  In diesem Fall soll nach einer entsprechenden Nachfrage automatisch die Server-DB geöffnet und die lokale DB geschlossen werden.
Leider gibt es eben kein QueryOpenDatabase - man hat also nur die Chance, über das PostOpen einzugreifen und muss also die Datenbank ggf. wieder schließen.
Titel: Re: Postopen der DB
Beitrag von: m3 am 30.04.08 - 17:01:56
1) Im Deutschen kann nichts "Sinn machen". ;)

2) Bei "lokal" vs. "server" kann ich das ja nachvollziehen. Aber hier irgendwie nicht.  :-:
Titel: Re: Postopen der DB
Beitrag von: Axel am 30.04.08 - 18:37:26
Es gibt immer mal wieder den Fall, dass man in einer Datenbank eben Leserechte braucht, dass man aber verhindern will, dass ein "normaler" Anwender eine Datenbank öffnet und darin navigiert.

ACL = Leser hält ihn hiervon ja nicht ab.

Dafür gibt es die Rollen.

Du gibst dem User Leserechte auf die DB und regelst dann mit Rollen auf welche Dokumente er zugreifen darf.

Alles andere lässt sich irgendwie austricksen.

Axel
Titel: Re: Postopen der DB
Beitrag von: flaite am 30.04.08 - 19:33:15
Ich glaub weixel meint, dass er auf die Vorlagendatenbank mit diesem alten Formelsprachen-Trick draufzugreift, in dem er alles in einem bestimmten Feld highlighted und das per Zwischenablage in eine andere Datenbank kopiert. Oder wie in dem Lepowski Link von Klaus beschrieben.
Unter dieser Voraussetzung macht die Frage eventuell schon Sinn. Ganz sicher bin ich mir aber nicht.
Kannst du das vielleicht nicht etwa in einen Agenten packen und dann in den Agenten mit run on behalf of arbeiten (dort einen Eintragen, der Admin-Rechte hat). Dann könntest du in der Template-DB mit Leserrechten für normale Anwender arbeiten und die können über diesen Agenten dann trotzdem drauf zugreifen, weil der Agent ja on-behalf-of jemanden mit höheren Rechten agiert. Bin mir aber nicht so hundertprozentig sicher, dass das so geht.
Titel: Re: Postopen der DB
Beitrag von: Werner Götz am 07.05.08 - 18:19:18
Interessante Technik zum Schließen der Datenbank im PostOpen,  hier ist der Link. (http://dpastov.blogspot.com/2008/05/evaluation-of-database.html)