Avatar billede cbkc. Nybegynder
17. april 2002 - 11:04 Der er 12 kommentarer

Mappe private on first use

Et TRÆLS problem ved mapper der er private on first use er at man ikke kan ændre designet centralt.


Defor troede jeg at nedenstående kode ville slette den gamle private mappe, og derefter oprette en ny
mmmeen det gør den tilsyneladende ikke, den sletter men opretter ikke en ny (måske pga en tidsforsinkelse mellem sletning og oprettelse ????)

%REM
Sørger for at den private mappe "Soegeres" oprettes første gang databasen benyttes.
Virker vha. et profildokument
%END REM
Sub Postopen(Source As Notesuidatabase)
    Dim view As NotesView
    Dim workspace As New NotesUIWorkspace
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim pro As Variant
    Dim user As String
    Set db = session.CurrentDatabase
    user = session.UserName   
    Set doc=db.GetProfileDocument("vr profil", user)
    mappe = doc.mappe
   
    'Dette afsnit har til formål at slette den private mappe, så der kan laves en ny med de nye egenskaber.
    'Det må kun afvikles hvis der forefindes en privat mape.
    If (mappe(0) = "Ja") Then    'Hvis mappe findes, skal den slettes så der kan laves en ny privat mappe, med nye egenskaber.
          Set view = db.GetView( "Soegeres" )
          Call view.Remove
          mappe(0) = ""
          doc.mappe = mappe
          Call doc.Save(True,False)
          Msgbox " Slettet"
    End If
         
    If (mappe(0) <> "JaJa") Then    'Mappe er Ja, hvis mappe er privat/brugt før.
          mappe(0) = "JaJa"
          doc.mappe = mappe
          Call doc.Save(True,False)
          Call Source.OpenView("Soegeres")
          Call workspace.OpenDatabase("","","værktøj")
          Msgbox " Gendannet"
    End If
End Sub

Mappe(0) er på forhånd = "Ja" hvis bruger har den som privat mappe.



Det jeg søger er en metode til først at slette den 'gamle' private mappe, og derefter oprette den igen - ud fra skabelonen.


Avatar billede cbkc. Nybegynder
17. april 2002 - 11:15 #1
Indtil videre har jeg oprettet EN TIL private on first use folder, som har det nye design - så sletter jeg den gamle og opretter en ny ud fra den nye.
--- det virker bare lidt akavet.

Gode forslag søges...
Avatar billede cdelicht Nybegynder
17. april 2002 - 16:34 #2
Hvis du sletter folderen, forsvinder jo også alt hvad brugeren har lagt i den. Hvis det ingen betydning har, hvorfor sletter/opretter du så ikke folderen hver gang basen lukkes/åbnes - så er designet altid opdateret.
Avatar billede cbkc. Nybegynder
18. april 2002 - 09:26 #3
Om det der ligger i mappen bliver slettet, har ingen betydning.

Man kunne godt åbne/slette ved åbning/lukning, men da det kun skal ske nå designeren har ændret på skabelonen, er det spild af pc tid at gøre det hver gang(det sker ikke ret ofte).
Er det ikke muligt i samme arbejdsgang at slette den private, og så "oprette den igen" ??

Chr.
Avatar billede cbkc. Nybegynder
18. april 2002 - 10:10 #4
Er det evt. muligt at opdatere design i private Private on first use mapper??
Avatar billede cdelicht Nybegynder
21. april 2002 - 12:45 #5
"Er det evt. muligt at opdatere design i private Private on first use mapper??"
Nej, for husk på en Private folder er en kopi af et design og med sit eget UNID. Når du opdaterer "masteren" opdaterer du ikke hver kopi. For at det skulle kunne lade sig gøre skulle designet "replikeres" ud til hver folder - det bliver det ikke, for Notes holder ikke rede på hvor designet kommer fra. Hver "Private" folder er hel sin egen når først den er oprettet.

"Er det ikke muligt i samme arbejdsgang at slette den private, og så "oprette den igen" ??"
Jo, det skulle kunne lade sig gøre med "PutInFolder method". Første gang du lægger noget i en folder, der ikke eksisterer oprettes den. Det sparer dig også pc tid ;-)
Avatar billede cbkc. Nybegynder
25. april 2002 - 08:58 #6
Tak for et fyldestgørende svar.
Når jeg bruger "PutInFolder", og mappen ikke er "Private", så får jeg meddelsen: "Cant move to folder on first use"
Hvordan forklare jeg iøvrigt at det skal være den private mappe, og ikke den distribuerede skabelon, de har jo samme navn ??
Avatar billede cdelicht Nybegynder
25. april 2002 - 11:06 #7
1) PutInFolder kan ikke lægge første dokument i "Delte, private efter første brug" foldere.
2) Det holder Notes rede på. Hvis du lægger noget i en folder og kun skabelonen findes oprettes en ny kopi til brug for brugeren. Bemærk, du kan altså IKKE lægge noget i folderen fra central hold - det er kun den enkelte bruger ser kan lægge i sin egen folder - og kun sin egen!
Avatar billede cbkc. Nybegynder
25. april 2002 - 12:48 #8
2) Men hvordan kan jeg i script vide om der findes en privat mappe??
- det duer jo ikke at slette skabelonen. Og PutInfoldder duer jo ikke til private mapper, når de ikke er brugt 1. gang endnu.
Avatar billede cdelicht Nybegynder
25. april 2002 - 13:04 #9
F.eks. en af følgende....
1) Du sikrer dig bare at funktionen som ligger noget i folderen kun kan kaldes inde fra folderen. Dermed er den oprettet.
2) Du lader din folder være default view i basen
3) Før du bruger PutInFolder kalder du @Command([OpenView])
Avatar billede cbkc. Nybegynder
25. april 2002 - 18:03 #10
Ja..Joo, men så 'forstyrres' bruger(dog ikke ved 2., men hvad så hvis der er flere private mapper?).
P.T. kan jeg læse i view.readers(0). Vha. IsEmpty kan jeg se om der er en person i denne variabel - hvilket der lader til at være når mappen er brugt første gang. Dette vil jeg dog gerne være sikker på!!

PS. kan man tilsvarende 'læse' i en variabel om mapper er stored lokalt??
Avatar billede cdelicht Nybegynder
28. april 2002 - 09:10 #11
Sig mig, hvad er det egentlig du vil?
Hvad bruger du den private folder til?
Avatar billede avest Nybegynder
30. maj 2002 - 14:41 #12
Jeg har rodet lidt med samme problem og har lavet en lille funktion.

Funktionen kan så kaldes fra databasecriptet PostOpen.

Hvis funktionen returnerer TRUE er der et behov for at åbne "Private on first Use mappen" for at den bliver privat. Hvis man ikke gør dette kan LotusScript ikke benytte den.

IF OpdaterPriveteView("MinMappe") = TRUE THEN
  source.OpenView("MinMappe")
END ID

På den måde har brugeren altid en opdateret mappe. Der er dog et problem med OpenView som har det med at åbne i et nyt vindue og uden navigator. MEn det er jo en anden sag.

Function OpdaterPrivateView(viewname As String) As Integer

    Dim viewdoc As NotesDocument   
    Dim templateDoc As NotesDocument
    Dim db As NotesDatabase
    Dim session As New NotesSession
    Dim itemV As NotesItem
    Dim itemT As NotesItem
    Dim datoopdateret As Variant
    Dim Streng As String
   
    Set db = session.CurrentDatabase
    Set view = db.GetView(viewname)
    SkalOpdaters=False
   
   
    If Not (view Is Nothing) Then
      Set viewdoc = db.GetDocumentByUnid(view.UniversalID)
      streng = viewdoc.GetItemValue("$Flags")(0)
      If Instr(streng,"V")=0 Then  'Ikke privat endnu
        Call session.SetEnvironmentVar("MappeID",viewdoc.UniversalID)
             
        SkalOpdateres=True
      Else ' den er allerede privat
        Set templatedoc = db.GetDocumentByUnid_   
              (session.getEnvironmentString("MappeID"))
        Set itemV = viewdoc.GetFirstItem("$UpdatedBy")
        Set itemT = templatedoc.GetFirstItem("$UpdatedBy")
        If itemV.lastmodified < itemT.lastmodified Then
            ' Template er opdateret siden privatisering
          Call view.Remove()
          SkalOpdaters=True
        End If   
      End If
    End If
    UpdatePrivateView=SkalOpdateres
End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester