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