Page 1 sur 1
Total d'une vue

Publié:
05 Mai 2011 à 15:31
par bigBenTem
Bonjour à tous,
Je chercher comment récupérer le total d'une colonne dans une vue.
Le but est de faire du monitoring de mail.
Je voudrais connaitre la taille des données contenu dans les boite mail user sur les documents de plus de Xans.
Je suis donc parti sur la création d'une vue dans les bal user qui est détruite en fin de traitement. je voulais mettre une colonne attachement et mettre le total.
Mais comment capter en Java (noter qu'en LS je ne sais pas non plus) le total de la colonne... j'ai trouvé le getColumn dans View mais il ne renvoi pas la valeur comme peut le faire un dbColumn.
sinon j'ai bien l'idée d'un Evaluate avec un @Sum(@dbColum()) mais en Java je ne sais pas comment le traiter...

Publié:
05 Mai 2011 à 15:34
par Michael DELIQUE
salut
tu as regardé les notesviewentry ?

Publié:
05 Mai 2011 à 15:42
par bigBenTem
Les ViewEntry permettent de savoir si la colonne est une colonne avec Total mais pas de capter!!!

Publié:
05 Mai 2011 à 15:48
par Michael DELIQUE
te reste plus qu'a faire le total en code

Publié:
05 Mai 2011 à 16:03
par bigBenTem
oui mais je voulais justement éviter de parcourir tout les documents de la vue si possible histoire d'alléger le traitement.

Publié:
05 Mai 2011 à 16:06
par Michael DELIQUE
si tu passe par les notesviewentry plustot que par les document eux-même le traitement sera plus rapide

Publié:
05 Mai 2011 à 22:54
par roubech
j'ai déjà utilisé les NotesViewEntry pour récupérer les totaux / sous totaux sans pb
de mémoire avec
NotesViewNavigator.GetFirst pour récupérer la première catégory et ensuite GetNextSibling ou GetNextCategory
NotesViewNavigator.GetLast pour récupérer directement la dernière Entry donc à priori le total
NotesViewEntry.isCategory pour vérifier que tu es sur une catégorie pour un sous total ou NotesViewEntry.isTotal sur le total à la fin
NotesViewEntry.ColumnValues(n) pou récupérer le total dans la colunne n

Publié:
09 Mai 2011 à 09:31
par bigBenTem
Merci je vais tester ça...
Pour le moment je me bat avec le createView qui me pose souci !!
une erruer de compilation sur :
View viewStat = dbmail.createView("(dbMailStat)", "SELECT @IsNotMember(\"A\"; ExcludeFromView) & IsMailStationery != 1 & Form != \"Group\" & Form != \"Person\" & @Created < [" + dt.toString() +"]" , "($All)");
cannot resolve symbol :/ pas cool!!!

Publié:
09 Mai 2011 à 11:38
par roubech
CreateView ???
t'as vue n'existe pas déjà dans ta base ?
mieux vaut créer la vue une fois pour toute et à chaque fois que ton code tourne pour récupérer les infos faire un GetView

Publié:
09 Mai 2011 à 13:37
par bigBenTem
Non je n'ai pas le droit de toucher ua model de messagerie donc je la crée à la fait disparaitre. comme la vue est sur date elle prendrais du temps à l'indexer la je la crée l'index une seul fois traite à la fait disparaitre

Publié:
09 Mai 2011 à 13:40
par Michael DELIQUE
salut
un exemple
- Code : Tout sélectionner
Function ViewTempCreate(wDB As NotesDatabase,Byval wSelect As String, Byval wColonne As String) As NotesView
rem creation d'une vue temporaire de recherche
rem wSelect = select complet de la vue
rem wColonne = Formule de la colonne
Dim DBCible As NotesDatabase
Dim vcColonne As notesViewColumn
Dim NameView As String
On Error Goto CatchError
If Trim(wSelect) = "" Then
Set ViewTempCreate = Nothing
Exit Function
End If
If Trim(wColonne) = "" Then
Set ViewTempCreate = Nothing
Exit Function
End If
If wDB Is Nothing Then
If session Is Nothing Then
Set session = New notesSession
End If
Set DBCible = Session.CurrentDatabase
Else
Set DBCible = wDB
End If
NameView = "vwTEMP"+Format(Now,"YYYYMMDDHHNNSS")
Set ViewTempCreate = DBCible.CreateView("("+NameView+")",wSelect)
Call ViewTempCreate.SetAliases(NameView)
Call ViewTempCreate.RemoveColumn(1)
Set vcColonne = ViewTempCreate.CreateColumn(1,wColonne,wColonne)
vcColonne.IsSortDescending = False
Set vcColonne = Nothing
Set ViewTempCreate = Nothing
Set ViewTempCreate = DBCible.GetView(NameView )
Call ViewTempCreate.Refresh
NameView = ""
Exit Function
CatchError:
If Not ViewTempCreate Is Nothing Then
Call ViewTempCreate.Remove
End If
Msgbox "("+Structure_Log+" : "+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 ViewTempCreate = Nothing
Exit Function
End Function

Publié:
09 Mai 2011 à 13:49
par roubech
la vue étant construite au début du traitement, selon la taille de la base, la création de l'index de cette vue peut prendre du temps. Il faudrait le comparer au temps de calcul si tu parcours les docs pour récupérer la taille et faire le total dans ton code et être sur de quelle solution et la plus couteuse
ce qui me fait penser au timeout des agents. Si tu parcours toutes les bal de ton domaine avec un agent planifié, il faut estimer combien de temps ça va prendre et s'assurer du timeout sur la période d’exécution. Par défaut en journée c'est 10 min. Mais le week-end, on laisse plus de marge en général pour justement les gros traitement qu'on lance que le week-end ....

Publié:
11 Mai 2011 à 13:48
par bigBenTem
Je suis en train de voire comment réutiliser ton code merci encore d'ailleurs. mais à la création de la vue j'ai un problème pour créer ma nouvelle colonne, je n'ai pas moyen d'en faire une colonne de total. connaitrais-tu la méthode qui défini le fait que la colonne soit un total.??