Page 1 sur 1

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

MessagePublié: 02 Juin 2009 16:29
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   AgrandirRéduire
   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

Re: Activer une source de données

MessagePublié: 02 Juin 2009 16:31
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 : sutra27295.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.

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

MessagePublié: 02 Juin 2009 16:50
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.

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

MessagePublié: 03 Juin 2009 07:51
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.

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

MessagePublié: 04 Juin 2009 07:56
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

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

MessagePublié: 04 Juin 2009 08:24
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

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

MessagePublié: 04 Juin 2009 08:40
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.

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

MessagePublié: 04 Juin 2009 08:59
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.

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

MessagePublié: 04 Juin 2009 09:01
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 bogue (et si oui, est ce qu'il sera corrigé pour une version 3.1.1 ? ).

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

MessagePublié: 04 Juin 2009 09:36
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   AgrandirRéduire
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

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

MessagePublié: 04 Juin 2009 09:53
par Titine
Merci Dude, ça fonctionne.