Ces quelques lignes de code en Visual Basic permettent la génération automatisée de scripts DDL et DML en utilisant des sélections et des jeux de paramètres pré configurés.
Note : Deux billets ont été ouvert auprès de SAP :
- la sélection d’un jeu de paramètre ne fonctionne pas avec PowerAMC. Par contre cela fonctionne bien avec PowerDesigner.
Erreur: Paramètres « Tables & Vues (avec permissions) » non trouvés
Erreur: Paramètres « Triggers & Procedures (avec permissions) » non trouvés - Il n’est pas possible de passer en paramètre un jeux de sélection avec des accents.

Compatible avec PowerDesigner/PowerAMC 16.5
'* Nom du fichier : GENERER_BD.vbs
'* Définition : Permet la génération de script DDL et de jeu de données DML en utilisant des sélections et
'* des jeux de paramètres pré configurés au niveau d'un modèle. Pour ce faire nous utilisons
'* un modèle physique de données, Gestsoc.MPD, qui se trouve dans le répertoire d'installation de
'* PowerAMC. Ce modèle contient deux sélections :
'* "Organisation" pour lequel nous avons sélectionné les tables DIVISION, SALARIE, REGROUPE & EQUIPE.
'* "Matériels" pour lequel nous avons sélectionné les tables COMPOSE, MATERIEL, PROJET & UTILISE.
'* Modèle: Modèle physique pour la génération
'* Objets: Modèle
'* Auteur: Benoît Le Nabec
'* URL : http://www.Powerd911.guru
'* Créé: 2015-01-01
'* Version: 1.0
'**********************************************************************
' Toute les variables doivent être déclarées
Option Explicit
Dim NomFichier
Dim setting1
Dim setting2
Dim TestPos
' Version du logiciel
output Version
' Répertoire ou est installé PowerAMC
output HomeDirectory
' Dossier ou se trouve PowerAMC au niveau du registre
output RegistryHome
' Assigne le répertoire ou va être déposé le script SQL
Const GenDir = "D:\temp\test\"
' Détermine si c'est PowerAMC ou PowerDesigner
TestPos = InStr(1, RegistryHome, "PowerAMC", 1)
' Si c'est PowerAMC
if TestPos then
' Premier jeu de paramètres
setting1 = "Tables & Vues (avec permissions)"
' Second jeu de paramètres
' setting2 = "Triggers & Procédures (avec permissions)"
setting2 = "Triggers & Procedures (avec permissions)"
' EvaluateNamedPath permet d'évaluer la variable %_EXEMPLES% qui se trouve dans le nom du chemin nommé afin de produire un chemin absolu indépendament de l'OS utilisé.
NomFichier = EvaluateNamedPath("%_EXAMPLES%\gestsoc.mpd")
' Si c'est PowerDesigner
else
' Premier jeu de paramètres
setting1 = "Tables & Views (with permissions)"
' Second jeu de paramètres
setting2 = "Triggers & Procedures (with permissions)"
NomFichier = EvaluateNamedPath("%_EXAMPLES%\project.pdm")
end if
output "Nom du fichier : " & NomFichier
' Lancement du programme
Start EvaluateNamedPath(NomFichier)
' Routine
Sub Start(sModelPath)
' Si une erreur est rencontrée on continue
' on error resume next
dim pModel
' Ouverture du modèle
Set pModel = OpenModel(sModelPath)
' Si on ne trouve pas le modèle
If (pModel is Nothing) then
Output "Le modèle est absent " & sModelPath
Exit Sub
End if
' Générer un script DDL pour la sélection "Organisation".
GenerateDatabaseScripts pModel, "Organisation", setting1
' Générer un script de création de données de test DML pour les tables contenues dans le premier jeu de paramètres (setting1)
GenerateTestDataScript pModel, "Organisation"
' Générer un script DDL pour la sélection "Matériels"
GenerateDatabaseScripts pModel, "Matériels", setting2
' Générer un script de création de données de test DML pour les tables contenues dans le second jeu de paramètres (setting2)
GenerateTestDataScript pModel, "Matériels"
' Fermeture du modèle
pModel.Close
' Si une erreur est détectée on arrête
on error goto 0
End Sub
' Routine
Sub GenerateDatabaseScripts(pModel, sSelectionName, sSettingName)
Dim pOpts
' Référence sur les options du package
Set pOpts = pModel.GetPackageOptions()
' Éviter d'afficher la trace dans la fenêtre
'InteractiveMode = im_Batch '
' Forcer la génération d'un script SQL plutôt qu'établir une connexion ODBC
pOpts.GenerateODBC = False
' Assigner le nom du répêrtoire
pOpts.GenerationPathName = GenDir
output pOpts.GenerationPathName
' Assigner le nom du script et de son extension .sql - Scripts DDL
pOpts.GenerationScriptName = sSelectionName & ".sql"
output "Nom du script : " + pOpts.GenerationScriptName
' Assignation de la liste de sélection qui permet de sélectionner des objets (Tables, vues, etc.)
pModel.UseSelection fct_DatabaseGeneration, sSelectionName
output "Nom de la sélection : " + pModel.GetSelection(fct_DatabaseGeneration)
' Sélection du jeu de paramètres
pModel.UseSettings fct_DatabaseGeneration, sSettingName
output "Nom du jeu de paramètres : " + pModel.GetSettings (fct_DatabaseGeneration)
' Lancement de la génération du script SQL
'pModel.GenerateDatabase(pmodel.selection)
pModel.GenerateDatabase
End Sub
' Routine
Sub GenerateTestDataScript(pModel, sSelectionName)
Dim pOpts
' Référence sur les options du package
Set pOpts = pModel.GetPackageOptions()
' Éviter d'afficher la trace dans la fenêtre
'InteractiveMode = im_Batch
' Forcer la génération de script SQL plutôt qu'établir une connexion ODBC
pOpts.TestDataGenerationByODBC = False
' Ne pas générer de commande SQL de suppression des données précédentes
pOpts.TestDataGenerationDeleteOldData = False
' Assigner le nom du répêrtoire
pOpts.TestDataGenerationPathName = GenDir
' Assigner le nom du jeux de données et son extension _td.sql - script DML
pOpts.TestDataGenerationScriptName = sSelectionName & "_td.sql"
output pOpts.TestDataGenerationScriptName
' Sélection de la liste de sélection
pModel.UseSelection fct_TestDataGeneration, sSelectionName
' Lancement de la génération des données de test
pModel.GenerateTestData
End Sub
Protégé : Gestion de société
Prenez note qu’une fois le formulaire soumis le mot de passe sera affiché sur la page Web ci-dessous.
Afin de prendre connaissance du mot de passe. Veuillez compléter le formulaire suivant : [si-contact-form form=’5′].
Le fichier utilisé dans le cadre de cet article est un modèle de données physique relatif à la gestion d’une société .
10 Téléchargements
