Autor Thema: Persönliche Ansichten ausfindig machen und löschen  (Gelesen 5826 mal)

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Hallihallo!

Ich habe folgendes Script geschrieben, um alle Ansichten einer Datenbank durchzugehen und einen Zähler mitlaufen zu lassen, der die versteckten Ansichten mitzählt.

Code
Dim views As Variant
Dim privCounter, pubCounter As Integer   
views = dbCurrent.Views
   
   Forall v In views
      If ( v.IsPrivate ) Then
         privCounter = privCounter + 1
      End If
      pubCounter = pubCounter + 1
   End Forall
   
Msgbox pubCounter & " öffentliche Ansichten" & Chr(13) & privCounter & " private Ansichten"

Der Agent läuft lokal und funktioniert. Auf dem Server bekomme ich aber die folgende Fehlermeldung:

Notes error: Index kann nicht auf dem Server erstellt werden. (Name der Ansicht)


Woran liegt das und wie kann ich es beheben? Ich will alle persönlichen Ansichten der Datenbank auf dem Server löschen, damit sie nach einem Gestaltungsupdate auch aktualisiert und neu erstellt werden.

Vielen Dank im Voraus

Jérôme

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #1 am: 16.11.02 - 15:05:36 »
... das sieht danach aus, daß die privaten Ansichten nur lokal in der Desktop.dsk vorhanden sind - auf dem Server gab es diese privaten Ansichten nicht...

ata
Grüßle Toni :)

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #2 am: 17.11.02 - 13:32:53 »
Aber ich habe doch beim Anlegen der Ansicht angegeben, dass die Ansicht nach der ersten Benutzung privat sein soll, aber nicht, dass sie lokal abgelegt sein soll. *grummel*

Ich mach mal ne neue Ansicht und pass genau auf...

Oder könnte das an noch was anderem liegen?

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #3 am: 17.11.02 - 15:18:17 »
Die Eigenschaft IsPrivate ist noch nicht initialisiert. Die view ist ja nur ein Rahmenkonstrukt für den Benutzer der drauf klickt, dann wird das Readers Feld geschrieben und die Eigenschaft IsPrivate auf true gesetzt.

Wenn du private Ansichten auf dem Server löschen willst, geht das indem du eine neue Replik machst. Hier hast du noch ein kleines Problem - die privaten views in der Desktop des Users sind noch vorhanden(shared desktop private on first use) - die Lösung könnte ein Skript in DatabaseOpen sein das die privaten Views des Benutzers löscht.  Du gehst alle views durch und checkst das Readers Feld.

Ich versuche immer von privaten views Abstand zu halten wenn es geht -  zB.  kannst du dir die Performance des Servers kaputt machen wenn du 2 private on first use und 2000 Benutzer hat.  Die db wird dann mit 4000 views zu einem riesigen Wasserkopf, es dauert ewig den Index zu aktualisieren.

- das gleiche passiert ja auch mit den privaten foldern.

cu
Wir können alles außer hochdeutsch !

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

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #4 am: 17.11.02 - 15:26:39 »
Aber wie sonst kann ich denn Ansichten ermöglichen, in denen nur die Dokumente dessen angezeigt werden, der sie sehen darf? Hab ich das richtig verstanden? Nur durch Leser- und Autorenfelder?

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #5 am: 17.11.02 - 15:42:11 »

Est ist schon ok mit privaten Views, aber die sind schwer zu handeln.

Ich mache es mit Reader felder, d.h.  Role als Reader definieren.

cu
Wir können alles außer hochdeutsch !

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

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #6 am: 17.11.02 - 15:45:21 »
Ich stehe noch relativ am Anfang mit der Entwicklung dieser Datenbank. WÜrdest du denn empfehlen, mit Autoren- und leserfeldern zu arbeiten statt mit persönlichen Ansichten?

Wenn persönliche Ansichten schwieriger zu handeln sind, welche Vorteile haben sie denn? Was z.B. kann ich also mit persönlichen Ansichten machen, was ich anders nicht machen kann?

Danke für deine Hilfe!

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #7 am: 17.11.02 - 16:36:09 »
persönliche Ansichten/Folder sind für den geübten Notes  Benutzer gedacht der sich schnell eine eigene Ansicht basteln will, wo er nur seine speziellen Daten sehen will. Der Benutzer schützt in diesem Fall nur seine Ansicht, nicht aber die doks in der Ansicht.  Schütze ich doks mit einem Lesefeld dann kann dieser Benutzer nur seine doks sehen.
Im ersten Fall ist ein kein Designer notwendig - der user macht sich seine queries, im zweiten Fall ist  men-power als Designer notwendig. Persönliche Ansichten/Folder sind also ad-hoc Formulierungen des User.

Grundsätzlich gebe ich einem Autor einer db keine
- create personal agents
- create personal folders/view
- create shared folders/view
- create lotus script/java folders/view
Rechte.

Bei einem Editor müsste man sich Gedanken machen ob diese Aktionen notwendig sind, und der Manager darf es nach Rücksprache machen.
Die Richtlinie das nur 2 Manager auf einer DB zugelassen sind, sollte auch ein Qualitätskriterium sein -> eine Admin Gruppe und eine Person.

Die negativen Folgen bei privaten Views ist der Wasserkopf der sich aufbaut, und bei Personenfluktuation bleiben private Ansichten drin - mir kann keiner erzählen das da einer aufräumt. Als nächster Punkt wäre anzumerken das veschiedene Personen verschiedene Ansichten erzeugen auch noch mit  unterschiedlichem Namen,  obwohl sie das gleiche Resultat erzielen wollen (z.B. shared, private on first use).
Wird die db in einem Cluster eingesetzt, kann es sein das nicht alle privaten Ansichten auf den Servern verfügbar sind.  

Der Übersicht wegen und der Wartbarkeit einer db setze ich private oder shared private Ansichten selten ein.
Die Maintanance ist wichtig falls du deine Entwicklung in andere Hände geben sollst, dann möchte dein Nachfolger
eine saubere Geschichte vor sich finden.

Manchmal ist weniger - mehr.

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:Persönliche Ansichten ausfindig machen und löschen
« Antwort #8 am: 17.11.02 - 17:34:10 »
... dem kann ich noch hinzufügen, daß Designänderungen bei privaten Views erst ankommen, wenn man die bisherigen löscht...

Leser und Autorenfelder sind mit Sicherheit die besseren Wege, ansonsten kann man eine Personalisierung der Ansichten mit eingebetteten Ansichten in Masken erreichen, wenn man die Kategorie berechnet...

ata

Grüßle Toni :)

Offline harkpabst_meliantrop

  • Senior Mitglied
  • ****
  • Beiträge: 463
  • Geschlecht: Männlich
  • I love!
    • Heute schon gelebt?
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #9 am: 17.11.02 - 17:47:47 »
... - die privaten views in der Desktop des Users sind noch vorhanden(shared desktop private on first use) - die Lösung könnte ein Skript in DatabaseOpen sein das die privaten Views des Benutzers löscht.  ...
Na, da werden sich die Benutzer aber freuen ...

Zitat
Ich versuche immer von privaten views Abstand zu halten wenn es geht -  zB.  kannst du dir die Performance des Servers kaputt machen wenn du 2 private on first use und 2000 Benutzer hat.  Die db wird dann mit 4000 views zu einem riesigen Wasserkopf, es dauert ewig den Index zu aktualisieren.
Naja, das Problem umgeht man ja schon, wenn man die persönlichen Ansichten eben nicht auf dem Server sondern auf der Workstation des Benutzers lässt.

Abgesehen davon mag ich das Zeug aber auch nicht. ;)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #11 am: 18.11.02 - 13:58:49 »
Vielen Dank für die vielen Antworten *freu*

Ich werde dann mal anfangen, Autoren- und Leserfelder einzubauen. Dazu habe ich aber noch eine Frage:

Es sind in der Datenbank schon Produktivdokumente erstellt worden (mein Chef hat darauf bestanden, dass die Datenbank beim derzeitigen Stand schon produktiv eingesetzt wird, also würde ich mich freuen, wenn keine Kommentare wie "Das kann man doch nicht machen" oder "Selbst schuld" kämen, das weiß ich nämlich auch ;) ).

Kann ich solche Leser- und Autorenfelder auch nachträglich in die Dokumente einbauen? Wie geschieht das? Wo im Dokument würden die denn dann auftauchen?

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Persönliche Ansichten ausfindig machen und löschen
« Antwort #12 am: 18.11.02 - 15:57:07 »
Bevor du die Leser/Autorenfelder reinmachst kopiere erst die db (und ein backup vom produktiv) lokal und teste zuerst.

Die Felder kannst du oben in die Maske integrieren - ich mache mir immer eine subform mit dem namen Header
und tue die dann einfügen. Die Felder sind versteckt und berechnet beim anlegen.

- mach dir eine view wo alle doks der db (oder zumindest die wo die neuen Felder rein sollen) selektiert werden - diese verwendest du in einem Agenten.

- im agent holst du dir die view und gehst jedes dok über eine while Schleife  durch.

- bevor du den Agent startest sollen die neuen Felder auf berechnet gesetzt werden - nach dem update berechnet beim Anlegen(weniger overhead)

Form/Subform:
Felder -> DefaultAuthor - Autorfeld(multivalue)/berechnet beim Anlegen - Formelwert="[Admin]":"[DBManager]"
       -> DocAuthor - Autorfeld/berechnet beim Anlegen - Formelwert=@@244@@
       -> optional OtherAuthor - Autorfeld/berechnet beim Anlegen - Formelwert="[AutorRole]"
       -> DefaultReader - Readerfeld(multivalue)/berechnet beim Anlegen - Formelwert="[Admin]":"[DBManager]"
       -> DocReader - Readerfeld/berechnet beim Anlegen - Formelwert=@@244@@
       -> optional OtherReader - Readerfeld/berechnet beim Anlegen - Formelwert="[ReaderRole]"

- du musst dir überlegen wer im Feld OtherReader/-Author steht - entweder nur Leser oder auch Autoren.
Rollen: Admin, DBManager, AutorRole, ReaderRole

- stelle dir eine Tabelle mit den Leser/Autoren auf - checke Plausibilitäten

Agent:
Dim s as New NotesSession
Dim db as NotesDatabase
Dim v As NotesView
Dim doc as Notesdocument
Dim item As NotesItem, item1 As NotesItem, item2 as NotesItem
Dim actReader As Variant

Set db = s.currentDatabase
Set v = db.GetView("AlleDoksAnsicht")

Set doc = v.GetFirstDocument

While Not ( doc Is Nothing )

  '' kannst den Agent mehrfach laufen lassen - zum testen wird das Feld immer gelöscht
  If doc.HasItem("DefaultAuthor") Then  doc.removeItem("DefaultAuthor")
  '' --> das gleiche mit DocAuthor + OtherAuthor

  '' Autorenfelder setzen
  Set item = New NotesItem( doc, "DefaultAuthor", "[Admin]:[DBManager]" , AUTHORS )
  '' Readerfelder setzen
  Set item1 = New NotesItem( doc, "DefaultReader", "[Admin]:[DBManager]" , READERS )
  ''' usw

  '' wenn du noch kein Reader/Autorfeld hast, holst du dir den Reader/Autor aus dem $Updated Feld - Der erste in der Liste - wenn du schon einen Autor hast setzt du den ins Feld
  actReader = doc.GetItemValue( "$UpdatedBy")
  Set item2 = New NotesItem( doc, "DefaultReader", actReader(0), READERS )
  item2.IsSummary = True


  Call doc.Computewithform(True, False)
  Call doc.Save (True, false)
  Set doc = v.GetNextDocument( doc )

Wend



- ich habe den Code nicht getestet aber die Logik sollte stimmen

cu

Wir können alles außer hochdeutsch !

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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re: Persönliche Ansichten ausfindig machen und löschen
« Antwort #13 am: 03.08.07 - 15:40:09 »
Hallo,

ich poste hier auf einen "uralt" Eintrag.

Ich bin auf in durch Suchen für das Löschen von privaten Ansichten gestossen. Ich habe in meinen Dokumenten ordnungsgemäße Leser-Felder. Die privaten Ansichten habe ich bei der DB-Entwicklung nur gemacht, da Spaltensummen bei öffentlichen Ansichten trotz Leser-Felder immer für die gesamten Dokumente angegeben werden.
Hat sich hier mal was getan?
« Letzte Änderung: 03.08.07 - 16:23:21 von tabama »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz