2 messages in org.openoffice.fr.progRe: [prog] Liste des tables d'une base
FromSent OnAttachments
François BreizhApr 24, 2008 3:26 pm 
Francois GattoApr 24, 2008 11:00 pm 
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] Liste des tables d'une baseActions...
From:Francois Gatto (oo@volcar.org)
Date:Apr 24, 2008 11:00:39 pm
List:org.openoffice.fr.prog

Bonjour,

François Breizh a écrit :

Bonjour à tous.

J'ai un problème avec l'accès à la liste des tables d'une base de données : je souhaite pouvoir supprimer et recréer des tables par macro. A un moment je veux balayer les tables existantes par quelque chose comme ça :

/BaseComptes = DatabaseContext.getByName("Paiements") .... oLstTables = BaseComptes.Tables If oLstTables.Count > 0 Then For I = 0 To oLstTables.Count - 1 .... SString = oLstTables.ElementNames(I) Next I End If

/Le problème est que la liste obtenue est toujours la même : avec une base importée d'une autre machine, je retrouve toujours la liste des tables existantes au début, même lorsque je les ai supprimées ; avec une base initialisée par macro (qui n'avait aucune table lorsque je l'ai enregistrée), la liste est toujours vide, même après avoir ajouté des tables. Ai-je mal compris l'usage d'une variable de type com.sun.star.sdb.ODefinitionContainer ?

1] Liste de tables

Je pense qu'il te manque simplement une instruction de rafraichissement des tables après suppression/creation des tables.

Tu devrais avoir en amont de ta procédure de listage des tables quelque chose comme : oLstTables.Refresh()

avec oLstTables = oConnexion.getTables()

2] Sauvegarde de tables/bases

avec une base importée d'une autre machine, je retrouve toujours la liste des tables existantes au début

Là je crois que tu oublies de sauvegarder les modifications de ta Base. Aussi il est nécessaire d'enregistrer ta base mise à jour, par exemple avec ce genre d'instructions :

'enregistrement oDataSource.DataBaseDocument.Store() 'libération de la connexion si fin de traitement oConnexion.dispose()