<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          PowerDesigner一鍵導(dǎo)出數(shù)據(jù)庫設(shè)計表結(jié)構(gòu)

          共 6279字,需瀏覽 13分鐘

           ·

          2021-04-07 17:15

          1、背景

          幫朋友弄下數(shù)據(jù)庫設(shè)計,又用到PowerDesigner,因為還要數(shù)據(jù)庫設(shè)計文檔(word),還想著怎么把數(shù)據(jù)庫結(jié)構(gòu)導(dǎo)出呢,發(fā)現(xiàn)以前弄過,一鍵導(dǎo)出,很方便,分享下,祝好運!

          2、解決方案

          2.1 執(zhí)行窗口

          依次點擊,Tools->Execute Commands ->Edit/Run Script

          fd2c300540c00ef7ee94215678d56fe5.webp

          2.2 執(zhí)行腳本

          第一次執(zhí)行,復(fù)制腳本到空白編輯處,點擊三角執(zhí)行按鈕就可以了,執(zhí)行完成后可以保存腳本,以便下次用,下次直接打開文件執(zhí)行就可以了。

          1d6a8e93765047eb701eae888055d3e0.webp

          2.3 ?執(zhí)行效果

          (1)點擊執(zhí)行后,會首先生成臨時excel文件。

          7739411e036b4964bb2cd99f159297f4.webp

          (2)打開excel后,有兩個sheet,一個sheet是表目錄,內(nèi)容為全部表名稱及鏈接;一個sheet所有表結(jié)構(gòu)信息;

          e77855102bcd8aa0cf7c0a58675510b3.webp4b5725a55e03424704b918fb7ab05e61.webp

          2.4 腳本

          '******************************************************************************
          Option?Explicit
          ???Dim?rowsNum
          ???rowsNum?=?0
          '
          -----------------------------------------------------------------------------
          '?Main?function
          '
          -----------------------------------------------------------------------------
          '?Get?the?current?active?model
          ????Dim?Model
          ????Set?Model?=?ActiveModel
          ????If?(Model?Is?Nothing)?Or?(Not?Model.IsKindOf(PdPDM.cls_Model))?Then
          ???????MsgBox?"The?current?model?is?not?an?PDM?model."
          ????Else
          ??????'
          ?Get?the?tables?collection
          ??????'創(chuàng)建EXCEL?APP
          ??????dim?beginrow
          ??????DIM?EXCEL,?SHEET,?SHEETLIST
          ??????set?EXCEL?=?CREATEOBJECT("Excel.Application")
          ??????EXCEL.workbooks.add(-4167)'
          添加工作表
          ??????EXCEL.workbooks(1).sheets(1).name?="表結(jié)構(gòu)"
          ??????set?SHEET?=?EXCEL.workbooks(1).sheets("表結(jié)構(gòu)")
          ??????
          ??????EXCEL.workbooks(1).sheets.add
          ??????EXCEL.workbooks(1).sheets(1).name?="目錄"
          ??????set?SHEETLIST?=?EXCEL.workbooks(1).sheets("目錄")
          ??????ShowTableList?Model,SHEETLIST

          ??????ShowProperties?Model,?SHEET,SHEETLIST
          ??????
          ??????
          ??????EXCEL.workbooks(1).Sheets(2).Select
          ??????EXCEL.visible?=?true
          ??????'設(shè)置列寬和自動換行
          ??????sheet.Columns(1).ColumnWidth?=?20?
          ??????sheet.Columns(2).ColumnWidth?=?20?
          ??????sheet.Columns(3).ColumnWidth?=?20?
          ??????sheet.Columns(4).ColumnWidth?=?40?
          ??????sheet.Columns(5).ColumnWidth?=?10?
          ??????sheet.Columns(6).ColumnWidth?=?10?
          ??????sheet.Columns(1).WrapText?=true
          ??????sheet.Columns(2).WrapText?=true
          ??????sheet.Columns(4).WrapText?=true
          ??????'
          不顯示網(wǎng)格線
          ??????EXCEL.ActiveWindow.DisplayGridlines?=?False
          ??????
          ??????
          ?End?If
          '-----------------------------------------------------------------------------
          '
          ?Show?properties?of?tables
          '-----------------------------------------------------------------------------
          Sub?ShowProperties(mdl,?sheet,SheetList)
          ???'
          ?Show?tables?of?the?current?model/package
          ???rowsNum=0
          ???beginrow?=?rowsNum+1
          ???Dim?rowIndex?
          ???rowIndex=3
          ???'?For?each?table
          ???output?"begin"
          ???Dim?tab
          ???For?Each?tab?In?mdl.tables
          ??????ShowTable?tab,sheet,rowIndex,sheetList
          ??????rowIndex?=?rowIndex?+1
          ???Next
          ???if?mdl.tables.count?>?0?then
          ????????sheet.Range("A"?&?beginrow?+?1?&?":A"?&?rowsNum).Rows.Group
          ???end?if
          ???output?"end"
          End?Sub
          '
          -----------------------------------------------------------------------------
          '?Show?table?properties
          '
          -----------------------------------------------------------------------------
          Sub?ShowTable(tab,?sheet,rowIndex,sheetList)
          ???If?IsObject(tab)?Then
          ?????Dim?rangFlag
          ?????rowsNum?=?rowsNum?+?1
          ??????'?Show?properties
          ??????Output?"================================"
          ??????sheet.cells(rowsNum,?1)?=tab.name
          ??????sheet.cells(rowsNum,?1).HorizontalAlignment=3
          ??????sheet.cells(rowsNum,?2)?=?tab.code
          ??????'
          sheet.cells(rowsNum,?5).HorizontalAlignment=3
          ??????'sheet.cells(rowsNum,?6)?=?""
          ??????'
          sheet.cells(rowsNum,?7)?=?"表說明"
          ??????sheet.cells(rowsNum,?3)?=?tab.comment
          ??????'sheet.cells(rowsNum,?8).HorizontalAlignment=3
          ??????sheet.Range(sheet.cells(rowsNum,?3),sheet.cells(rowsNum,?7)).Merge
          ??????'
          設(shè)置超鏈接,從目錄點擊表名去查看表結(jié)構(gòu)
          ??????'字段中文名????字段英文名????字段類型????注釋????是否主鍵????是否非空????默認值
          ??????sheetList.Hyperlinks.Add?sheetList.cells(rowIndex,2),?"","表結(jié)構(gòu)"&"!B"&rowsNum
          ??????rowsNum?=?rowsNum?+?1
          ??????sheet.cells(rowsNum,?1)?=?"字段中文名"
          ??????sheet.cells(rowsNum,?2)?=?"字段英文名"
          ??????sheet.cells(rowsNum,?3)?=?"字段類型"
          ??????sheet.cells(rowsNum,?4)?=?"注釋"
          ??????sheet.cells(rowsNum,?5)?=?"是否主鍵"
          ??????sheet.cells(rowsNum,?6)?=?"是否非空"
          ??????sheet.cells(rowsNum,?7)?=?"默認值"
          ??????'
          設(shè)置邊框
          ??????sheet.Range(sheet.cells(rowsNum-1,?1),sheet.cells(rowsNum,?7)).Borders.LineStyle?=?"1"
          ??????'sheet.Range(sheet.cells(rowsNum-1,?4),sheet.cells(rowsNum,?9)).Borders.LineStyle?=?"1"
          ??????'
          字體為10號
          ??????sheet.Range(sheet.cells(rowsNum-1,?1),sheet.cells(rowsNum,?7)).Font.Size=10
          ????????????Dim?col?'?running?column
          ????????????Dim?colsNum
          ????????????colsNum?=?0
          ??????for?each?col?in?tab.columns
          ????????rowsNum?=?rowsNum?+?1
          ????????colsNum?=?colsNum?+?1
          ??????????sheet.cells(rowsNum,?1)?=?col.name
          ????????'
          sheet.cells(rowsNum,?3)?=?""
          ??????????'sheet.cells(rowsNum,?4)?=?col.name
          ??????????sheet.cells(rowsNum,?2)?=?col.code
          ??????????sheet.cells(rowsNum,?3)?=?col.datatype
          ????????sheet.cells(rowsNum,?4)?=?col.comment
          ??????????If?col.Primary?=?true?Then
          ????????sheet.cells(rowsNum,?5)?=?"Y"?
          ????????Else
          ????????sheet.cells(rowsNum,?5)?=?"?"?
          ????????End?If
          ????????If?col.Mandatory?=?true?Then
          ????????sheet.cells(rowsNum,?6)?=?"Y"?
          ????????Else
          ????????sheet.cells(rowsNum,?6)?=?"?"?
          ????????End?If
          ????????sheet.cells(rowsNum,?7)?=??col.defaultvalue
          ??????next
          ??????sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle?=?"3"???????
          ??????'
          sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle?=?"3"
          ??????sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size?=?10
          ??????rowsNum?=?rowsNum?+?2
          ??????
          ??????Output?"FullDescription:?"???????+?tab.Name
          ???End?If
          ???
          End?Sub
          '-----------------------------------------------------------------------------
          '
          ?Show?List?Of?Table
          '-----------------------------------------------------------------------------
          Sub?ShowTableList(mdl,?SheetList)
          ???'
          ?Show?tables?of?the?current?model/package
          ???Dim?rowsNo
          ???rowsNo=1
          ???'?For?each?table
          ???output?"begin"
          ???SheetList.cells(rowsNo,?1)?=?"主題"
          ???SheetList.cells(rowsNo,?2)?=?"表中文名"
          ???SheetList.cells(rowsNo,?3)?=?"表英文名"
          ???SheetList.cells(rowsNo,?4)?=?"表說明"
          ???rowsNo?=?rowsNo?+?1
          ???SheetList.cells(rowsNo,?1)?=?mdl.name
          ???Dim?tab
          ???For?Each?tab?In?mdl.tables
          ?????If?IsObject(tab)?Then
          ?????????rowsNo?=?rowsNo?+?1
          ??????SheetList.cells(rowsNo,?1)?=?""
          ??????SheetList.cells(rowsNo,?2)?=?tab.name
          ??????SheetList.cells(rowsNo,?3)?=?tab.code
          ??????SheetList.cells(rowsNo,?4)?=?tab.comment
          ?????End?If
          ???Next
          ????SheetList.Columns(1).ColumnWidth?=?20?
          ??????SheetList.Columns(2).ColumnWidth?=?20?
          ??????SheetList.Columns(3).ColumnWidth?=?30?
          ?????SheetList.Columns(4).ColumnWidth?=?60?
          ???output?"end"
          End?Sub

          更多信息請關(guān)注公眾號:「軟件老王」,關(guān)注不迷路,軟件老王和他的IT朋友們,分享一些他們的技術(shù)見解和生活故事。


          瀏覽 137
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜臀AV在线播放 | 国产无精乱码一区二区三区 | 69免费视频| 黄色A片网址 | 婷婷五月天丁香在线 |