2015-04-20 3 views
0

Le formulaire contient "searchInputField" et un bouton simple pour cela. Sous le bouton, il y a une vue.Comment spécifier un agent/une formule pour récupérer des documents par critères

Comment puis-je spécifier la formule SELECT dans VIEW selon searchInputCriteria? Je veux actualiser la vue lorsque le bouton est cliqué après avoir défini "searchInputField". Cela devrait être comme une simple recherche personnalisée.

On cliquez sur le bouton je l'ai fait:

@SetEnvironment("criteria", "searchInputField"); 
@Command([RunAgent];"searchAgent"); 
@Command([ViewRefreshFields]); 

Mon agent fait:

SELECT @Like(propertyA, @Environment("criteria")); 

Mais il ne fait rien. Je suis nouveau à Lotus Notes. S'il vous plaît, donnez-moi quelques lignes directrices

Merci à l'avance

+0

Est-ce que c'est un devoir ou quoi? Il ressemble tellement à http: //stackoverflow.com/q/29747945/2065611 ... –

+1

Je ne peux pas penser à une bonne solution avec juste la formule. Vous l'obtiendriez pour courir sur une base de données locale/vue mais ce n'est rien que vous offririez pour la production. Utilisez un dossier spécifique à l'utilisateur et LotusScript avec notesDatabase.Search() et notesDocumentCollection.PutAllInFolder() à la place. –

+1

Les vues ont une formule de sélection fixe. Vous avez besoin de l'autorisation Designer pour le modifier. Les vues standard sont des ressources partagées sur le serveur et ne sont pas destinées à être modifiées dynamiquement par utilisateur. Mais, comme dans la suggestion de @ KnutHerrmann, vous pouvez utiliser le code LotusScript de Java pour créer ou modifier une vue privée, qui est toujours spécifique à l'utilisateur. –

Répondre

1

Vous pouvez utiliser script à l'intérieur yor bouton:

Dim db As NotesDatabase 
Dim session As New NotesSession 
Dim uiw As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 
Dim formula As String 
Dim doc As NotesDocument 
Dim view As NotesView  
Set db=session.CurrentDatabase 
Set uidoc=uiw.CurrentDocument 
Set doc=uidoc.Document 
Set view=db.GetView("MyEmbeddView")  
formula$={SELECT @Like(criteria; "} & doc.searchInputField(0) & {")} 
view.SelectionFormula=formula 

mais il ne fonctionnera pas de manière dynamique en temps réel,. La seule façon de voir les changements de manière fiable est de fermer et rouvrir la base de données. C'est aussi une façon de travailler très «chère» en termes de performance. Je vous conseille de ne pas utiliser cette façon de travailler pour changer les sélections de vue «à la volée». Il peut être utile de modifier les vues, qui restent statiques pendant un certain temps, après le changement. Par exemple: vous pouvez écrire un agent qui change les formules de sélection une fois par mois ou pendant la nuit.

Dans votre cas, je vous conseille d'utiliser des vues uniques ou de remplir un dossier à la volée. Les vues de catégorie unique fonctionneront beaucoup plus rapidement que le calcul en temps réel de documentcollections pour remplir un dossier.