[Résolu] [Base] Activer une source de données

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Titine
Fraîchement OOthentifié
Messages : 7
Inscription : 02 juin 2009 15:14

[Résolu] [Base] Activer une source de données

Message par Titine »

Bonjour,

Je viens d'intaller la version 3.1 de Open office (j'avais la version 2.4 d'installée).
J'ai du code qui ne fonctionne plus... Celui me permettait d'activer une source de données.

Le code suivant fonctionnait avec la version 2.4
Il permet d'activer une base de données NomBase.odb par programme (visible dans le menu Afficher/Source de données)

Code : Tout sélectionner

	nomSource = "NomBase"
	nomContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
	Chemin = "C:\Test"
	CheminUrl = ConvertToURL(Chemin)
	uneInstance = nomContext.CreateInstance()
	nomDocBase = uneInstance.DatabaseDocument
	nomDocBase.AttachResource(CheminUrl & "/NomBase.odb",Array())
	nomContext.registerObject(nomSource, uneInstance)
	uneInstance.URL = "sdbc:dbase:" & CheminUrl
Et maintenant, à l'exécution de la méthode AttachResource, j'obtiens le message suivant :
"Erreur d'exécution BASIC.
Une exeption s'est produite :
Type: com.cun.star.lang.NotInitializedException
Message: ."
Merci de votre aide
Dernière modification par Titine le 04 juin 2009 09:45, modifié 3 fois.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12200
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: Activer une source de données

Message par Bidouille »

Bonjour,

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.

Lisez ce fil pour savoir quelle balise utiliser : http://user.services.openoffice.org/fr/ ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Activer une source de données

Message par Dude »

Salut,

Si NomBase n'existe pas / plus dans le menu Outils > Options > Base, c'est normal.

J'ai fait un suprême pour tester et créer la source, tu peux t'en inspirer.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Titine
Fraîchement OOthentifié
Messages : 7
Inscription : 02 juin 2009 15:14

Re: [Base] Activer une source de données

Message par Titine »

Mon soucis c'est que j'ai déjà une base NomBase.odt (que je ne veux pas toucher).

Je souhaite juste faire le lien avec cette base. Ce qui correspond à ajouter cette base dans Outils/Options/OpenOffice.org Base/Bases de données mais par programme.
Mon code fonctionnait avec la version 2.4 et ne fonctionne plus maintenant avec la version 3.1.
Open Office 3.1 - Windows XP
P'tite Sandrine
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 21 avr. 2009 11:43

Re: [Base] Activer une source de données

Message par P'tite Sandrine »

Bonjour,

le code fournis par Dude te permettra de tester si le lien existe encore et si pas, de le recréer.

Bonne journée
OpenOffice 2.4 sous Windows XP Pro SP2
Titine
Fraîchement OOthentifié
Messages : 7
Inscription : 02 juin 2009 15:14

Re: [Base] Activer une source de données

Message par Titine »

Le code fournis par Dude fonctionne très bien. Si le lien n'existe pas cela le crée, mais la base .odb est recréée (et se trouve donc vide (2Ko)).

Dans mon cas, je fournis un fichier NomBase.odb qui contient déjà des données. Et je souhaite juste ajouter ce lien dans Outils/Options/OpenOffice.org Base/Bases de données, sans toucher à cette base. Bien sûr si le lien existe déjà je n'exécute pas ce code.

J'espère avoir été plus clair

Titine
Open Office 3.1 - Windows XP
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Activer une source de données

Message par Dude »

Titine a écrit :mais la base .odb est recréée (et se trouve donc vide (2Ko)).
C'est pour cela que je t'ai indiqué :
Dude a écrit :tu peux t'en inspirer.
Si tu ne veux pas qu'il crée l'ODB, tu mets en remarque les deux dernières lignes du code.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Titine
Fraîchement OOthentifié
Messages : 7
Inscription : 02 juin 2009 15:14

Re: [Base] Activer une source de données

Message par Titine »

Merci Dude, mais cela ne fonctionne pas mieux avec les deux dernières lignes de ton code en commentaire.

C'est la méthode storeAsURL qui écrase la base. Et je ne sais pas par quoi la remplacer.
Open Office 3.1 - Windows XP
sephial
Fraîchement OOthentifié
Messages : 6
Inscription : 04 juin 2009 07:53

Re: [Base] Activer une source de données

Message par sephial »

J'avoue ne pas saisir la réponse de Dude.
La fonction storeAsURL que tu utilises dans ton code écrase la source pour créer un nouveau fichier.
Cette fonction ne peut, selon moi, être utilisé dans ce cas précis.
Je pense que le problème est donc de trouver une fonction qui permet d'associé le fichier (sans écraser les données existantes de ce fichier).
Malheureusement, la fonction AttachResource ne marche plus depuis la version 3.1 d'Open Office (il fonctionne très bien en 3.0).
Je me demande donc si ce n'est pas un bug (et si oui, est ce qu'il sera corrigé pour une version 3.1.1 ? ).
OpenOffice 3.1 sous Windows XP
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Activer une source de données

Message par Dude »

Autant pour moi, j'ai dit cela de mémoire. Voici du code pour créer uniquement la source sans écraser l'ODB :

Code : Tout sélectionner

Sub EnregistreSourceODB
   Dim NomSource as string
   Dim Chemin as string
   Dim NomBase as string
   Dim Classeur as string
   NomSource = "Ma source à moi"
   Chemin = "p:\temp"
   NomBase = "maBase.odb"
   
   oContexte = createUnoService("com.sun.star.sdb.DatabaseContext")
   If oContexte.hasByName(NomSource) Then
      msgBox NomSource & " existe déjà !"
   Else
      sUrl = ConvertToURL(Chemin)
      oSrcODB = oContexte.getByName (sUrl & "/" & NomBase)
      oContexte.registerObject(NomSource, oSrcODB)
   End If
End Sub
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Titine
Fraîchement OOthentifié
Messages : 7
Inscription : 02 juin 2009 15:14

Re: [Base] Activer une source de données

Message par Titine »

Merci Dude, ça fonctionne.
Open Office 3.1 - Windows XP