Page 1 sur 1

PB avec vue "Partagé, privé à la 1re ouverture"

MessagePublié: 15 Fév 2010 à 12:38
par Gillou13
Bonjour à tous,

J'ai un souci de 'rafraichissement' avec ces vues dans une base "Note de frais"

La vue a une sélection avec un @username.

Aléatoirement (ou du moins je ne trouve pas la cause...),
quand l'utilisateur accède à sa vue, le nombre de documents visible n'est pas le bon.

Si il supprime la vue privé et la recharge il retrouve tous ces documents.

Ce n'est pas une vue enregistré dans le desktop.dsk, et ej suis en 6.5....

Merci de votre aide.

MessagePublié: 15 Fév 2010 à 12:41
par Michael DELIQUE
salut

c'est malheureusement un des soucis avec les vue privé.

généralement, je les supprime automatiquement à la fermeture de la base, comme ça a l'ouverture pas de pb de cache ou de structure

MessagePublié: 15 Fév 2010 à 13:24
par Gillou13
oki merci du renseignement.

du coup tu fait comment pour les supprimer?
tu passe par un agent?

MessagePublié: 15 Fév 2010 à 13:26
par Michael DELIQUE
j'oubliais

tu peux aussi essayé de supprimer le cache de l'utilisateur, des fois ça regle
le pb.

sinon

tu appel cette fonction dans le postopen de la base

Code : Tout sélectionner
Public Sub ViewPrivateDelete(wNameView As String, wDB As NotesDatabase,wType As String,nbDeleteAll As Boolean)
   
   Dim DBDesktop As NotesDatabase
   Dim DBServer As NotesDatabase
   Dim vwDelete As NotesView
   Dim vwBase As NotesView
   Dim nbCacheServer As Boolean
   Dim nbCacheDesktop As Boolean
   Dim vrValue As Variant
   Dim Doc As NotesDocument
   
   On Error Goto ErreurHandle
   
   If Trim(wNameView)="" Then
      If nbDeleteAll = False Then
         Exit Sub
      End If
   End If
   
%REM
View : $FLAG
Shared : PY
Shared Server Private : pPY (pPYV pour la copie privé)
Shared Desktop Private : poPY
Private : PYV

Folder : $FLAG
Shared : 3PFY
Shared Server Private : 3pPFY (3pPFYV pour la copie privé)
Shared Desktop Private : 3poPFY
Private : 3PFYV
%END REM
   
   
   
   Select Case Ucase(Trim(wType))
   Case "S","SERVER","SERVEUR" 'Efface les vues privées sur le serveur
      nbCacheServer = True
      nbCacheDesktop = False
   Case "B","BOTH","2","SD","DS"
      nbCacheServer = True ' efface les vues privées sur le server et le desktop
      nbCacheDesktop = True
   Case "D","DESKTOP" 'efface les vues privées sur le desktop
      nbCacheServer = False
      nbCacheDesktop = True
   End Select
   
   If Session Is Nothing Or DB Is Nothing Then
      Set Session = New NotesSession
      Set DB = Session.CurrentDatabase
   End If
   
   'traitement pour les vues stocker sur le server
   If nbCacheServer = True Then
      'efface toutes les vues privées
      
      If wDB Is Nothing Then
         Set DBServer = DB
      Else
         Set DBServer = wDB
      End If
      
      If nbDeleteAll = True Then
         vrValue = DBServer.Views
         If TestVariant(vrValue) = True Then
            Forall ValueS In vrValue
               Set vwDelete = ValueS
               If Not vwDelete Is Nothing Then
               '   Set Doc = DBServer.GetDocumentByUNID(vwDelete.UniversalID)
               '   If Not Doc Is Nothing Then
               '      Select Case Ucase(Trim(Doc.GetItemValue("$Flag")(0)))
               '      Case "PPYV","3PPFYV"
               '      End Select
               '      Set Doc = Nothing
               '   End If
               '   If(Ubound(vwDelete.aliases)>0) Then
                  If vwDelete.IsPrivate = True Then
                     Call vwDelete.Remove
                     Set DBServer = Nothing
                  End If
               '   End If
                  Set vwDelete = Nothing
               End If
            End Forall
         End If
         vrValue = Null
         
      Else
         'efface la vue privée passé en parametre
         Set vwDelete = DBServer.GetView(wNameView)
         If Not vwDelete Is Nothing Then
         '   If(Ubound(vwDelete.aliases)>0) Then
            If vwDelete.IsPrivate = True Then
               Call vwDelete.Remove
               If nbCacheDesktop = False Then
                  Set vwDelete = Nothing      
                  Set DBServer = Nothing
                  Exit Sub
               End If
            End If
         '   End If   
            Set vwDelete = Nothing
         End If   
      End If
      
      Set DBServer = Nothing
   End If
   
   
   'traitement pour les vues privées stocké sur le desktop
   If nbCacheDesktop = True Then
      
      Set DBDesktop =  DBOpenDesktop()
      
      If Not DBDesktop Is Nothing Then      
         'traite toutes les vues privées
         If nbDeleteAll = True Then
            vrValue = DB.Views
            If TestVariant(vrValue) = True Then
               Forall ValueD In vrValue
                  Set vwBase = ValueD
                  If Not vwBase Is Nothing Then
                     'passe en revue toutes les vue de la base pour trouver les privés
                     'puis va dans le desktop les supprimer
                     Set vwDelete = DBDesktop.GetView(vwBase.Name)
                     If vwDelete Is Nothing Then
                        'recherche la vue dans le desktop par son name et ses alias
                        If Isempty(vwBase.Aliases) = False Then
                           Forall ValueA In vwBase.Aliases
                              If Trim(Cstr(ValueA))<>"" Then
                                 Set vwDelete = DBDesktop.GetView(Cstr(ValueA))
                                 If Not vwDelete Is Nothing Then
                                    Exit Forall
                                 End If
                              End If                              
                           End Forall
                        End If                        
                     End If
                     Set vwBase = Nothing
                     If Not vwDelete Is Nothing Then
                        If(Ubound(vwDelete.aliases)>0) Then
                           If vwDelete.IsPrivate = True Then
                              Call vwDelete.Remove
                           End If
                        End If
                        Set vwDelete = Nothing
                     End If
                  End If
               End Forall
            End If
            vrValue = Null
         Else         
            'traite la vue privé passé en paramettre
            Set vwDelete = DBDesktop.GetView(wNameView)
            If Not vwDelete Is Nothing Then
               If(Ubound(vwDelete.aliases)>0) Then
                  If vwDelete.IsPrivate = True Then
                     Call vwDelete.Remove
                  End If
               End If   
               Set vwDelete = Nothing
            End If         
            Set DBDesktop = Nothing
         End If
      End If
   End If
   Exit Sub
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Exit Sub
End Sub

MessagePublié: 15 Fév 2010 à 13:39
par Gillou13
Nikel merci beaucoup.

MessagePublié: 15 Fév 2010 à 13:45
par Gillou13
heu... (tous honteux)

tu le trouve ou le posteopen de la base?

pour les vues et masques c'est bon mais celui de la base...

MessagePublié: 15 Fév 2010 à 13:46
par Michael DELIQUE
alors

dans le designer

+ Other
+ Database Ressources
+ Database Script

MessagePublié: 15 Fév 2010 à 14:49
par Gillou13
oki.

Par contre je ne trouve pas équivalant à l'instruction :
Set DBDesktop = DBOpenDesktop()
(au début du traitement des vues privées desktop)

si j'ai bien compris c'est pour ouvrir la "base" en case sur le client?

MessagePublié: 15 Fév 2010 à 15:03
par Michael DELIQUE
re,

oups, oui, c'est pour acceder au cache du client

Code : Tout sélectionner
Public Function DBOpenCache() As NotesDatabase
'connection au cache du poste client   
   
   On Error Goto ErreurHandle
   
   If Session Is Nothing Then
      Set Session = New NotesSession
   End If
   
   Set DBOpenCache = Nothing
   
   If Session.IsOnServer = True Then
      Exit Function
   End If
   
   Select Case Session.NotesBuildVersion
   Case 0 To 166 'version 5 et inférieyur
      Set DBOpenCache=  DBOpen("","","cache.dsk","")
   Case Else 'Verson 6, 7 & 8
      Set DBOpenCache = DBOpen("","","cache.ndk","")
   End Select
   
   Exit Function
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Set DBOpenCache = Nothing   
   Exit Function   
End Function


pour la fonction dbopen tu la trouvera là => http://forum.dominoarea.org/connexion-a ... 10712.html