Génération d'une base de données à l'aide de scripts

Lorsque vous devez générer une base de données en utilisant un script, vous pouvez utiliser les méthodes suivantes :

Dans l'exemple ci-après, vous accomplissez les tâches suivantes :

Ouverture d'un modèle existant

Dans l'exemple ci-après, nous commençons par ouvrir un modèle existant (ASA 9) en utilisant la méthode suivante: OpenModel (filename As String, flags As Long =omf_Default) As BaseObject.

N'oubliez pas d'inclure la barre oblique inverse (\) finale dans le répertoire de destination.

Nous allons générer un script de base de données pour le modèle, modifier le modèle, générer un script de données modifié et générer un jeu de données de test en utilisant respectivement les méthodes suivantes :

  • GenerateDatabaseScripts pModel

  • ModifyModel pModel

  • GenerateAlterScripts pModel

  • GenerateTestDataScript pModel

Exemple :

Option Explicit
Const GenDir = "D:\temp\test\"
Const Modelfile = "D:\temp\phys.pdm"
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Start
Sub Start()
   dim pModel : Set pModel = OpenModel(Modelfile)
   If (pModel is Nothing) then
      Output "Unable to open the model"
      Exit Sub
   End if
End Sub

Génération d'un script pour le modèle

Vous générez ensuite un script pour ce modèle dans le dossier défini dans la constante "GenDir" en utilisant la méthode suivante : GenerateDatabase(ByVal ObjectSelection As BaseObject = Nothing).

Tout comme vous le feriez dans une boîte de dialogue de génération, vous devez définir un répertoire de génération ainsi que le nom du fichier sql avant de lancer la génération, comme dans l'exemple suivant.

Exemple :

Sub GenerateDatabaseScripts(pModel)
   Dim pOpts : Set pOpts = pModel.GetPackageOptions()
   InteractiveMode = im_Batch ' Avoid displaying generate window
   ' set generation options using model package options
   pOpts.GenerateODBC = False ' Force sql script generation rather than
   ' ODBC
   pOpts.GenerationPathName = GenDir ' Define generation directory
   pOpts.GenerationScriptName = "script.sql" ' Define sql file name
   pModel.GenerateDatabase ' Launch the Generate Database feature
End Sub

Modification du modèle

Ensuite, vous modifiez le modèle en ajoutant une colonne à chaque table :

Exemple :

Sub ModifyModel(pModel)
   dim pTable, pCol
   ' Add a new column in each table
   For each pTable in pModel.Tables
      Set pCol = pTable.Columns.CreateNew()
      pCol.SetNameAndCode "az" & pTable.Name, "AZ" & pTable.Code
      pCol.Mandatory = False
   Next
End Sub

Génération d'un script de base de données modifié

Avant de générer le script de base de données modifiée, vous devez obtenir les options de package et changer les paramètres de génération, puis vous générez le script de base de données en conséquence.

Pour plus d'informations sur les options de génération, voir BasePhysicalPackageOptions dans le fichier d'aide sur les objets du métamodèle.

Exemple :

Sub GenerateAlterScripts(pModel)
   Dim pOpts : Set pOpts = pModel.GetPackageOptions()
   InteractiveMode = im_Batch ' Avoid displaying generate window
' set generation options using model package options
   pOpts.GenerateODBC = False ' Force sql script generation rather than ODBC
pOpts.GenerationPathName = GenDir
   pOpts.DatabaseSynchronizationChoice = 0 'force already saved apm as source
   pOpts.DatabaseSynchronizationArchive = GenDir & "model.apm"
   pOpts.GenerationScriptName = "alter.sql"
pModel.ModifyDatabase ' Launch the Modify Database feature
End Sub

Génération d'un jeu de données de test

Pour finir, vous générez un jeu de données de test :

Exemple :

Sub GenerateTestDataScript(pModel)
   Dim pOpts : Set pOpts = pModel.GetPackageOptions()
   InteractiveMode = im_Batch ' Avoid displaying generate window
' set generation options using model package options
   pOpts.TestDataGenerationByODBC = False ' Force sql script generation rather than ODBC
   pOpts.TestDataGenerationDeleteOldData = False
pOpts.TestDataGenerationPathName = GenDir
   pOpts.TestDataGenerationScriptName = "Test.sql"
pModel.GenerateTestData ' Launch the Generate Test Data feature
End Sub