|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
publipostage sous Open Office. |
Débuté par Pierre-Louis, 04 juil. 2014 14:18 - 27 réponses |
| |
| | | |
|
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 04 juillet 2014 - 14:18 |
Bonjour,
Le sujet a déjà été débattu, mais je n'ai pas trouvé de réponses probantes. Alors que je réalise des publipostages vers Word sans problème, je ne sais pas comment réaliser la même chose vers OpenOffice (ou libre Office). Les exemples livrés avec Windev ne me sont pas d'une grande aide non plus. Quelqu'un a-t-il réussi (et comment) a faire du publipostage avec Open Office ?
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 04 juillet 2014 - 15:36 |
Je me réponds à moi même J'ai réussi à faire fonctionner le publipostage de l'exemple fourni avec Windev 'Pilotage de Open Office Writer' qui pilote aussi bien Libre Office Writer. Mon problème, pour l'instant, c'est que, si cela fait bien du publipostage, cela ne fait pas de fusion (comme facilement réalisable avec la classe cWord), donc, au lieu d'avoir un seul document avec autant de pages que de clients (par exemple), j'ai autant de documents réalisés que de clients. Je vois mal l'utilisateur final ouvrir mille fois un document Open office pour imprimer les fiches publipostées de ses mille clients.
Quelqu'un peut-il me rassurer en me disant qu'il a réussi à la fois le publipostage et la fusion via Libre Office (ou open office, il semble que cela soit pareil) ?
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 06 juillet 2014 - 03:08 |
hello, le publipostage dans l'exemple WD Pilotage de OpenOffice Writer n'est pas un véritable publipostage. Il utilise une substitution de balises par les données de la source de données. Pour un véritable publipostage dans OpenOffice il faut utiliser le service MailMerge. Il est assez difficile à mettre en oeuvre par programme par rapport à celui de Word. Je me suis inspiré du code qui se trouve dans cette série de messages : http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/101878-wd12-publipostage-open-office/read.awp pour réaliser un publipostage avec LibreOffice 4.1.6. Je suis parti du fichier Modele.sxw de l'exemple WD Pilotage que j'ai transformé en .odt :
J'ai modifié les champs des données pour qu'ils correspondent à ma source de données :
La base de données de l'exemple je l'ai transformé en fichier csv ( MesClients.csv) :
N° Enr.;IDClients;Civilite;Nom;Prenom;Adresse;Codepostal;Ville;Telephone 1;1;Mr;DUPONT;Cedric;1, rue des fleurs;34000;Montpellier;00.00.00.00.00 2;2;Mr;MARTIN;Albert;5 allée du bonheur;34000;Montpellier;00.00.00.00.00 3;3;Mlle;PLUH;Sarah;2bis, Technopolis;34000;Montpellier;00.00.00.00.00 Voici ce que cela donne comme code :
LOCAL MonDocument est une chaîne = "F:\Modele.odt" PathURL est une chaîne oSM est un objet automation dynamique oDesktop est un objet automation dynamique oPublipostage est un objet automation dynamique oDatacontext est un objet automation dynamique oDocument est un objet automation dynamique oDocBase est un objet automation dynamique dsInstance est un objet automation dynamique arg_LdDoc est un tableau de 1 objet automation dynamique arg_DbArgs est un tableau de 1 objet automation dynamique arg_InfoBase est un tableau de 6 objet automation dynamique arg_MyProps est un tableau de 0 Variants vdl est un entier
QUAND EXCEPTION DANS
oSM = allouer un objet automation("com.sun.star.ServiceManager") oDesktop = oSM>>createInstance("com.sun.star.frame.Desktop") FAIRE FinProgramme("LibreOffice n'est pas installé sur votre poste.") FIN SI fFichierExiste(MonDocument) ALORS
arg_LdDoc[1] = OOValeurNommée(oSM,"Hidden",Vrai)
oDocument = oDesktop>>LoadComponentFromURL( OOFichier(MonDocument), "_blank", 0, arg_LdDoc)
Transfert(&arg_LdDoc[1],&vdl,Dimension(vdl)) SI oDocument<>Null ALORS
oDatacontext = oSM>>createInstance("com.sun.star.sdb.DatabaseContext")
SI oDatacontext>>hasByName("Clients") ALORS oDatacontext>>revokeObject("Clients") dsInstance = oDatacontext>>createInstance() oDocBase = dsInstance>>DatabaseDocument arg_DbArgs[1] = OOValeurNommée(oSM,"Overwrite","true")
oDocBase>>storeAsURL(OOFichier("F:\MaDataSource.odb"),arg_DbArgs)
Transfert(&arg_DbArgs[1],&vdl,Dimension(vdl)) oDatacontext>>registerObject("Clients", dsInstance)
PathURL = "sdbc:flat:"+ OOFichier("F:\Temp\csvFiles") dsInstance>>URL= PathURL arg_InfoBase[1] = OOValeurNommée(oSM,"Extension","csv") arg_InfoBase[2] = OOValeurNommée(oSM,"CharSet","ISO-8859-15") arg_InfoBase[3] = OOValeurNommée(oSM,"HeaderLine",True) arg_InfoBase[4] = OOValeurNommée(oSM,"FieldDelimiter",";") arg_InfoBase[5] = OOValeurNommée(oSM,"StringDelimiter","'") arg_InfoBase[6] = OOValeurNommée(oSM,"DecimalDelimiter",".") dsInstance>>Info = arg_InfoBase
oDocBase>>store()
POUR x = 1 A 6 Transfert(&arg_InfoBase[x],&vdl,Dimension(vdl)) FIN
oPublipostage = oSM>>createInstance("com.sun.star.text.MailMerge") oPublipostage>>DataSourceName="Clients" oPublipostage>>DocumentURL = OOFichier("F:\Modele.odt") oPublipostage>>CommandType=0 oPublipostage>>Command="MesClients" oPublipostage>>OutputType=2 oPublipostage>>OutputUrl= OOFichier("F:\") oPublipostage>>FileNameFromColumn=False oPublipostage>>FilenamePrefix="Fusion.odt" oPublipostage>>SaveAsSingleFile=True oPublipostage>>Execute(arg_MyProps) oPublipostage>>Dispose()
dsInstance>>Dispose() oDatacontext>>Dispose() oDocument>>Close(Vrai) oDesktop>>Terminate() Libérer oSM SINON Erreur("Document non ouvert") FIN FIN CAS EXCEPTION: Erreur("Exception LibreOffice") Libérer oSM
La procédure OOValeurNommée :
Procedure OOValeurNommée(oSM est un objet automation dynamique, cName est une chaîne, uvalue est un Variant) PropertyValue est un objet automation dynamique PropertyValue = oSM>>Bridge_GetStruct("com.sun.star.beans.PropertyValue") PropertyValue>>Name = cName PropertyValue>>Value = uvalue RENVOYER PropertyValue
La procédure OOFichier :
Procedure OOFichier(Fichier est une chaîne) RENVOYER "file:///"+Remplace(Fichier,"\","/")
et voici le résultat :
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 07 juillet 2014 - 10:36 |
Bonjour et merci J.P ! Je travaille dans une administration, et celle-ci a décidé (pour faire des économies de bouts de chandelle) de ne plus acheter de pack Microsoft office pour quel que poste que ce soit (d'ailleurs elle ne veut plus de Windev non plus , mais là, je fais de la résistance ). Je vais être contraint de basculer mes publipostages vers Word (qui fonctionnent très bien) vers des publipostages vers libre office. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 08 juillet 2014 - 12:05 |
Bonjour J.P
Help ! Au secours J.P !
Je tente de mettre en oeuvre ton code, et rencontre quelques difficultés. Le programme créer bien le fichier MadataSource.odb dans lequel je retrouve le fichier clients. Par contre, au lieu de me créer un fichier Fusion0.odt, le programme me créer un fichier word Fusion0.doc !!! Ensuite, le programme se plante à l'instruction oPublipostage>>Execute(arg_MyProps).
Aurais-tu une petite idée du pourquoi de tout cela ?
Merci encore. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 08 juillet 2014 - 16:49 |
hello, c'est parce que dans les options tu dois être en : Document Texte / Enregistrer systématiquement en Microsoft Word
dans Outils/Options/ Chargement/enregistrement / Général dans Format de fichier par défaut et paramètrage ODF il faut mettre pour type de document/document texte -> Texte ODF
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 08 juillet 2014 - 17:15 |
Hello, J.P !
Merci, tu me sauves par tes explications.
Pour les champs de fusion dans le modèle, c'est bien en faisant dans LO "insertion>champs>autres>champ de mailing>clients>mesclients>nom de la rubrique" qu'on les réalise ?
Car, hormis le fait que le programme plante, le fichier fusion, s'il contient bien autant de pages que de clients, n'a aucune donnée de fusionnée. Par exemple, au lieu d'avoir 3 pages avec Dupont, Durant et Martin, j'obtiens 3 pages avec <nom>, <nom>, et encore <nom>.
Je vais voir si le fait d'enregistrer en Odt change quelque chose.
Je nage, je nage.
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 08 juillet 2014 - 17:25 |
Re Hello J.P !
Tu as raison pour les options d'enregistrement. Maintenant mon programme enregistre bien un document de fusion en odt (je n'ai jamais touché à OO que depuis hier pour excuse)... Et, cerise sur le gâteau, la fusion fonctionne ! (j'ai bien Dupont, Durant et Martin)
Par contre, le programme se plante toujours à la ligne oPublipostage>>Execute(arg_MyProps)
Une idée ?
Merci merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 08 juillet 2014 - 17:28 |
re re Hello J.P !
Plus exactement, le plantage est le suivant, à la ligne oPublipostage>>Execute(arg_MyProps) :
Erreur à la ligne 77 du traitement Clic sur BTN_OOLO. Une erreur système inattendue est survenue. Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit : - une description des circonstances de l'incident - les lignes de code, une fenêtre ou un projet permettant de reproduire le problème - les informations techniques suivantes
Détails techniques :
Module : kernel32.dll Adresse de base : 768A0000 Erreur système : Access violation (GPF) EIP = 768B13A8 OS : Windows 2008 R2 Service Pack 1(6.1.7601)
----- Informations techniques -----
Projet : OOLO
Appel WL : Traitement de 'Clic sur BTN_OOLO' (FEN_CLIENTS.BTN_OOLO), ligne 77, thread 0
Que s'est-il passé ? Une erreur système inattendue est survenue. Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit : - une description des circonstances de l'incident - les lignes de code, une fenêtre ou un projet permettant de reproduire le problème - les informations techniques suivantes
Détails techniques :
Module : kernel32.dll Adresse de base : 768A0000 Erreur système : Access violation (GPF) EIP = 768B13A8 OS : Windows 2008 R2 Service Pack 1(6.1.7601)
Code erreur : 1020 Niveau : erreur fatale (EL_FATAL)
Dump de l'erreur du module 'wd180vm.dll' (18.0.150.7). Identifiant des informations détaillées (.err) : 1020 Informations de débogage :
Détails techniques :
Module : kernel32.dll Adresse de base : 768A0000 Erreur système : Access violation (GPF) EIP = 768B13A8 OS : Windows 2008 R2 Service Pack 1(6.1.7601) Registres :
EIP = 768B13A8 EBP = 028E9810 EAX = 00000000 EBX = 028B8AF0 ECX = 00000004 EDX = 00001022 ESI = 00000000 EDI = 029BC310
Pile des appels :
[kernel32.dll (768A0000)] 768B1328 : GetConsoleMode() + 128 bytes
Informations supplémentaires : EIT_PILEWL : Clic sur BTN_OOLO (FEN_CLIENTS.BTN_OOLO), ligne 77 EIT_DATEHEURE : 08/07/2014 17:27:04
Assistance |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 09 juillet 2014 - 02:13 |
hello, moi je n'ai pas de plantage. Je suis en WD16 , LibreOffice 4.1.6.2, Windows 7 SP1. Et toi ? as-tu le même code exactement que moi et le même document source ?
Au fait si tu veux enregistrer la fusion en un autre format que odt il faut que tu utilises le paramètre SaveFilter avant le lancement du publipostage par execute comme ceci :
oPublipostage>>SaveFilter = "writer8"
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 09 juillet 2014 - 03:15 |
j'ai trouvé un moyen de se passer de l'utilisation des fonctions transfert pour éviter le crash en sortie de procédure : en utilisant Core Reflexion pour créer les property values. 1 - il faut rajouter une nouvelle variable :
oCRef est un objet automation dynamique
dans le code juste après la création de oDesktop rajouter :
oCRef = oSM>>createInstance("com.sun.star.reflection.CoreReflection")
et la procédure OOValeurNommée se transforme en :
Procedure OOValeurNommée(oSM est un objet automation dynamique, oCRef est un objet automation dynamique, cName est une chaîne, uvalue est un Variant) PropertyValue est un objet automation dynamique
oCRef>>forName("com.sun.star.beans.PropertyValue")>>createObject(PropertyValue) PropertyValue>>Name = cName PropertyValue>>Value = uvalue RENVOYER PropertyValue
et l'appel de la procédure est par exemple :
arg_DbArgs[1] = OOValeurNommée(oSM,oCRef,"Overwrite","true")
on peut alors supprimer toutes les procédures transfert !
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 10:24 |
Salut J.P.
Vraiment, je te suis reconnaissant. Je ne suis pas encore au stade d'avoir compris tout le fonctionnement du code (loin s'en faut). Je vais essayer tes nouvelles procédures et je te tiens au courant. Merci encore. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 10:27 |
J.P...
Et pour répondre à ta question, je suis en WD18, Windows 7 SP1 et libre office 4.2.5.2. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 11:15 |
Jurassic Pork a écrit :
hello, moi je n'ai pas de plantage. Je suis en WD16 , LibreOffice 4.1.6.2, Windows 7 SP1. Et toi ? as-tu le même code exactement que moi et le même document source ?
Au fait si tu veux enregistrer la fusion en un autre format que odt il faut que tu utilises le paramètre SaveFilter avant le lancement du publipostage par execute comme ceci : oPublipostage>>SaveFilter = "writer8" // Nom du filtre d'exportation de OOo pour enregistrer en .odt //oPublipostage>>SaveFilter = "MS Word 2007 XML" // Nom du filtre d'exportation de OOo pour enregistrer en .docx // oPublipostage>>SaveFilter = "MS Word 97" // Nom du filtre d'exportation de OOo pour enregistrer en .doc //oPublipostage>>SaveFilter = "writer_pdf_export" // Nom du filtre d'exportation de OOo pour enregistrer en .pdf
Ami calmant, J.P
Super ce truc là ! J'ai essayé et ça marche !
Bon, je continue à essayer la suite du code que tu m'as donné. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 11:40 |
re Hello J.P
J'ai supprimé les procédures de transfert. De côté là, ça marche. Par contre, j'ai toujours le même plantage à l'exécution de oPublipostage>>Execute(arg_MyProps)
J'ai créé un petit projet me permettant de gérer une base clients à partir de laquelle je génère le fichier csv. Je n'ai donc certainement pas le même document source que toi. Manquerait-il du code dans les déclarations globales du projet qui ferait que ça plante ?
Voici le code du publipostage. Y vois-tu une faille ? Merci beaucoup.
LOCAL MonDocument est une chaîne = "C:\OOLO\Modele.odt" PathURL est une chaîne oSM est un objet automation dynamique oDesktop est un objet automation dynamique oPublipostage est un objet automation dynamique oDatacontext est un objet automation dynamique oDocument est un objet automation dynamique oDocBase est un objet automation dynamique dsInstance est un objet automation dynamique arg_LdDoc est un tableau de 1 objet automation dynamique arg_DbArgs est un tableau de 1 objet automation dynamique arg_InfoBase est un tableau de 6 objet automation dynamique arg_MyProps est un tableau de 0 Variants vdl est un entier oCRefest un objet automation dynamique sTexte est une chaîne
sTexte=TableVersTexte(TABLE_Clients,taTitreColonnes,";") fSauveTexte("C:\OOLO\Temp\csvFiles\MesClients.csv",sTexte)
QUAND EXCEPTION DANS
oSM = allouer un objet automation("com.sun.star.ServiceManager") oDesktop = oSM>>createInstance("com.sun.star.frame.Desktop")
oCRef = oSM>>createInstance("com.sun.star.reflection.CoreReflection") FAIRE FinProgramme("LibreOffice n'est pas installé sur votre poste.") FIN SI fFichierExiste(MonDocument) ALORS
arg_LdDoc[1] = OOValeurNommée(oSM,oCRef,"Hidden",Vrai)
oDocument = oDesktop>>LoadComponentFromURL( OOFichier(MonDocument), "_blank", 0, arg_LdDoc)
SI oDocument<>Null ALORS
oDatacontext = oSM>>createInstance("com.sun.star.sdb.DatabaseContext")
SI oDatacontext>>hasByName("Clients") ALORS oDatacontext>>revokeObject("Clients") dsInstance = oDatacontext>>createInstance() oDocBase = dsInstance>>DatabaseDocument arg_DbArgs[1] = OOValeurNommée(oSM,oCRef,"Overwrite","true")
oDocBase>>storeAsURL(OOFichier("C:\OOLO\MaDataSource.odb"),arg_DbArgs)
oDatacontext>>registerObject("Clients", dsInstance)
PathURL = "sdbc:flat:"+ OOFichier("C:\OOLO\Temp\csvFiles") dsInstance>>URL= PathURL arg_InfoBase[1] = OOValeurNommée(oSM,oCRef,"Extension","csv") arg_InfoBase[2] = OOValeurNommée(oSM,oCRef,"CharSet","ISO-8859-15") arg_InfoBase[3] = OOValeurNommée(oSM,oCRef,"HeaderLine",True) arg_InfoBase[4] = OOValeurNommée(oSM,oCRef,"FieldDelimiter",";") arg_InfoBase[5] = OOValeurNommée(oSM,oCRef,"StringDelimiter","'") arg_InfoBase[6] = OOValeurNommée(oSM,oCRef,"DecimalDelimiter",".") dsInstance>>Info = arg_InfoBase
oDocBase>>store()
oPublipostage = oSM>>createInstance("com.sun.star.text.MailMerge") oPublipostage>>DataSourceName="Clients" oPublipostage>>DocumentURL = OOFichier("C:\OOLO\Modele.odt") oPublipostage>>CommandType=0 oPublipostage>>Command="MesClients" oPublipostage>>OutputType=2 oPublipostage>>OutputUrl= OOFichier("C:\OOLO\") oPublipostage>>FileNameFromColumn=False
oPublipostage>>SaveFilter = "writer_pdf_export"
oPublipostage>>FilenamePrefix="Fusion.odt" oPublipostage>>SaveAsSingleFile=True oPublipostage>>Execute(arg_MyProps) oPublipostage>>Dispose()
dsInstance>>Dispose() oDatacontext>>Dispose() oDocument>>Close(Vrai) oDesktop>>Terminate() Libérer oSM SINON Erreur("Document non ouvert") FIN FIN
Libérer oSM
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 12:58 |
Re Hello
J'ai testé en Windows seven et libreoffice v4.1.6.2 : même plantage. J'ai testé en Windows XP et libreoffice v4.1.6.2 : même plantage.
wd180vm.dll qui serait en cause ? Ceci dit j'espère pas... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 14:33 |
Salut tout le monde.
J'ai testé le code J.P sur une plateforme Windev 18. Cela plante comme je l'ai dit plus haut. Intrigué, j'ai refait le test, mais cette fois-ci en codant sur une plateforme Windev 16. Et là, ça marche ! J'en conclut qu'il y a sans doute un bug dans la dll wd180vm.dll.
J.P, qu'est-ce que tu en penses ? Je vais devoir envoyer le programme au S.T, ou tu as une autre idée ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 09 juillet 2014 - 15:00 |
hello, peut-être que le problème vient du passage de ce paramètre :
arg_MyProps est un tableau de 0 Variants
oPublipostage>>Execute(arg_MyProps)
je n'ai que la version 16 de Windev alors je ne peux pas faire d'essai avec les versions supérieures. Il faudrait savoir si le passage du tableau de 0 Variant est traité différemment entre la version 16 et la version 18 de windev.
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 15:11 |
Hello,
Oui, mais je n'ai aucune idée de ce que l'on pourrait mettre à la place. Si tu as une suggestion... Ce serait tout de même étonnant qu'il n'y ai pas de compatibilité ascendante entre les différentes versions de Windev.
Amicalement. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 15:57 |
Suite...
Il y a un lézard quelque-part.
J'ai rebasculé le programme écrit en Windev 16 (qui était du copié/collé de celui écrit en 18) en windev 18, et là, surprise : le publipostage fonctionne en windev 18 !
J'y comprends plus rien. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 17:12 |
Bonsoir,
Et voilà, une histoire de fous :
Deux projets, rigoureusement le même code. L'un écrit en Windev 16 puis basculé en Windev 18. L'autre directement écrit en Windev 18. Le premier fonctionne, l'autre plante. Pour preuve, la comparaison entre les deux projets (aucune différence de code, le reste démontre qu'ils n'ont pas été générés de la même façon :
(impossible duploader l'image de la comparaison des 2 projets. décidément, c'est pas mon jour.
Quelqu'un a une idée, parce que là, moi... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 09 juillet 2014 - 18:31 |
Bon ben voilà, je donne ma langue au chat, ou plutôt au S.T. J'ai en effet envoyé les deux projets au S.T, celui qui plante et celui qui plante pas, tout deux ayant le même code (rigoureusement).
Wait and see. |
| |
| |
| | | |
|
| | |
| |
Posté le 09 juillet 2014 - 19:24 |
Bonjour Pierre Louis
projet windev 16 = par défaut en ansi, passé en 18 toujours en ansi (toutes les chaines non spécifiées sont ansi)
projet windev 18 natif: par défaut en unicode
le code est exactement le même, mais "Machaine est chaine" créé soit une chaine ansi, soit une chaine unicode, et les répercussions sont nombreuses, en particulier dés qu'on travaille avec quelque chose d'externe
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
NOUVEAU: WXShowroom.com est disponible : Montrez vos projets ! Plus d'information sur http://fabriceharari.com
On 7/9/2014 9:12 AM, Pierre-Louis wrote:
Bonsoir, Et voilà, une histoire de fous : Deux projets, rigoureusement le même code. L'un écrit en Windev 16 puis basculé en Windev 18. L'autre directement écrit en Windev 18. Le premier fonctionne, l'autre plante. Pour preuve, la comparaison entre les deux projets (aucune différence de code, le reste démontre qu'ils n'ont pas été générés de la même façon : (impossible duploader l'image de la comparaison des 2 projets. décidément, c'est pas mon jour. Quelqu'un a une idée, parce que là, moi... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 10 juillet 2014 - 00:09 |
voici une dernière tentative que tu peux essayer : remplacer :
arg_MyProps est un tableau de 0 Variants
par :
arg_MyProps est un tableau de 0 objet automation dynamique
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Posté le 10 juillet 2014 - 12:03 |
Merci pour vos réponses. Cependant, je suis en vacances jusqu'à mardi. Donc je regarderai cela semaine prochaine car faire du windev sur un Nokia c"est pas top. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 218 messages Popularité : +14 (14 votes) |
|
Posté le 15 juillet 2014 - 11:12 |
Bonjour,
Merci J.P et merci Fabrice pour vos tentatives de résolution du dernier problème que je rencontrais, c'est à dire : deux programmes, même code, l'un d'abord écrit en W16 puis migré en W18, l'autre directement écrit en W18 ; l'un fonctionnant, l'autre plantant.
J'ai essayé le truc de J.P : même constat. J'ai essayé le code en ANSI de Fabrice : même constat.
Finalement, les deux programmes ayant forcément quelque chose de différent, j'ai trouvé que cela venait des options de compilation. En W16, seule l'option "Classes : préfixes ":" et "::" d'accès aux membres et aux méthodes facultatifs" est cochée par défaut. En W18, elles le sont toutes, dont "L'affectation de tableau copie le contenu" qui fait planter le publipostage.
En décochant cette dernière option de compilation, j'ai bien mes deux programmes qui fonctionnent. Ouf.
Bons dev. |
| |
| |
| | | |
|
| | |
| |
Posté le 15 juin 2015 - 17:22 |
je Bonjour je n ai pas de réponse a ta demande mais comme tu semble bien maitrise les fusions vers word pourrais tu m aider je voudrais a partir du fiche client imprime via word un imprimer type reprennant les donnes de client ou encore a partir d'un tableau par selection des client faire un mailing via word cordialement |
| |
| |
| | | |
|
| | |
| |
Posté le 04 février 2016 - 12:21 |
Bonjour, Merci pour ce code, cependant je butte dès la première instruction de chargement du doc LibreOffice :
oDocument=oDesktop>>LoadComponentFromURL(OOFichier(MonDocument),"_blank",0,arg_LdDoc) arg_LdDoc est de type tableau de 1 objet Automation dynamique. La procédure OOValeurNommée modifiée avec CoreReflection
Erreur Windev : Type incompatible durant une affectation ... c'est tout et ça m'avance pas.
Une idée ?
WINDEV 21 / LibreOffice 4.3.7.2 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|