Suite...
LibreStefan wrote > c'est bon j'ai trouvé comment faire avec les infos de P.Y.S Ok, super... :) Cela dit, comme je l'indiquais je n'avais pas encore travaillé là-dessus et j'ai "accepté" un peu vite le fait qu'on ne trouvait pas avec Xray. M'étant penché rapidement sur l'API je m'aperçois qu'il devrait y avoir tout ce qu'il faut pour éviter de passer par le SQL (ce qui devrait éviter les problèmes de portabilité d'un moteur à un autre). Du coup, ni une ni deux, ci-dessous un exemple illustrant comment supprimer les index (clé primaire et relations existantes) pour la table FournisseursProduits de la base jointe. Puis bien sûr, recréation... Comme l'autre fois, le code ci-dessous est "minimal" : aucun contrôle n'est fait (y a-t-il des données ? gestion des erreurs, etc.). Ce genre de question ne serait pas à se poser si les index étaient créés lors de la création de la table... Le programme manipulant la base (et ma connaissance du truc étant plus que récente) il va de soi que je te conseille de travailler sur des copies et non une base de production... GestionRelations.odb <http://nabble.documentfoundation.org/file/n4102167/GestionRelations.odb> Cordialement Pierre-Yves (ci-dessous le code) sub PysCreerRelation dim oConnection as object, oDesc as object, oDescCol as object, oTable as object, oCol as object dim i as long oConnection = ThisDatabaseDocument.DataSource.getConnection("","") oTable = oConnection.Tables.getByName("FournisseursProduits") ' Suppression des index déjà définis for i = oTable.keys.count - 1 to 0 step -1 oTable.keys.dropByIndex(i) next i ' Création de la clé primaire pour la table oCol = oTable.columns.getByName("IDFournisseursProduits") ' Création du descripteur pour la clé primaire oDesc = oTable.Keys.createDataDescriptor oDesc.Type = com.sun.star.sdbcx.KeyType.PRIMARY oDesc.Columns.appendByDescriptor(oCol) ' Ajout à l'index oTable.Keys.appendByDescriptor(oDesc) ' Création de la relation vers table Fournisseur oCol = oTable.columns.getByName("RéfFournisseur") set oDesc = nothing ' Création du descripteur pour la clé externe oDesc = oTable.Keys.createDataDescriptor ' Création du descripteur pour la propriété RelatedColumn oDescCol = oDesc.Columns.createDataDescriptor oDescCol.Name = "RéfFournisseur" oDescCol.Type = com.sun.star.sdbcx.KeyType.FOREIGN oDescCol.RelatedColumn = "RéfFournisseur" oDesc.Type = com.sun.star.sdbcx.KeyType.FOREIGN oDesc.ReferencedTable = "Fournisseurs" oDesc.UpdateRule = com.sun.star.sdbc.KeyRule.NO_ACTION oDesc.DeleteRule = com.sun.star.sdbc.KeyRule.NO_ACTION oDesc.Columns.appendByDescriptor(oDescCol) ' Ajout à l'index oTable.Keys.appendByDescriptor(oDesc) ' Création de la relation vers table Produits oCol = oTable.columns.getByName("RéfProduit") set oDesc = nothing ' Création du descripteur pour la clé externe oDesc = oTable.Keys.createDataDescriptor ' Création du descripteur pour la propriété RelatedColumn oDescCol = oDesc.Columns.createDataDescriptor oDescCol.Name = "RéfProduit" oDescCol.Type = com.sun.star.sdbcx.KeyType.FOREIGN oDescCol.RelatedColumn = "RéfProduit" oDesc.Type = com.sun.star.sdbcx.KeyType.FOREIGN oDesc.ReferencedTable = "Produits" oDesc.UpdateRule = com.sun.star.sdbc.KeyRule.NO_ACTION oDesc.DeleteRule = com.sun.star.sdbc.KeyRule.NO_ACTION oDesc.Columns.appendByDescriptor(oDescCol) ' Ajout à l'index oTable.Keys.appendByDescriptor(oDesc) end sub -- View this message in context: http://nabble.documentfoundation.org/Supprimer-creer-des-relations-entre-tables-par-macro-tp4102110p4102167.html Sent from the Users mailing list archive at Nabble.com. -- Envoyez un mail à [email protected] pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
