Distribué par le projet Fr.OpenOffice.org

Créer automatiquement la source de
données lors de l'ouverture d'une
lettre type d'un mailing.

Révision 1.10 - 27/12/2003

Table des matières

1 But de ce how-to	3

2 Principe du fonctionnement de la macro.	3

3 Intégration de la macro dans la lettre type.	4

4 Paramétrage de la Macro	5

5 Lancement automatique de la Macro	6

6 Test de la lettre type.	7

7 Créer un nouveau Mailing	7

8 Crédits	8

9 Licence	8

But de ce how-to

Ce how-to est destiné à montrer comment il est possible d'ajouter une fonctionnalité dans OOo, avec une macro, dans le but de créer automatiquement la source de données d'un mailing.

En effet, avec OOo, étant donné que le paramétrage de la source de données est intégré à OOo et non pas à la lettre type du mailing, cela entraîne les inconvénients suivants :

Si le mailing est utilisé sur un autre PC, il faudra recréer la source de données pour le faire fonctionner.

Si la lettre type et la base de données sont déplacées dans un autre répertoire, il sera également nécessaire de recréer la source de données.

Cependant, je tiens quand même à préciser, que le fait que la source de données soit intégrée à OOo, et non pas à la lettre type, donne les avantages suivants :

Même en déplaçant la lettre type, le mailing continuera à fonctionner.

Il est possible de créer plusieurs mailings à partir de la même base de données en ne créant qu'une source de données. Cette fonctionnalité est intéressante dans le cas de l'utilisation d'une vraie base de données (ex : dBase, MySQL...) et non pas d'un fichier Calc.

Donc, il y a des avantages et des inconvénients dans les deux méthodes, et le but de ce how-to est d'essayer de limiter les inconvénients de OOo.

Ce how-to décrit précisément la mise en place de la macro et les instructions pour qu'elle se lance automatiquement. Ce how-to est donc destiné à des personnes n'ayant aucune connaissance en programmation.

Principe du fonctionnement de la macro.

La macro va créer la source de données automatiquement lors de l'ouverture de la lettre type.

Il est possible de modifier des paramètres dans la macro, pour utiliser une base de données au format Calc, dBase ou MySQL. Il est également possible d'indiquer un nom pour la source de données et un chemin complet pour la base de données.

Intégration de la macro dans la lettre type.

Pour coller le code des 2 macros ci-dessous dans l'éditeur de macros, effectuer les opérations ci-dessous :

Menu « Outil / Macros / Macro... »

Sélectionner 'Sans nom1' ( ou le nom de votre fichier dans la liste en tenant compte de l'avertissement décrit au $5 ) et cliquer sur « Nouveau »

Valider le nom du module « Module1 » proposé par défaut.

Effacer toutes les lignes écrites par défaut dans l'éditeur Basic (sub main, macro1..)

Coller le code suivant dans l'éditeur Basic.

Pour le paramétrage de la macro, passer au chapitre suivant

' ****************************************************

' ** Macro créée par Tony GALMICHE le 29/09/03 **

' ** modifiée par Tony GALMICHE le 26/12/03 **

' ****************************************************

const TypeSource="Calc" 'Mettre Calc, dBase ou MySQL (attention à la casse)

const NomSource="" 'Si vide -> Nom de la Lettre Type

const NomBase="" 'Nom et Chemin complet de la base (attention à la casse sur Linux)

'Si vide -> Chemin et Nom de la Lettre Type

sub Creation_Source_De_Donnees()

oURL=ThisComponent.URL

oTabURL=split(oURL,"/")

oNomFichier=oTabURL(uBound(oTabURL))

if NomSource="" then

oNomSource=mid(oNomFichier, 1, len(oNomFichier)-4)

else

oNomSource=NomSource

end if

if NomBase="" then

oNomBase=mid(oURL, 1, len(oURL)-4)

select case TypeSource

case "dBase": oNomBase=oNomBase & ".dbf"

case "Calc": oNomBase=oNomBase & ".sxc"

end select

else

oNomBase=NomBase

end if

oDBContext=createUnoService("com.sun.star.sdb.DatabaseContext")

Reponse=oDBContext.hasByName(oNomSource)

If Reponse then

msgbox "La source de données " & oNomSource & " existe déjà, création impossible !"

exit sub

end if

newInstance = oDBContext.createInstance

oDBContext.registerObject(oNomSource, newInstance )

select case TypeSource

case "dBase": newInstance.URL = "sdbc:dbase:" & oNomBase

case "Calc": newInstance.URL = "sdbc:calc:" & oNomBase

case "MySQL": newInstance.URL = "sdbc:mysql:odbc:" & oNomBase

end select

msgbox "Source de Données " & oNomSource & " (" & TypeSource & ") créée."

end sub

sub Delete_Source_De_Donnees()

oTabURL=split(ThisComponent.URL,"/")

oNomFichier=oTabURL(uBound(oTabURL))

oNomFichier=mid(oNomFichier, 1, len(oNomFichier)-4)

if NomSource="" then oNomSource=oNomFichier else oNomSource=NomSource

oDBContext=createUnoService("com.sun.star.sdb.DatabaseContext")

Reponse=oDBContext.hasByName(oNomSource)

If not Reponse then

msgbox "La source de données " & oNomSource & " n'existe pas, suppression impossible !"

exit sub

end if

oDBContext.revokeObject(oNomSource)

msgbox "Source de Données " & oNomSource & " supprimée"

end sub

Paramétrage de la Macro

La Macro, comporte 3 paramètres dont seulement le premier est obligatoire :

TypeSource = Type de la base de données (Calc, dBase, MySQL) ( attention à la casse ! )

Mettre « Calc » pour utiliser un classeur (Calc) comme base de données.

Mettre « dBase » pour utiliser une base de données de type dBase.

Mettre « MySQL » pour utiliser une base de données de type MySQL.

NomSource = Nom de la source de données.

Par défaut, le nom de la source de données est celui de la lettre type (sauf l'extension). Dans ce cas, il est préférable d'éviter les caractères spéciaux, les caractères accentués et les espaces dans le nom de la lettre type.

Si vous souhaitez avoir un nom différent, il suffit de l'indiquer dans cette Constante (ex : NomSource=''CeQueBonMeSemble'').

Ce paramètre influe seulement dans l'affichage des sources de données (F4).

NomBase = Nom et Chemin complet de la base de données. ( attention à la casse sur Linux ! )

Par défaut, le nom et le chemin de la base de données est celui de la lettre type (sauf l'extension). Dans ce cas, il est préférable d'éviter les caractères spéciaux, les caractères accentués et les espaces dans le nom de la lettre type.

Si vous souhaitez utiliser une base de données située dans un autre répertoire ou portant un autre nom, il suffit d'indiquer le nom et le chemin complet de la base dans la constante « NomBase » (Dans ce cas, le plus simple est de créer manuellement la source de données, pour pouvoir copier le chemin complet de la base)

Dans le cas d'une source de données de type MySQL, il faut indiquer dans cette constante le nom de la source de données ODBC. Dans ce cas, il ne faut pas indiquer de chemin.

Une fois le paramétrage terminé, vous pouvez fermer l'éditeur Basic.

Lancement automatique de la Macro

Ces macros ont la fonction suivante :

Creation_Source_De_Donnees() -> Cette macro permet de créer la source de données à l'ouverture de la lettre type.

Delete_Source_De_Donnees() -> Cette macro permet de supprimer la source de données à la fermeture de la lettre type.

Pour le moment, ces deux macros ne se lanceront pas automatiquement à l'ouverture et à la fermeture de la lettre type. Il est donc nécessaire de configurer OOo, pour qu'elles le fassent.

ATTENTION : A cause d'un bug dans OOo1.1.0 (correction prévue dans OOo1.1.1), la procédure d'assignation (ou de modification d'assignation) de macros à des événements, décrite ci-dessous, ne fonctionne que sur une lettre type qui n'a jamais été enregistrée. Dans le cas où celle-ci serait déjà enregistrée, il faut déjà effectuer les opérations suivantes :

Fermer votre lettre-type

A l'aide de l'explorateur de Windows (ou de Konqueror pour les Linuxiens), enlever l'extension de votre fichier (enlever le .sxw)

Depuis OOo, ouvrir ce fichier sans l'extension avec « Fichier / Ouvrir... »

Effectuer la procédure ci-dessous normalement

Enregistrez votre fichier en remettant l'extension avec le menu « Fichier / Enregistrez-sous ».

Effectuer les opérations suivantes, pour que les macros se lancent automatiquement à l'ouverture et à la fermeture de la lettre type :

Menu « Outils / Adaptation... », onglet 'Evènements'

Dans la zone « Macros » en bas à gauche, cliquer sur le '+' de la lettre type (ex : Sans nom1)

Cliquer sur le '+' de « Standard »

Cliquer sur « Module1 » pour faire apparaître dans la zone de droite les 2 macros

Cliquer sur la macro « Creation_Source_De_Donnees »

Dans la zone en haut, cliquer sur « Ouvrir un document »

Cliquer sur le bouton « Assigner », pour indiquer à OOo d'exécuter la macro dès l'ouverture du document.

Dans la zone en bas, cliquer sur la macro « Delete_Source_De_Donnees »

Dans la zone en haut, cliquer sur « Fermer le document »

Cliquer sur le bouton « Assigner », pour indiquer à OOo, d'exécuter la macro dès la fermeture du document.

cliquer sur 'Ok' pour fermer la fenêtre 'Adaptation'.

Test de la lettre type.

Enregistrer et fermer la lettre type.

Créer une base de données au format dBase ou au format Calc suivant le paramétrage de la constante « TypeSource » de la macro.

Enregistrer et fermer cette base de données dans le même dossier que la lettre type et avec le même nom, hormis l'extension qui doit être .sxc ou .dbf (si les noms sont différents, veiller à paramétrer la macro - $4)

Ouvrir la lettre type et normalement, un message doit apparaître pour vous indiquer que la source de données est créée.

Vous pouvez vérifier que la source de données a bien été créée, et que la table est bien accessible, en affichant les sources de données (Affichage / Sources de données ou F4).

Il ne reste plus qu'à finir de créer la lettre type en faisant glisser le nom des titres des colonnes de la source de données vers la lettre type (ou Insertion/Champs/Autre [ctrl+F2]).

En fermant la lettre type, vous aurez un nouveau message, vous indiquant que la source de données a été supprimée.

Créer un nouveau Mailing

Fermer la base de données et la lettre type contenant la macro.

Depuis l'explorateur de Windows (ou Konqueror pour les Linuxiens), il suffit de faire une copie de la lettre type et éventuellement de la base de données.

Lors de l'ouverture de cette nouvelle lettre type, la source de données sera créée.

Suivant votre besoin, il sera peut-être nécessaire de modifier les constantes de la Macro comme indiqué au $4.

Crédits

Auteur: Tony GALMICHE

Remerciement :

Laurent GODARD, pour la mise au point de la macro.

Christophe FICHOT, pour sa relecture et ses tests.

Intégré par : Sophie Gautier

Dernière modification: 27/12/03

Contacts: Projet Documentation OpenOffice.org http://fr.openoffice.org

Traduction:

Licence

Appendix

Public Documentation License Notice

The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the "License"); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.

The Original Documentation is “mailing_creation_automatique_de_source_de_données” The Initial Writer of the Original Documentation is Tony Galmiche Copyright (C) 2003. All Rights Reserved. (Initial Writer contact(s): tony.galmiche@tiscali.fr.

Contributor(s): ______________________________________.

Portions created by ______ are Copyright (C)_________[Insert year(s)]. All Rights Reserved. (Contributor contact(s):________________[Insert hyperlink/alias]).

NOTE: The text of this Appendix may differ slightly from the text of the notices in the files of the Original Documentation. You should use the text of this Appendix rather than the text found in the Original Documentation for Your Modifications.

OpenOffice.org Documentation Project How-To

http://fr.openoffice.org/	8

Tony GALMICHE

2003-12-21T10:05:54

Sophie Gautier

Christophe FICHOT