Page 1 sur 1
Editions multiples

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

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

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

Publié:
04 Mai 2011 à 11:50
par Michael DELIQUE
re,
regarde à
NotesDocumentCollection.Stampall sinon il faut boucler sur chacque document

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

Publié:
05 Mai 2011 à 20:31
par Michael DELIQUE
re,
pas mal le code, pour le ton probleme de champ multiple; regarde a notesuiworkspace.dialogbox

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

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

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

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

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

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

Publié:
06 Mai 2011 à 15:04
par Michael DELIQUE
salut
tous les éléments de la collection (ya pas la possibilité directement pour les vues)