PowerDesigner将Name字段复制到Comment(生成数据库脚本时使用)

使用PowerDesigner生成数据库脚本时,由于设计的时候一般填写的都是Name字段,故Comment字段没有值。而生成数据库脚本时需要备注字段Comment,也就是说我们在生成数据库脚本之前需要将Name中的字符复制至Comment中。我们可以通过执行脚本的形式解决这个问题。

在PowerDesigner中使用方法为:
PowerDesigner->Tools->Execute Commands->Edit/Run Scripts

Name中内容复制到Comment(以Name为准,常用!)

折叠复制代码
  1. Option Explicit
  2. ValidationMode = True
  3. InteractiveMode = im_Batch
  4. Dim mdl 'the current model
  5. 'get the current active model
  6. Set mdl = ActiveModel
  7. If (mdl Is Nothing) Then
  8. MsgBox "There is no current Model"
  9. ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
  10. MsgBox "The current model is not an Physical Data model."
  11. Else
  12. ProcessFolder mdl
  13. End If
  14. 'This routine copy name into code for each table, each column and each view
  15. 'of the current folder
  16. Private sub ProcessFolder(folder)
  17. Dim Tab 'running table
  18. for each Tab in folder.tables
  19. if not tab.isShortcut then
  20. tab.comment = tab.name
  21. Dim col 'running column
  22. for each col in tab.columns
  23. col.comment= col.name
  24. next
  25. end if
  26. next
  27. Dim view 'running view
  28. for each view in folder.Views
  29. if not view.isShortcut then
  30. view.comment = view.name
  31. end if
  32. next
  33. 'go into the sub-packages
  34. Dim f 'running folder
  35. For Each f In folder.Packages
  36. if not f.IsShortcut then
  37. ProcessFolder f
  38. end if
  39. Next
  40. end sub

Name中内容复制到Comment,Comment有值则忽略(即不改变Comment的原有值)

折叠复制代码
  1. Option Explicit
  2. ValidationMode = True
  3. InteractiveMode = im_Batch
  4. Dim mdl 'the current model
  5. 'get the current active model
  6. Set mdl = ActiveModel
  7. If (mdl Is Nothing) Then
  8. MsgBox "There is no current Model"
  9. ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
  10. MsgBox "The current model is not an Physical Data model."
  11. Else
  12. ProcessFolder mdl
  13. End If
  14. 'This routine copy name into code for each table, each column and each view
  15. 'of the current folder
  16. Private sub ProcessFolder(folder)
  17. Dim Tab 'running table
  18. for each Tab in folder.tables
  19. if not tab.isShortcut then
  20. if trim(tab.comment)="" then
  21. tab.comment = tab.name
  22. end if
  23. Dim col 'running column
  24. for each col in tab.columns
  25. if trim(col.comment)="" then
  26. col.comment= col.name
  27. end if
  28. next
  29. end if
  30. next
  31. Dim view 'running view
  32. for each view in folder.Views
  33. if not view.isShortcut and trim(view.comment)="" then
  34. view.comment = view.name
  35. end if
  36. next
  37. 'go into the sub-packages
  38. Dim f 'running folder
  39. For Each f In folder.Packages
  40. if not f.IsShortcut then
  41. ProcessFolder f
  42. end if
  43. Next
  44. end sub

参考资料:https://blog.csdn.net/yl_sunmoon/article/details/128056467


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍