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

Publié:
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.

Publié:
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

Publié:
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?

Publié:
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

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

Publié:
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...

Publié:
15 Fév 2010 à 13:46
par Michael DELIQUE
alors
dans le designer
+ Other
+ Database Ressources
+ Database Script

Publié:
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?

Publié:
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