Ces quelques lignes de code en Visual Basic démontrent comment assigner des caractéristiques visuelles différentes selon les propriétés de chacune des clefs étragères.
Compatible avec PowerDesigner/PowerAMC 16.5
L’exemple suivant permet de sélectionner des caractéristiques différentes selon les propriétés des Clefs étrangères :
- La couleur de la relation sera Bleu si les contraintes d’intégrité référentielle sont de type DÉCLARATIVE ;
- La couleur de la relation sera Rouge si les contraintes d’intégrité référentielle sont mises en oeuvre par l’intermédiaire de TRIGGERS ;
- L’épaisseur de la ligne de relation sera plus large si la case Générer est décochée ;
- Par défaut la couleur de la ligne de relation des clefs étrangères est Noir.
Le script réalise les modifications que sur le diagramme actif, mais il peut être adapté afin de couvrir l’ensemble des diagrammes d’un modèle.
Basé sur la même idée vous pourriez définir des styles pour vos tables basées sur des mots-clés que vous avez inscrit ainsi que sur vos annotations
MajFKCouleurs() Sub MajFKCouleurs() Dim pdm Dim symbol, progressBar, position Set pdm = ActiveDiagram ' Il n'y a pas de diagramme actif If pdm is nothing then MsgBox "Il n'y a pas de diagramme actif", vbCritical Exit Sub End If Set progressBar = Progress("Bar de progression", true) progressBar.Min = 0 progressBar.Max = pdm.Symbols.Count progressBar.Position = 0 progressBar.Stepping = 1 progressBar.Text = "Mise à jour des clefs étrangères selon leurs propriétés" progressBar.Start() For Each symbol In pdm.Symbols progressBar.Step() If strComp(symbol.ClassName,"Symbole de référence") = 0 then 'Only match foreign keys position = InStr(symbol.Object.ImplementationType,"D") ' Couleur de défaut symbol.LineColor = color_BLACK 'Si la Mise en oeuvre est Déclarative If position = 1 then symbol.LineColor = color_BLUE else symbol.LineColor = color_RED End If ' Si la case Générer est décochée If symbol.Object.Generated = FALSE then symbol.LineWidth = 2 End If end if Next progressBar.Stop() ' Actualiser l'affichage du diagramme pdm.RedrawAllViews() End Sub