Powerd911 – Numéro #1 au Canada

Sélection d’une liste pré-configurée afin de lancer la génération d’une base de données…

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 :

  1. 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
  2. Il n’est pas possible de passer en paramètre un jeux de sélection avec des accents.
    Jeux de param accentué

 

 

 

 

 

 

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é .

 

Laisser un commentaire