Exemple général
* Edition, via un document Word, de la liste du personnel par société
* Document modèle : Persosoc-mod.doc de exploit\client\obj
* 2 signets : codsoc, nomsoc
***
* Récupération des sociétés dans la liste mémoire LST_SOC
CHARGER_SQL_LST LST_SOC SOCIETE *tri(SO_COD_SOCIETE)
*
**** connexion à Word ****
* Le paramètre WordLance prend la valeur *VRAI si Microsoft Word
* est déjà lancé ; *FAUX sinon. Ce paramètre est utile pour
* fermer ou non l'application Microsoft Word lors de la
* fermeture de l'application Visual Adélia.
APPELER_METHODE CLI_WORD APP_CONNECTER WordLance CodeRetour
*** boucle de lecture liste des sociétés
LECTURE_LST LST_SOC
***
* Pour chaque société, récupération de ses employés dans la
* liste mémoire LST_PERSO
VIDER_LST LST_PERSO
CHARGER_SQL_LST LST_PERSO PERSONNEL *COND(PE_COD_SOCIETE = :SO_COD_SOCIETE) -
*tri(PE_COD_SOCIETE)
**** récupération du modèle persosoc-mod.doc ****
NomFichier = 'D:\ exploit \client\obj\persosoc-mod.doc'
APPELER_METHODE CLI_WORD DOC_OUVRIR NomFichier CodeRetour
**** création d'un document Word différent pour chaque société ****
ww_persodoc = 'perso' // SO_COD_SOCIETE // '.doc'
NomFichier = 'D:\ exploit \client\obj\' // ww_persodoc
APPELER_METHODE CLI_WORD DOC_ENREGISTRER_SOUS NomFichier CodeRetour
*** données d'en-tête ***
Numsection = 1
typeArt = _wrd_article_texte_principal
APPELER_METHODE CLI_WORD PLG_FIXER_ARTICLE typeArt NumSection CodeRetour
* positionnement sur le signet 'codsoc'
NumElt = 1
NomElt = 'codsoc'
Texte = SO_COD_SOCIETE
Type = _wrd_vers_signet
TypeDep = _wrd_deplacement_absolu
APPELER_METHODE CLI_WORD PLG_ALLER_A type TypeDep NumElt NomElt CodeRetour
APPELER_METHODE CLI_WORD PLG_FIXER_TEXTE texte CodeRetour
* positionnement sur le signet 'nomsoc'
NumElt = 2
NomElt = 'nomsoc'
Texte = SO_NOM_SOCIETE
Type = _wrd_vers_signet
TypeDep = _wrd_deplacement_absolu
APPELER_METHODE CLI_WORD PLG_ALLER_A type TypeDep NumElt NomElt CodeRetour
APPELER_METHODE CLI_WORD PLG_FIXER_TEXTE texte CodeRetour
*** données du tableau ***
* il faut refixer la section avant la création de la ligne
Numsection = 1
typeArt = _wrd_article_texte_principal
APPELER_METHODE CLI_WORD PLG_FIXER_ARTICLE typeArt NumSection CodeRetour
* Début du chargement tableau depuis la ligne 2 sous en-tête
ww_i = 2
**** boucle sur liste employés ****
LIRE_P_ELT LST_PERSO
TANT_QUE &CODE_LST(LST_PERSO) = *NORMAL
*** données du tableau : alimentation des lignes/colonnes ***
* lignes sous en-tête. N°ligne = ww_i
Position = ww_i
APPELER_METHODE CLI_WORD LGN_CREER Position CodeRetour
* colonne 1 : nom personne
Numligne = ww_i
Numcolonne = 1
FormatNum = *blank
texte = PE_NOM_PERSONNE
APPELER_METHODE CLI_WORD CEL_FIXER_VALEUR Numligne Numcolonne texte -
FormatNum CodeRetour
* colonne 2 : prénom
Numcolonne = 2
FormatNum = *blank
texte = PE_PRN_PERSONNE
APPELER_METHODE CLI_WORD CEL_FIXER_VALEUR Numligne Numcolonne texte -
FormatNum CodeRetour
* colonne 3 : ville
Numcolonne = 3
FormatNum = *blank
texte = PE_LIB_VIL_PERS
APPELER_METHODE CLI_WORD CEL_FIXER_VALEUR Numligne Numcolonne texte -
FormatNum CodeRetour
ww_i = ww_i + 1
LIRE_AV_ELT LST_PERSO
*** fin boucle employés ***
REFAIRE
*** impression du document ***
DeLaPage = 1
ALaPage = _WRD_TOUTES_LES_PAGES
NbCopies = 1
APPELER_METHODE CLI_WORD DOC_IMPRIMER DeLaPage AlaPage NbCopies -
CodeRetour
*** fermeture du document Word actif ***
ValModif = *vrai
APPELER_METHODE CLI_WORD DOC_FERMER ValModif CodeRetour
*** fin boucle société ***
FIN_LECTURE_LST