Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fusion automatique dans word depuis une page ASP

1 réponse
Avatar
Bill2
Bonjour à toutes et à tous,

Je crosspost mon message dans différents groupes, car je ne sais pas
vraiment ou le mettre.

Voilà la situation.

Dnas le cadre du développement d'une application web en intranet, mes
utilisateurs devront pouvoir gérer automatiquement des fusions de données,
depuis les champs d'une base, vers des documents word.
Le but étant, bien entendu, que les utilisateurs n'aient jamais un accès
direct à la base, et que tout se fasse via l'interface Web.

Pour le moment, je teste le processus de fusion. J'ai donc un serveur IIS
installé en local.
(WinXP Pro SP2)
J'ai donc créer une base avec une table simple, un document word avec un
champ de fusion, et codé une page ASP qui réalise l'opération.
Bien entendu, j'ai configuré tout le système pour que word puisse s'executer
depuis les pages ASP.

J'utilise donc la méthode OpenDataSource trouvée dans la doc VBA pour word
fournie avec Office 2003 (VBAWD10.CHM)

J'ai configuré le tout pour que Word s'ouvre à l'écran, pour suivre ce qu'il
se passe.
Le document word de base d'ouvre, la fusion se fait, le doc fusion est
enregistré, et word refermé.
Sans préciser de requete, toute ma table est fusionnée.

Seulement voilà, j'ai un problème. Dès que j'indique une requete, Word,
ouvert par le page ASP, me demande de choisir qu'elle table je souhaite
utiliser pour ma fusion.
Je dois alors cliquer sur la table, et lorsque je valide, je me retrouve
avec un document word contenant toutes les données de ma table, sans pouvoir
les restreindre à l'aide de la requete que j'avais indiquée.
Je n'arrive pas à comprendre d'où vient le problème.

Donc,
1) ma requete n'est pas prise en compte
2) l'utilisateur est forcé d'agir sur word, ce qui sera très problématique,
vu qu'à terme, c'est le serveur qui fera tourner le code, et que
l'utilisateur n'y aura donc pas accès !

Voici une partie du code en question

<%

set DocWord=server.CreateObject("Word.Application")
DocWord.Visible = true
set MyDoc=DocWord.Documents.Open("d:\Chemin\MonDoc.doc")

set Merge=MyDoc.MailMerge
Merge.OpenDataSource "d:\chemin\BDD.mdb", , false, true, true, false, "",
"", true, "", "", "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=d:\Chemin\BDD.mdb;Persist Security Info=False;", "select champ_test
from T_Test where Champ_Test like '%machin%'","",true

'...
'ensuite y'a l'enregistrement du doc, mais ça c'est pas le problème.
%>

Si quelqu'un a déjà réalisé des fusions automatisées, merci de me mettre sur
la voie !

Sinon, je vais être obligé de travailler en plusieurs étapes, pas très
optimisées,
- création d'une table temporaire
- alimentation de cette table avec les données d'une requete select
- fusion en utilisant la table temporaire

Ce qui n'est franchement pas génial à mon goût.

Merci d'avance à tout ceux qui pourront m'aider.
--
Bill2
Proverbe à la con : Soit poli si tu n'es pas rugueux

1 réponse

Avatar
Bill2
Re Bonjour à toutes et à tous,

Pour information, j'ai trouvé la soluce à mon pb.
C'était tout simplement un pb de nom de champs mal orthographié dans la
requete

set Merge=MyDoc.MailMerge
Merge.OpenDataSource "d:cheminBDD.mdb", , false, true, true, false,
"", "", true, "", "", "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=d:CheminBDD.mdb;Persist Security Infoúlse;", "select
champ_test from T_Test where Champ_Test like '%machin%'","",true


le nom du champ était "ChampTest" et pas "Champ_Test"

Ce sont tjs les trucs les plus simples qui posent le plus de problème ...

C'était bête comme erreur ... je me sens tout petit là ...
--
Bill2
Philosophie : Les amis vont et viennent. Les ennemis s'accumulent.