Bonjour à tous,
depuis le temps que vous m'aidez, c'est à mon tour d'apporter une pierre à l'édifice, donc voici ce qui pourrais éventuellement être une "astuce", merci au modérateur de faire le nécessaire s'il pense l'astuce valable.
Demande Original :
- Document principale avec environs 80 champs
- Avoir une vue permettant de sélectionner facilement les champs que l’on veut afficher (ou exporter vers Excel).
- Ne pas utiliser l’outil de vue privée existant sur lotus, car il est très puissant mais trop complexe a prendre en main.
Pré requis :
- Une vue avec tous les champs que l’on veut pouvoir ajouter a notre vue paramétrable, elle s’appellera ici : « flQueryViewDef » (il s’agit dans ce cas d’un « folder »). Cette vue est de type partagé, mais elle n’est pas destinée à être utilisée directement, donc elle n’apparait dans aucun menu ou liste de vues.
- Un masque de paramétrage (ici « CustomizeView »), destiné à être utilisé dans un DialogBox, ce masque ce compose de :
• Un texte a valeurs multiple : TmpFieldList, il est calculé et sa valeur par défaut est « TmpFieldList »
• Une liste box, de type éditable : SelectedCol, sa valeur par défaut est vide, la liste de choix est calculée avec la formule suivante : « TmpFieldList »
• La liste box est dans un lay-out, pour la présentation en DialogBox.
- La vue que l’on veut pouvoir paramétrer, dans mon cas il s’agit d’un folder vide, il est de type « partagé, privé a la première utilisation ». Ce folder dispose d’une action :
« Customize this view » : voici le code de cette action :
Ne pas oublier ce petit bout de code dans la vue elle-même, si on veut un réaffichage correct lorsque l’on revient sur la vue :
Cette vue paramétrable fonctionne en client lourd, sous lotus version 7 et 8 (serveur en 7 et client en 7, 8 basic, 8 éclipse).
Cordialement.
depuis le temps que vous m'aidez, c'est à mon tour d'apporter une pierre à l'édifice, donc voici ce qui pourrais éventuellement être une "astuce", merci au modérateur de faire le nécessaire s'il pense l'astuce valable.
Demande Original :
- Document principale avec environs 80 champs
- Avoir une vue permettant de sélectionner facilement les champs que l’on veut afficher (ou exporter vers Excel).
- Ne pas utiliser l’outil de vue privée existant sur lotus, car il est très puissant mais trop complexe a prendre en main.
Pré requis :
- Une vue avec tous les champs que l’on veut pouvoir ajouter a notre vue paramétrable, elle s’appellera ici : « flQueryViewDef » (il s’agit dans ce cas d’un « folder »). Cette vue est de type partagé, mais elle n’est pas destinée à être utilisée directement, donc elle n’apparait dans aucun menu ou liste de vues.
- Un masque de paramétrage (ici « CustomizeView »), destiné à être utilisé dans un DialogBox, ce masque ce compose de :
• Un texte a valeurs multiple : TmpFieldList, il est calculé et sa valeur par défaut est « TmpFieldList »
• Une liste box, de type éditable : SelectedCol, sa valeur par défaut est vide, la liste de choix est calculée avec la formule suivante : « TmpFieldList »
• La liste box est dans un lay-out, pour la présentation en DialogBox.
- La vue que l’on veut pouvoir paramétrer, dans mon cas il s’agit d’un folder vide, il est de type « partagé, privé a la première utilisation ». Ce folder dispose d’une action :
« Customize this view » : voici le code de cette action :
- Code : Tout sélectionner
Sub Click(Source As Button)
Dim Session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim vwDef As NotesView
Dim vwQuery As NotesView
Dim col As NotesViewColumn
Dim docDlg As NotesDocument
Dim i As Integer, DelCount As Integer
Dim FieldList() As Variant
Dim FieldSelect() As Variant
Dim ActualCols() As String
' Init
Set db = Session.CurrentDatabase
Set docDlg = New NotesDocument(db)
Set vwDef = db.GetView("flQueryViewDef")
Set vwQuery = db.GetView("flQueryView")
' Check if all is define ...
If Not vwDef Is Nothing And Not vwQuery Is Nothing Then
' Get default list of column
If vwDef.ColumnCount > 0 Then
i = 0
Redim FieldList(vwDef.ColumnCount-1)
Forall c In vwDef.Columns
FieldList(i) = c.Title
i = i +1
End Forall
Else
' Maybe an error message
Exit Sub
End If
' Get selected list of column
Redim FieldSelect(1)
If vwQuery.ColumnCount > 0 Then
i = 0
Redim FieldSelect(vwDef.ColumnCount-1)
Forall c In vwQuery.Columns
FieldSelect(i) = c.Title
i = i +1
End Forall
End If
docDlg.TmpFieldList = FieldList
docDlg.SelectedCol = FieldSelect
If ws.DialogBox ("CustomizeView", True, True, False, False, False, False, "Customize inquiry view", docDlg) Then
' Delete column not selected in view ...
If vwQuery.ColumnCount > 0 Then
Redim ActualCols(vwQuery.ColumnCount-1)
Forall c In vwQuery.Columns
ActualCols(c.Position-1) = c.Title
End Forall
DelCount = 0
For i = 0 To Ubound(ActualCols)
If Isnull(Arraygetindex(docDlg.SelectedCol,ActualCols(i),0)) Then
Call vwQuery.RemoveColumn(i+1-DelCount)
DelCount = DelCount + 1
End If
Next
End If
' Add selected column
i = 0
Forall c In vwDef.Columns
If docDlg.SelectedCol(i) = c.Title Then
' Add column if needed
If Isnull(Arraygetindex(FieldSelect,c.Title,0)) Then
Set col = vwQuery.CopyColumn(vwDef.Columns(c.Position-1))
End If
i = i +1
If i > Ubound(docDlg.SelectedCol) Then
Exit Forall
End If
End If
End Forall
ws.ViewRebuild
End If
End If
End Sub
Ne pas oublier ce petit bout de code dans la vue elle-même, si on veut un réaffichage correct lorsque l’on revient sur la vue :
- Code : Tout sélectionner
Sub Postopen(Source As Notesuiview)
Dim ws As New NotesUIWorkspace
ws.ViewRebuild
End Sub
Cette vue paramétrable fonctionne en client lourd, sous lotus version 7 et 8 (serveur en 7 et client en 7, 8 basic, 8 éclipse).
Cordialement.