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