Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MadMetzger am 31.03.03 - 12:18:52

Titel: Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 31.03.03 - 12:18:52
Wie kann man die Gestaltung von Ansichten aktualisieren, wenn diese ab der ersten Nutzung persönliche Ansichten sind?

Dazu muss man doch die persönliche Ansicht löschen und neu in die DB gehen, oder? Wie kann ich den Vorgang automatisieren?
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 31.03.03 - 12:21:08
entweder im Notesforum SUCHEN  :P oder aber das lesen:
http://www.atnotes.de/index.php?board=7;action=display;threadid=7248
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 31.03.03 - 14:07:11
der code funktioniert nicht! spuckt eine Fehlermeldung aus bei der forall-schleife und dem ersten if...


 
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 31.03.03 - 14:20:41
ich geh davon aus, wenn man solchen Code verwendet, daß man ihn liest und nachzuvollziehen versucht...les nochmals bitte die Kommentare zum Quellcode "oben" im header..steht genau das drin, was Dir nun als Fehler auftaucht  ::) ::) ::)
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 31.03.03 - 15:14:28
hab ich getan, kann aber mir den fehler nicht erklären. da kommt ein type mismatch bei der abfrage ob es sich um eine persönliche ansicht handelt.

im header stehen leider keine näheren infos.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 31.03.03 - 16:50:02
doch doch...da steht was...
"For R5.0 and later, use the isPrivate property of NotesView rather than isPrivateView(v)"

...ersetz mal bitte die if Bedingung durch ein "notesView.IsPrivate" => If isPrivateView(v) Then
in
=> If v.IsPrivate Then

und, klappts?
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: ata am 31.03.03 - 17:02:16
... handelt es sich um diese Zeile ...

Print "Suche veraltete, private Ansichten " & count & " von " & tot & "..."

... das sind TypeMismatch drin, denn es sollen Zahlen und Text verkettet werden...

Print "Suche veraltete, private Ansichten " & Cstr(count) & " von " & Cstr(tot) & "..."

ata
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 31.03.03 - 17:19:29
@ata: das mit dem print war es nicht, danke trotzdem.

jetzt kommt nur noch ein Fehler bei
Set masterView = getMasterView (v)

Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: ata am 31.03.03 - 19:02:59
... was für ein Fehler kommt jetzt, immer noch Type mismatch?

ata
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 01.04.03 - 08:01:02
ja genau, der kommt.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 01.04.03 - 08:40:08
sag mal, wo läuft der Code bei Dir eigentlich? Im PostOpen der DB oder etwa in einer Schaltfläche oder wo auch immer?

Weil, der Code klappt ganz super duper auf 4.xer Client, weil Du ja auch unter diesem R4er Forum postest, fällt mir jetzt erst auf.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 01.04.03 - 08:54:02
ich habe einen agenten genommen, und hab ein wenig am anfang angepasst. (beim Kommentar zum Postopen)

hier mal der quelltext.

Dim session As New notessession
   Dim Eintrag As String
   Eintrag = session.getenvironmentstring("pbtraxx")
   Dim Heute As String
   Heute = Today()
   If Heute = Eintrag Then
      Exit Sub          
   End If
   
   Set db = Session.currentdatabase    '...works in Database PostOpen event, modify for other contexts
   count=0    
   privateviewtext=""
   Dim masterView As NotesView
   tot = Ubound(db.views) + 1
   Forall v In db.views
      count=count+1
      Print "Suche veraltete, private Ansichten " & cstr(count) & " von " & cstr(tot) & "..."
      If isPrivateView(v) Then                  
         Set masterView = getMasterView(v)
'...get the shared view on which this personal view is based
         If Not(masterView Is Nothing) Then
            If v.Created < masterView.LastModified Then      '...if the shared view design was updated after the private view was
                        '...then remove the private view
               privateviewtext=privateviewtext & Chr(10) & v.name                        
               v.remove                      
            End If
         End If
      End If
   End Forall
   
   If privateviewtext="" Then
      Print "Keine veralteten Ansichten gefunden."
   Else
      Print ""
      Messagebox "folgende private ""Meine"" Ansichten mußten entfernt werden:" & privateviewtext & Chr(10) & "Schließen Sie die Datenbank und gehen wieder hinein."
   End If
   Call session.setenvironmentvar("pbtraxx",Heute)
End Sub

Function isPrivateView(v As NotesView) As Integer
   isPrivateView = False
   
   Set vdoc = v.parent.GetDocumentByUnid( v.UniversalID )    
   If Not (vdoc Is Nothing) Then
      If vdoc.HasItem("$Flags") Then
         If Instr(vdoc.GetItemValue("$Flags")(0), "V") Then
            isPrivateView = True
            Exit Function
         End If
      End If
   End If
   
End Function

Function getMasterView(pView As NotesView) As NotesView
   Set db = pView.parent
   viewList = db.views
   Dim view As NotesView
   Forall v In viewList
      If v.Name = pView.Name Then
         Set view = v
         If Not(isPrivateView(view)) Then
            Set getmasterView = v  '...get the shared view on which this personal view is based
            Exit Function                              
         End If
      End If          
   End Forall    
   Set getMasterView = Nothing
   Print "Die ursprüngliche Vorlage der privaten Ansicht '" & pView.name & "' konnte nicht gefunden werden."
End Function
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 01.04.03 - 09:07:37
auf den ersten Blick...sag ihm mal daß
db einen Notes DB ist per

dim db as notesdatabase
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 01.04.03 - 09:35:55
das einfügen ändert leider nichts. hab oben mal die angemeckerten Zeilen fett gemacht.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 01.04.03 - 09:53:25
im einem älteren Posting hatte ich Dir einen Vorschlag bzgl. dieser Zeile gemacht...schon gelesen und getestet?
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 01.04.03 - 10:05:39
das habe ich schon ausprobiert... funktionierte nicht, da mein client r4 ist.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 01.04.03 - 10:10:05
ok...dann werde ich den Code mal im Agent testen..liegt bestimmt (so wie es auch die Authorin betont) am Kontext wo das Script läuft.

Aber, ich kann erst heute Abend R4 anschmeissen und testen (wirs spääät), was da in einem normalen Agent nicht klappt...gehe davon aus, daß Du den Agent manuell antriggerst und der eigentlich auf was eingestellt ist? Run über selected oder wie ?
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 01.04.03 - 10:15:09
habe den Agenten eingestellt manuell aus der Liste der Agents zu starten und das er einmal ausgeführt werden soll.

das mit dem Kontext habe ich ja eigentlich beachtet, denke ich. denn ich muss mir ja die backend-database holen, was ich hier dann über die session gemacht habe, oder? Oder habe ich irgendwo einen richtigen Denkfehler?
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 01.04.03 - 14:20:46
Was haltet Ihr von dieser Formel? Sie entfernt die DB aus dem Arbeitsbereich und fügt sie wieder hinzu, so dass die Ansichten gelöscht und neu erstellt werden. Funktioniert das auch? Habe ich bei www.martinscott.com (http://www.martinscott.com) gefunden.

Formel:
@Command([WindowWorkspace]);
@Command([FileOpenDatabase];........);
@Command([FileCloseWindow]);
@PostedCommand([EditClear]);
@PostedCommand([FileOpenDatabase];.......)


edit: Diese Formel hat nicht funktioniert.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 04.04.03 - 08:43:10
@Rob Green: Schon was gefunden?
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 04.04.03 - 09:04:47
ja...hallo,...gefunden...was...achsoo..moment..ich schmeis mal schnell R4 an...erstmal ölen, ist schon Rost auf dem HD Cluster wo R4 drauf ist...quietsch...rauch...peng....ahhhh..die Maschine läuft noch immer auch nach 500.000 KM, das ist ne Qualität eh? Unverwüstlich.
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 04.04.03 - 09:50:20
alsoooo...hab das Teil als >>AGENT<< und als >>runonce<< und >>rufe über Action<< eingestellt. Mit dem Code von Dir. Mein Client hat den Stand 4.64 und kein Error im Code. Läuft tuto paletti durch.

Bist Du a.) ganz sicher, daß der Agent bei Dir auch so eingestellt ist und b.) ganz sicher, daß Du alles in einer 4er Umgebung (auch Client) testest?

BTW, habs nun auch unter R5.10 getestet...nema problema !
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 04.04.03 - 10:12:49
hatte nicht mit "aus Menü Aktion" eingestellt, dann läuft es ohne Fehler durch. Schönen Dank!!!!
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 04.04.03 - 11:33:40
Irrtum! Hatte den angemeckerten Teil auskommentiert!!! ICh Blödmann!

Aber ich kriege immer noch einen Fehler, schon beim Abspeichern des Agenten in den oben angegebenen Zeilen.
Das ist ja die Stelle, wo der Agent alle Ansichten aus dem Views-Array durchläuft. Ich kann mir das nicht erklären... Die Funktion IsPrivateView brauch doch eine NotesView als Parameter und V in dem Script ist eine Ansicht aus dem Array. Warum kommt dann ein Fehler?
*kurz vor dem verzweifeln bin*
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 04.04.03 - 11:38:19
hast Du den ganz Code aus dem Board gepastet und original in den Agent im Bereich INITIALIZE zwischen Sub und END Sub reinkopiert?

Schau mal hier die Test DB:
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: MadMetzger am 04.04.03 - 11:45:39
Hatte ich eigentlich getan...

Hab jetzt deinen Agenten reinkopiert, der natürlich funktioniert. ICh versteh die Welt nicht mehr, aber der Fehler muss wohl bei mir gelegen haben...
Titel: Re:Ansichten "Bei erster Nutzung persönlich" aktualisieren
Beitrag von: Rob Green am 04.04.03 - 11:52:17
sch...egal..nimm das Teil, Hauptsache es klappt jetzt  ;)
Titel: komische Fehlermeldung
Beitrag von: MadMetzger am 07.04.03 - 08:30:41
Hab noch mal eine Frage...

Wenn der Agent durchgelaufen ist, kommt immer eine Fehlermeldung, die ich mir nicht erklären kann:

Zitat
B-Tree structure is inavalid

kann mir das jemand erklären?