You can use settings and selections with scripting before starting the database generation using respectively the following methods from the model: UseSettings(ByVal Function As Long, ByVal Name As String = "") As Boolean and UseSelection(ByVal Function As Long, ByVal Name As String = "") As Boolean.
Given the PDM sample (Project.PDM) in the PowerDesigner installation folder, which contains two selections:
The following example shows you how to
Generate a first script of this model for the "Organization" selection using first setting (setting1)
Generate a test data creation script for the tables contained in this selection.
Generate a second script of this model for the "Materials" selection and a test data creation script for the tables it contains using second setting (setting2).
Example:
' Generated sql scripts will be created in 'GenDir' directory ' there names is the name of the used selection with extension ".sql" for DDL scripts ' and extension "_td.sql" for DML scripts (for test data generations). Option Explicit Const GenDir = "D:\temp\test\" Const setting1 = "Tables & Views (with permissions)" Const setting2 = "Triggers & Procedures (with permissions)" Start EvaluateNamedPath("%_EXAMPLES%\project.pdm") Sub Start(sModelPath) on error resume next dim pModel : Set pModel = OpenModel(sModelPath) If (pModel is Nothing) then Output "Unable to open model " & sModelPath Exit Sub End if GenerateDatabaseScripts pModel, "Organization" setting1 GenerateTestDataScript pModel, "Organization" setting1 GenerateDatabaseScripts pModel, "Materials" setting2 GenerateTestDataScript pModel, "Materials" setting2 pModel.Close on error goto 0 End Sub Sub GenerateDatabaseScripts(pModel, sSelectionName, sSettingName) 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.GenerationScriptName = sSelectionName & ".sql" ' Launch the Generate Database feature with selected objects pModel.UseSelection fct_DatabaseGeneration, sSelectionName pModel.UseSetting fct_DatabaseGeneration, sSettingName pModel.GenerateDatabase End Sub Sub GenerateTestDataScript(pModel, sSelectionName) 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 = sSelectionName & "_td.sql" ' Launch the Generate Test Data feature for selected objects pModel.UseSelection fct_TestDataGeneration, sSelectionName pModel.GenerateTestData End Sub
You can create a persistent selection that can be used in database generation by transforming a selection into a persistent selection..
Example:
Option Explicit Dim pActiveModel Set pActiveModel = ActiveModel Dim Selection, PrstSel Set Selection = pActiveModel.createselection Selection.AddActiveSelectionObjects Set PrstSel = Selection.CreatePersistentSelectionManager("test")