Page 1 sur 1

Editions multiples

MessagePublié: 04 Mai 2011 à 09:07
par Mar.mack
Bonjour,

Nous avons pour des besoins d'archivage une base dans laquelle nous réalisons un import de documents word...
Nous importons le texte, mais aussi l'auteur, la date, le sujet, ...

Mais au gré des imports et de la provenance des fichiers, le contenu de certains champs n'est pas pas toujours correcte... à cause d'un espace, d'un accent, ...

J'aurais souhaiter ajouter une fonction permettant de corriger un champs donné sur une sélection de documents en une seule fois.
Mais ayant peu de connaissance en développement Notes, je ne sais pas comment faire.

Par avance merci

MessagePublié: 04 Mai 2011 à 09:40
par Michael DELIQUE
salut

tu comptes faire ça comment ? LS @formules ?

un tuto => http://forum.dominoarea.org/initiation- ... 12997.html

MessagePublié: 04 Mai 2011 à 10:18
par Mar.mack
A dire vrai, peu m'importe le langage.
Je viens de télécharger le tuto, je vais tâcher de le lire, mais à priori, je ne vois rien dans le sommaire qui explique comment manipuler plusieurs documents à la fois.

MessagePublié: 04 Mai 2011 à 11:50
par Michael DELIQUE
re,

regarde à

NotesDocumentCollection.Stampall sinon il faut boucler sur chacque document

MessagePublié: 05 Mai 2011 à 17:39
par Mar.mack
Je me suis inspiré d'un bout de code trouvé sur les forums IBM, voilà le résultat en LS:

Code : Tout sélectionner
Sub Initialize

   'Variables
   Dim session1 As New NotesSession
   Dim workspace1 As New NotesUIWorkspace
   Dim db1 As NotesDatabase
   Dim collection1 As NotesDocumentCollection
   Dim doc1 As NotesDocument
   Dim newAuteur As String, newCategorie As String, newRubrique As String, newSujet As String, newDateRedac As String
   Dim title1 As String
   
   'Definition des variables
   Set db1 = session1.CurrentDatabase
   Set collection1 = db1.UnprocessedDocuments
   Set doc1 = collection1.GetFirstDocument
   title1 = "Editions multiples"
   
   'Définition des nouvelles valeurs (saisie d'une valeur à la fois)
   newAuteur = workspace1.Prompt(3, title1, "Modifier le rédacteur ?")
   newCategorie = workspace1.Prompt(3, title1, "Modifier le numéro de magazine ?")
   newRubrique = workspace1.Prompt(3, title1, "Modifier la rubrique ?")
   newSujet = workspace1.Prompt(3, title1, "Modifier le sujet ?")
   newDateRedac = workspace1.Prompt(3, title1, "Modifier la date (format: jj/mm/aaaa) ?")

   'Modification des documents sélectionnés
   Do While Not (doc1 Is Nothing)
      With doc1
         If newAuteur (remplacer par le sigle différent) "" Then .Auteur = newAuteur
         If newCategorie (remplacer par le sigle différent) "" Then .Categorie = newCategorie
         If newRubrique (remplacer par le sigle différent) "" Then .Rubrique = newRubrique
         If newSujet (remplacer par le sigle différent) "" Then .Sujet = newSujet
         If newDateRedac (remplacer par le sigle différent) "" Then .DateRedac = newDateRedac
      End With
      Call doc1.Save(True, True)
      Set doc1 = collection1.GetNextDocument(doc1)
   Loop

   'Actualisation de la vue
   Call workspace1.Viewrefresh()

End sub

Les champs de mon masque étant Auteur, Sujet, Rubrique, DateRedac et Categorie.
Mais j'ai pas encore trouvé comment créer une fenêtre avec plusieurs champs...

MessagePublié: 05 Mai 2011 à 20:31
par Michael DELIQUE
re,

pas mal le code, pour le ton probleme de champ multiple; regarde a notesuiworkspace.dialogbox

MessagePublié: 06 Mai 2011 à 10:43
par Mar.mack
Bon, j'ai revue un peu mon code pour que ce soit plus propre et pour que la vue soit rafraichie... (voir message avec le code plus haut)

J'ai essayer d'utiliser dialogbox, mais sans succès...
Il semble nécessaire de lui donner un document...

MessagePublié: 06 Mai 2011 à 11:08
par Michael DELIQUE
re,

en effat mais tu créé un NotesDocument temporaire que tu n'enregistre pas et ensuite tu n'as plus qu'a passer les champs

MessagePublié: 06 Mai 2011 à 13:06
par Mar.mack
Là encore j'ai essayé de trouver un exemple de code...
Ce qui m'a conduit à écrire un truc du genre :
Code : Tout sélectionner
   Dim tempDoc1 As NotesDocument
   Set tempDoc1 = db1.Createdocument()
   tempDoc1.Form = "multiedit"
   If Not workspace.DialogBox ( "multiedit", True, True, False, False, False, False,title1, tempDoc1, False, False, False ) Then
      Exit Sub
   End If


J'ai bien sur créer un masque appelé "multiedit" avec les champs adéquate... mais ça ne fonctionne pas à cause de createdocument & de form ...
Peut-être parce que c'est pour du notes 7 et que j'ai la version 8.5 ...
Mais dans ce cas, faut que je trouve comment le faire fonctionner avec les 2 versions, car j'ai encore beaucoup de postes en v7.

MessagePublié: 06 Mai 2011 à 13:15
par Mar.mack
Arf... ça y est j'ai réussi.
C'était une variable mal nommée...

MessagePublié: 06 Mai 2011 à 14:09
par Smicky
StampAll sera la méthode bien plus rapide...

MessagePublié: 06 Mai 2011 à 14:12
par Mar.mack
Voilà le code avec le formulaire qui remplace la section ou les valeurs sont demandées une à une.
Code : Tout sélectionner
   'Définition des nouvelles valeurs (saisie de toutes les valeurs depuis un formulaire)
   Dim tempDoc1 As NotesDocument
   Set tempDoc1 = db1.Createdocument()
   Call tempDoc1.Replaceitemvalue("Form","Multiedit")
   If Not workspace1.DialogBox ( "Multiedit", True, True, False, False, False, False, title1, tempDoc1, True, False, False ) Then Exit Sub
   newAuteur = tempDoc1.getitemvalue("Auteur")(0)
   newCategorie = tempDoc1.getitemvalue("Categorie")(0)
   newRubrique = tempDoc1.getitemvalue("Rubrique")(0)
   newSujet = tempDoc1.getitemvalue("Sujet")(0)
   newDateRedac = tempDoc1.getitemvalue("DateRedac")(0)



Smicky, StampAll semble plus efficace en effet, mais il semble aussi s'appliquer à tous les éléments d'une vue si j'en crois la doc. Ce qui n'est pas ce que je veux.


Merci de votre aide.

MessagePublié: 06 Mai 2011 à 15:04
par Michael DELIQUE
salut

tous les éléments de la collection (ya pas la possibilité directement pour les vues)