Francois Gatto | 25 Apr 08:01

Re: Liste des tables d'une base

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()

Francois Gatto

Gmane