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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à