5 messages in org.openoffice.fr.progRe: [prog] Publipostage
FromSent OnAttachments
MABILLE Bruno SZSIC57-IMLMar 6, 2007 7:42 am 
Philippe AllartMar 6, 2007 7:54 am 
Francois GattoMar 6, 2007 7:58 pm 
MABILLE Bruno SZSIC57-IMLMar 6, 2007 11:17 pm 
Philippe AllartMar 7, 2007 12:28 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] PublipostageActions...
From:Philippe Allart (pall@cudl-lille.fr)
Date:Mar 7, 2007 12:28:41 am
List:org.openoffice.fr.prog

Francois Gatto a écrit :

Bonjour,

Quelle version d'OOo utilises-tu et sous quelle plateforme ?

Personnellement, sous XP OOo v2.1 je n'ai pas de problème.

Merci pour l'info.

Par rapport au code de François, il manquait trois lignes dans ma version:

------------------------------------- Sub SupprimerSource(nomSource as String) dim monDBContext As Object, maSource as Object

monDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")

if monDBContext.hasByName(nomSource) then maSource = monDbContext.GetByName(nomSource) ' <--- celle-ci monDBContext.revokeObject(nomSource) maSource.databaseDocument.close(True) ' <--- celle-ci maSource.databaseDocument.dispose ' <--- et celle-ci end if end sub

------------------------------------ Apparemment la source de donnée, en tant que document, était restée ouverte au niveau de l'environnement "démarrage rapide".

Je ne dispose pas dans l'immédiat de l'environnement pour tester (Windows + OOo 2.1), mais j'ai bon espoir.

A+

Ph.

J'ai testé ta macro et je n'y ai pas rencontré de difficulté ; j'ai juste supprimé la propriété "Overwrite" et l'ai remplacée par un simple dim propsODB().

Cela étant, quel est l'intérêt de tout celà ?

Est-ce un publipostage entièrement programmé ?

Enfin, si l'utilisateur ajoute/modifie des données dans la feuille, s'il sauvegarde le doc puis qu'il "rafraîchit" sa source par un F4 (fermeture/ouverture) les modifications sont disponibles.

Peut-être n'ai-je pas bien compris le problème.

MABILLE Bruno SZSIC57-IML a écrit :

Bonjour, Je bloque sur la création/suppression d'une source de donnée pour publipostage. La source est un classeur OpenOffice, et je désire pouvoir valider/dévalider celle ci afin de modifier le classeur et ne pas être obligé de quitter le démarrage rapide d'OOo. La macro est en deux parties, la première crée la source de données et la seconde la supprime. La macro tombe en erreur systématiquement, à la ligne en gras, lors de la seconde création, malgré la suppression. Le fonctionnement correct est retrouvé en quittant le démarrage rapide d'OOo.

Voici les macros :

sub Creation_Source_De_Donnees()

' Création de la base oURL=ThisComponent.URL oTabURL=split(oURL,"/") oNomFichier=oTabURL(uBound(oTabURL)) oNomSource=mid(oNomFichier, 1, len(oNomFichier)-4) oNomBase1=mid(oURL, 1, len(oURL)-4) oNomBase=oNomBase1 & ".ods" oDbContext=createUnoService("com.sun.star.sdb.DatabaseContext") oNewSource = createUnoService("com.sun.star.sdb.DataSource") ' Création du fichier ODB OdbURL=oNomBase1 & ".odb" propsODB(0).Name = "Overwrite" xray.xray propsODB(0) propsODB(0).value = True oNewSource.databaseDocument.StoreAsURL(OdbURL, propsODB()) oNewSource.databaseDocument.store() oNewSource.databaseDocument.URL(OdbURL, props()) ' Création de la source de données Reponse = oDbContext.hasByName(oNomSource) If Reponse then MsgBox "La source de données " & oNomSource & " existe déjà, ajout impossible" Else oNewSource.URL = "sdbc:calc:" & oNomBase oNewSource.databaseDocument.store() oDbContext.RegisterObject(oNomSource, oNewSource) msgbox "Source de Données " & oNomSource & " ( Calc ) créée." End If

end sub

sub Delete_Source_De_Donnees()

oURL=ThisComponent.URL oTabURL=split(oURL,"/") oNomFichier=oTabURL(uBound(oTabURL)) oNomSource=mid(oNomFichier, 1, len(oNomFichier)-4) oNomBase1=mid(oURL, 1, len(oURL)-4) oDBContext=createUnoService("com.sun.star.sdb.DatabaseContext") oNewSource = createUnoService("com.sun.star.sdb.DataSource") OdbURL=oNomBase1 & ".odb" oNewSource.databaseDocument.URL(OdbURL, props()) Reponse=oDbContext.hasByName(oNomSource) If not Reponse then msgbox "La source de données " & oNomSource & " n'existe pas, suppression impossible !" Else oDbContext.revokeObject(oNomSource) ' Fermeture du document odb oNewSource.databaseDocument.close(True) oNewSource.databaseDocument.dispose msgbox "Source de Données " & oNomSource & " supprimée" end if end sub

Merci d'avance pour vos réponse