1、基础样例表和数据

Excel数据表,样例中有两个sheet。样表及数据如下:

sheet1=>

主题域 表注释 表英文名称 表中文名称 列名 列中文名称 列注释 数据类型 主键 是否为空 默认值
协议   order_info 订单信息表 STATIS_DATE 统计时间   varchar2(100)      
    order_info 订单信息表 ORDR_GUID 订单GUID   varchar2(101) Y    
    order_info 订单信息表 CO_CD 公司代码   varchar2(102)      
    order_info 订单信息表 CO_NAME 公司名称   varchar2(103)      
    order_info 订单信息表 SERV_ORDR_NO 服务订单号   varchar2(104)      
    order_info 订单信息表 OMS_ORDR_NO OMS行订单号   varchar2(105)      
    order_info 订单信息表 ORDR_TYPE 订单类型   varchar2(106)      
    order_info 订单信息表 SERV_ORG 服务组织   varchar2(107)      
    order_info 订单信息表 QA_FLG 质保标识   varchar2(108)      
协议   personnel 人员信息表 STATIS_DATE 统计时间   VARCHAR(14)      
    personnel 人员信息表 CLIENT 客户端    VARCHAR(9) Y    
    personnel 人员信息表 PARTNER 业务合作伙伴标识   VARCHAR(30)      
    personnel 人员信息表 BEGDA 开始日期    VARCHAR(14))      
    personnel 人员信息表 ENDDA 结束日期   VARCHAR(14))      
    personnel 人员信息表 BUKRS 公司代码   VARCHAR(12)      

sheet2=>

主题域 表注释 表英文名称 表中文名称 列名 列中文名称 列注释 数据类型 主键 是否为空 默认值
交易   deal_hurry 交易流水表 STATIS_DATE 统计时间   date      
  deal_hurry 交易流水表 ORDR_GUID 订单GUID   varchar2(101) Y    
  deal_hurry 交易流水表 CO_CD 公司代码   int   Y 1000
  deal_hurry 交易流水表 CO_NAME 公司名称   varchar2(103)      
  deal_hurry 交易流水表 SERV_ORDR_NO 服务订单号   varchar2(104)      
  deal_hurry 交易流水表 OMS_ORDR_NO OMS行订单号   number(22,3)      
  deal_hurry 交易流水表 ORDR_TYPE 订单类型   varchar2(106)      
  deal_hurry 交易流水表 SERV_ORG 服务组织   varchar2(107)      
  deal_hurry 交易流水表 QA_FLG 质保标识   varchar2(108)      
交易   person 人员表 STATIS_DATE 统计时间   date      
  person 人员表 CLIENT 客户端    VARCHAR(9) Y    
  person 人员表 PARTNER 业务合作伙伴标识   VARCHAR(30)      
  person 人员表 BEGDA 开始日期    date   Y  
  person 人员表 ENDDA 结束日期   date   Y  
  person 人员表 BUKRS 公司代码   int      

截图=>

2、Excel导入到PDM的脚本

Import_PDM_From_Excel.vbs

'******************************************************************************
'* Purpose:  从Excel中读取信息创建PDM模型
'* Title:
'* Category: 创建
'* Author:   nisj
'* Created:  2015年7月31日
'* Modified:
'* Use:      打开PDM,创建新的PDM,运行本脚本(Ctrl+Shift+X)
'*           Excel 格式要求
'*           MODEL Sheet
'*           |A     |B          |C          |D          |E      |F          |G          |H        |I    |J        |K      |
'*           主题域 |表注释 |表英文名称 |表中文名称 |列名   |列中文名称 |列注释 |数据类型 |主键 |是否为空 |默认值 |
'* Version:  1.0
'* Comment:
'******************************************************************************
Option Explicit
' Model sheet中的列信息
CONST CELL_A="A" '主题域(Pachage)
CONST CELL_B="B" '表注释
CONST CELL_C="C" '表英文名称
CONST CELL_D="D" '表中文名称
CONST CELL_E="E" '列名
CONST CELL_F="F" '列中文名称
CONST CELL_G="G" '列注释
CONST CELL_H="H" '数据类型
CONST CELL_I="I" '是否主键
CONST CELL_J="J" '是否可空
CONST CELL_K="K" '默认值
CONST str_iskey="Y"
'表的所属者
CONST str_username="srv"
CONST isclear_columns = true  '是否先删除表的所有列,如果是false则不会删除excel中没有的列,如果是true,则会重新创建相应表的所有列
' get the current active model
DIM mdl ' 定义当前的模型
SET mdl = ActiveModel '通过全局参数获得当前的模型
IF (mdl IS NOTHING) THEN
MsgBox "没有选择模型,请选择一个模型并打开"
ELSEIF NOT mdl.IsKindOf(PdPDM.cls_Model) THEN
MsgBox "当前选择的不是一个物理模型(PDM)."
ELSE
'选择需要导入的Excel文件
' 打开Excel
DIM xlApp   '定义Excel对象
SET xlApp  = CreateObject("Excel.Application")
xlApp.DisplayAlerts = FALSE
DIM xlBook  '定义Excel Sheet
SET xlBook = xlApp.WorkBooks.Open("F:\model\model_import.xlsx")
xlApp.Visible = TRUE
output "开始从Excel创建模型"
Create_From_Excel(xlBook)
output "模型创建完成,开始关闭Excel"
SET xlBook=NOTHING
xlApp.Quit
SET xlApp=NOTHING
END IF
PRIVATE SUB Create_From_Excel(xlBook)
DIM xlsheet
DIM rowcount
dim pkg
FOR EACH xlsheet IN xlBook.WORKSHEETS
rowcount = xlsheet.UsedRange.Cells.Rows.Count
output "本Excel["+xlsheet.name+"]共有行数为:"+CSTR(rowcount)
IF rowcount>1 THEN
SET pkg = CreateOrReplacePackageByName( xlsheet.name , mdl)
Create_Model_From_Excel xlsheet,pkg
SET xlsheet=NOTHING
END IF
NEXT
END SUB
'--------------------------------------------------------------------------------
'功能函数
'--------------------------------------------------------------------------------
PRIVATE SUB Create_Model_From_Excel(xlsheet,package)
DIM Tab '定义数据表对象
DIM col
DIM tabcode
DIM tabcode1
DIM i
DIM col_code
FOR i=2 TO xlsheet.UsedRange.Cells.Rows.Count
'判断是否需要创建新表对象
tabcode1 = xlsheet.Range(CELL_C+CSTR(i)).Value
IF tabcode1<>"" and tabcode<>tabcode1 THEN
SET Tab=NOTHING
tabcode=tabcode1
IF tabcode<>"" THEN
'判断表是否存在,如果不存在则创建,存在则直接返回表对象
SET tab = CreateOrReplaceTableByCode(tabcode,package)
'将表的所有列删除,如果需要重新创建表的列
IF isclear_columns THEN
DeleteTableColumns(tab)
END IF
'更新表的属性
Tab.code=xlsheet.Range(CELL_C+CSTR(i)).Value
Tab.name=xlsheet.Range(CELL_D+CSTR(i)).Value
Tab.comment=xlsheet.Range(CELL_D+CSTR(i)).Value
Tab.Description=xlsheet.Range(CELL_B+CSTR(i)).Value '注释
'Tab.owner=FindUserByName(str_username)
output "创建表模型OK:"+Tab.code+"——"+Tab.name
END IF
END IF
IF NOT(Tab IS NOTHING) THEN '创建表的列
col_code=xlsheet.Range(CELL_E+CSTR(i)).Value '列代码
'判断是否已经存在列,不存在则创建
SET col = CreateOrReplaceColumnByCode(col_code,Tab)
'设置列属性
col.code=xlsheet.Range(CELL_E+CSTR(i)).Value '列代码
col.name=xlsheet.Range(CELL_F+CSTR(i)).Value '列名称
col.comment=xlsheet.Range(CELL_F+CSTR(i)).Value '列注释
col.Description=xlsheet.Range(CELL_G+CSTR(i)).Value '列注释
col.DataType=xlsheet.Range(CELL_H+CSTR(i)).Value '列数据类型
'列是否主键,如果是主键,则输出 Y
IF CSTR(xlsheet.Range(CELL_I+CSTR(i)).Value)=str_iskey THEN
col.primary= TRUE
END IF
output "更新表模型的列OK:"+Tab.code+"——"+col.code+"--"+col.name
END IF
NEXT
END SUB
'--------------------------------------------------------------------------------
'功能函数
'--------------------------------------------------------------------------------
PRIVATE FUNCTION CreateOrReplacePackageByName(name,model)
DIM pkg 'Table 对象
SET pkg = FindPackageByName(name,model)
IF pkg IS NOTHING THEN
SET pkg = model.Packages.CreateNew()
pkg.SetNameAndCode name, name
pkg.PhysicalDiagrams.Item(0).SetNameAndCode name, name
END IF
SET CreateOrReplacePackageByName = pkg
END FUNCTION
PRIVATE FUNCTION CreateOrReplaceTableByCode(code,package)
DIM tab 'Table 对象
SET tab = FindTableByCode(code,package)
IF tab IS NOTHING THEN
SET tab = package.Tables.CreateNew()
tab.SetNameAndCode code, code
END IF
SET CreateOrReplaceTableByCode = tab
END FUNCTION
PRIVATE FUNCTION CreateOrReplaceColumnByCode(code,table)
DIM col 'Table 对象
SET col =FindColumnByCode(code,table)
IF col IS NOTHING THEN
SET col =table.Columns.CreateNew
col.SetNameAndCode code , code
END IF
SET CreateOrReplaceColumnByCode = col
END FUNCTION
PRIVATE FUNCTION FindPackageByName(name,model)
DIM pkg 'Table 对象
SET FindPackageByName = NOTHING
FOR EACH pkg IN model.Packages
IF NOT pkg.isShortcut THEN
IF pkg.name =name THEN
SET FindPackageByName=pkg
Exit FOR
END IF
END IF
NEXT
END FUNCTION
PRIVATE FUNCTION FindTableByName(name,package)
DIM Tab1 'Table 对象
SET FindTableByName = NOTHING
FOR EACH Tab1 IN package.Tables
IF NOT Tab1.isShortcut THEN
IF Tab1.name =name THEN
SET FindTableByName=Tab1
Exit FOR
END IF
END IF
NEXT
END FUNCTION
PRIVATE FUNCTION FindTableByCode(code,package)
DIM Tab1 'Table 对象
SET FindTableByCode = NOTHING
FOR EACH Tab1 IN package.Tables
IF NOT Tab1.isShortcut THEN
'OUTPUT "循环表:"+Tab1.name
IF Tab1.code =code THEN
SET FindTableByCode=Tab1
Exit FOR
END IF
END IF
NEXT
END FUNCTION
PRIVATE FUNCTION FindColumnByCode(code,tabobj)
DIM col1 'Column 对象
'OUTPUT "code:"+code
SET FindColumnByCode = NOTHING
FOR EACH col1 IN tabobj.Columns
'OUTPUT "code2:"+col1.code
IF col1.code =code THEN
SET FindColumnByCode=col1
EXIT FOR
END IF
NEXT
END FUNCTION
PRIVATE FUNCTION FindColumnByName(name,tabobj)
DIM col1 'Column 对象
'OUTPUT "codename:"+name
SET FindColumnByName = NOTHING
FOR EACH col1 IN tabobj.Columns
IF col1.name =name THEN
SET FindColumnByName=col1
EXIT FOR
END IF
NEXT
END FUNCTION
PRIVATE FUNCTION FindDomainByName(dmname,mdl)
DIM dm1 'Domain 对象
SET FindDomainByName = NOTHING
FOR EACH dm1 IN mdl.domains
IF NOT dm1.isShortcut THEN
IF dm1.name =dmname THEN
SET FindDomainByName =dm1
EXIT FOR
END IF
END IF
NEXT
END FUNCTION
PRIVATE FUNCTION FindUserByName(username)
DIM user1
SET FindUserByName = NOTHING
FOR EACH user1 IN mdl.users
IF user1.name=username THEN
SET FindUserByName=user1
EXIT FOR
END IF
NEXT
END FUNCTION
' 删除表的所有列
PRIVATE SUB DeleteTableColumns(table)
IF NOT table.isShortcut THEN
DIM col
FOR EACH col IN table.columns
'output "Column deleted :"+table.name
col.Delete
SET col = NOTHING
NEXT
END IF
END SUB

3、PDM导出成EXCEL的脚本

Export_PDM_To_Excel.vbs

'******************************************************************************
'* File:     Export_model_to_excel.vbs
'* Purpose:  将模型Table等对象的描述信息导出到Excel中
'* Title:
'* Category: Export
'* Author:   nisj
'* Created:  2015年7月31日
'* Modified:
'* Use:      打开PDM,创建新的PDM,运行本脚本(Ctrl+Shift+X)
'*           Excel 格式为
'*           MODEL Sheet
'*           |A     |B          |C          |D          |E      |F          |G          |H        |I    |J        |K      |
'*           主题域 |表注释 |表英文名称 |表中文名称 |列名   |列中文名称 |列注释 |数据类型 |主键 |是否为空 |默认值 |
'* Version:  1.0
'* Comment:
'******************************************************************************
Option Explicit
' Model sheet中的列信息
CONST CELL_A="A" '主题域(Pachage)
CONST CELL_B="B" '表注释
CONST CELL_C="C" '表英文名称
CONST CELL_D="D" '表中文名称
CONST CELL_E="E" '列名
CONST CELL_F="F" '列中文名称
CONST CELL_G="G" '列注释
CONST CELL_H="H" '数据类型
CONST CELL_I="I" '是否主键
CONST CELL_J="J" '是否可空
CONST CELL_K="K" '默认值
CONST str_iskey="Y"
DIM nb
'
' get the current active model
'
DIM mdl ' the current model
SET mdl = ActiveModel
IF (mdl IS NOTHING) THEN
MsgBox "没有选择一个Model"
END IF
DIM fldr
SET Fldr = ActiveDiagram.Parent
DIM isMerage '是否需要合并表名称单元格
DIM isMulite '是否不同的Package不同的sheet
DIM RQ
RQ = MsgBox ("是否不同的Package不同的sheet?", vbYesNo + vbInformation,"确认")
IF RQ= VbYes THEN
isMulite= TRUE
ELSE
isMulite= FALSE
END IF
' 创建新的Excel
DIM x1  '
SET x1 = CreateObject("Excel.Application")
x1.Workbooks.Add
x1.Visible = TRUE
ExportModelToExcel( fldr)
MsgBox "成功将 Models 导出到Excel中!"
'--------------------------------------------------------------------------------
'功能函数:将模型导出到Sheet页【 MODEL 】
'--------------------------------------------------------------------------------
PRIVATE FUNCTION ExportModelToExcel(folder)
'如果是每个package导出到不同的sheet页面,则采用folder的名称作为sheet页名称,否则使用"MODEL"作为sheet页名称
IF isMulite THEN
IF folder.Tables.count>0 THEN
AddExcelSheet(folder.name)
END IF
ELSE
AddExcelSheet("MODEL")
END IF
'写sheet页的第一行表头
WriteExcelModelHead
DIM nStart
DIM nEnd
DIM tabobj '定义数据表对象
nb=2
isMerage=TRUE
'开始循环处理所有的folder
FOR EACH tabobj IN folder.Tables
IF NOT tabobj.isShortcut THEN '快捷方式不处理
'合并表的单元格A、B、C
IF isMerage THEN  '合并表的单元格A、B、C
nStart=nb '合并起始行
nEnd=nb+tabobj.Columns.count-1 '合并结束行
IF nStart<>nEnd THEN
'合并单元格
x1.Range(CELL_A+CSTR(nStart)+":"+CELL_A+CSTR(nEnd)).SELECT
x1.Selection.Merge
x1.Range(CELL_B+CSTR(nStart)+":"+CELL_B+CSTR(nEnd)).SELECT
x1.Selection.Merge
END IF
'将主题域、表名称、表注释填写到合并后单元格中
x1.Range(CELL_A+CSTR(nb)).Value = folder.name   '主题域
x1.Range(CELL_B+CSTR(nb)).Value = Rtf2Ascii(tabobj.description)   '表注释
END IF
'开始循环列兵输出信息
DIM colobj '定义列对象
FOR EACH colobj IN tabobj.Columns
'写表的信息
x1.Range(CELL_C+CSTR(nb)).Value = tabobj.code    '表英文名称
x1.Range(CELL_D+CSTR(nb)).Value = tabobj.name    '表英文名称
'写列的信息
x1.Range(CELL_E+CSTR(nb)).Value = colobj.code    '列名
x1.Range(CELL_F+CSTR(nb)).Value = colobj.name    '列中文名称
x1.Range(CELL_G+CSTR(nb)).Value = Rtf2Ascii(colobj.Description) '列注释
x1.Range(CELL_H+CSTR(nb)).Value = colobj.DataType    '数据类型
'列是否主键,如果是主键,则输出 Y
IF colobj.primary THEN
x1.Range(CELL_I+CSTR(nb)).Value = "Y"
END IF
nb = nb+1  '行号加1
NEXT
END IF
NEXT
'对子包进行递归,如果不使用递归只能取到第一个模型图内的表
DIM subfolder
FOR EACH subfolder IN folder.Packages
ExportModelToExcel(subfolder)
NEXT
END FUNCTION
'--------------------------------------------------------------------------------
'功能函数:添加一个Sheet页
'--------------------------------------------------------------------------------
PRIVATE SUB AddExcelSheet(sheetname)
x1.Sheets.Add
x1.ActiveSheet.Name=sheetname
END SUB
'--------------------------------------------------------------------------------
'功能函数:写Excel的第一行信息
'--------------------------------------------------------------------------------
PRIVATE SUB WriteExcelModelHead()
x1.Range(CELL_A+"1").Value = "主题域"
x1.Range(CELL_B+"1").Value = "表注释"
x1.Range(CELL_C+"1").Value = "表英文名称"
x1.Range(CELL_D+"1").Value = "表中文名称"
x1.Range(CELL_E+"1").Value = "列名"
x1.Range(CELL_F+"1").Value = "列中文名称"
x1.Range(CELL_G+"1").Value = "列注释"
x1.Range(CELL_H+"1").Value = "数据类型"
x1.Range(CELL_I+"1").Value = "主键"
x1.Range(CELL_J+"1").Value = "是否为空"
x1.Range(CELL_K+"1").Value = "默认值"
'设置字体
x1.Columns(CELL_A+":"+CELL_K).SELECT
WITH x1.Selection.Font
.Name = "宋体"
.Size = 10
END WITH
'设置首行可过滤,背景颜色为灰色,字体粗体
x1.Range(CELL_A+"1:"+CELL_K+"1").SELECT
x1.Selection.AutoFilter
x1.Selection.Interior.ColorIndex = 15
x1.Selection.Font.Bold = TRUE
'设定首行固定
x1.Range(CELL_A+"2").SELECT
x1.ActiveWindow.FreezePanes = TRUE
END SUB

4、Excel直接生成建库脚本的VB

在Excel中,主要通过如下的菜单找到写宏执行宏的地方:

文件-->选项-->自定义功能区-->自定义功能区(主选项卡)-->勾选"开发工具";然后到开发工具主菜单中,开发工具-->宏-->进行新建和执行。

From_Excel_model_generate_sql.txt

Sub create_all_sheet_sql()
Dim xlsheet
For Each xlsheet In ThisWorkbook.Worksheets
Create_SQL xlsheet.Name, "F:\model\"
Next
End Sub
Sub Create_SQL(sheetName, outputPath)
Dim strPath As String
Dim RowCount As Integer
Dim xlsheet_src
Dim strSQL As String
Dim hasCreat As Integer
Dim strTable1 As String
Dim strTable As String
Dim strTableComm As String
Dim strField As String
Dim strFieldComm As String
Dim strType As String
Dim strKey As String
' 请根据实际情况修改下面3个值
'sheetName = "1-核心表"  '要生成SQL的Sheet页的名称
strPath = outputPath + sheetName + ".sql" '"d:\2001.sql"    '生成的SQL文件
Set xlsheet_src = ThisWorkbook.Worksheets(sheetName)
RowCount = xlsheet_src.UsedRange.Cells.Rows.Count '得到此Sheet的行数
hasCreat = 0
'生成表的建表语句
For i = 2 To RowCount + 1
strTable1 = xlsheet_src.Range("C" + CStr(i)).Value
If strTable <> strTable1 Then
If hasCreat = 1 Then
strSQL = ");"
ret = sWriteFile(strSQL, strPath)
strSQL = ""
hasCreat = 0
End If
strTable = strTable1
If (strTable <> "") Then
strTableComm = xlsheet_src.Range("D" + CStr(i)).Value
strSQL = "DROP TABLE " & strTable & ";" & vbCrLf & "CREATE TABLE " & strTable & "( " & " -- " & strTableComm
ret = sWriteFile("", strPath)
ret = sWriteFile(strSQL, strPath)
intRow = 1
hasCreat = 1
End If
End If
If strTable <> "" Then
strField = xlsheet_src.Range("E" + CStr(i)).Value
strFieldComm = xlsheet_src.Range("F" + CStr(i)).Value
strType = xlsheet_src.Range("H" + CStr(i)).Value
If strField <> "" Then
If intRow = 1 Then
strSQL = "    " & strField & " " & strType & " -- " & strFieldComm
Else
strSQL = "   ," & strField & " " & strType & " -- " & strFieldComm
End If
ret = sWriteFile(strSQL, strPath)
intRow = intRow + 1
End If
End If
Next
'生成表的comment语句
For i = 2 To RowCount
strTable1 = xlsheet_src.Range("C" + CStr(i)).Value
If strTable1 <> "" Then
If strTable <> strTable1 Then
strTable = strTable1
strTableComm = xlsheet_src.Range("D" + CStr(i)).Value
strSQL = "comment on table " & strTable & " is '" & strTableComm & "';"
ret = sWriteFile("", strPath)
ret = sWriteFile(strSQL, strPath)
intRow = 1
hasCreat = 1
End If
End If
If strTable <> "" Then
strField = xlsheet_src.Range("E" + CStr(i)).Value
strFieldComm = xlsheet_src.Range("F" + CStr(i)).Value
strType = xlsheet_src.Range("H" + CStr(i)).Value
If strField <> "" Then
strSQL = "comment on column " & strTable & "." & strField & " is '" & strFieldComm & "';"
ret = sWriteFile(strSQL, strPath)
intRow = intRow + 1
End If
End If
Next
End Sub
Function sWriteFile(strSQL As String, strFullFileName As String)
Dim intFileNum As String
intFileNum = FreeFile
Open strFullFileName For Append As #intFileNum
Print #intFileNum, strSQL
Close #intFileNum
End Function

PDM与Excel利用VB脚本进行互导相关推荐

  1. 利用VB脚本来设置Windows计划任务

    利用VB脚本来设置计划任务 Dim IE Set IE = CreateObject("InternetExplorer.Application") ie.navigate(&qu ...

  2. 一种切实可行的后台执行脚本方法——利用VB脚本隐藏CMD命令窗口

    笔者有该需求,运行批处理命令文件,希望其能够后台执行,而不是显示输出日志信息后关闭窗口时进程就被杀死了. 利用VB脚本相当简单地实现该需求. 新建launch_bat.vbs文件 将下述代码赋值到文件 ...

  3. 利用VB 脚本实现TIA 中界面循环计数的功能

    最近在做一个德国的项目,拿到的实例程序里的HMI程序的写法很新颖,故开一个片来展开对TIA的界面的高级写法的学习. 定个连续日更一个月的项目小目标 第一个是简单的实现循环的例子. 1- 首先在界面上拖 ...

  4. vb 修改sql数据库服务器时间格式,博途使用小结:用VB脚本向SQL数据库中写数据的方法...

    刚刚学会在博途中利用VB脚本向SQL数据库写数据,将经验总结为一篇短文供大家讨论,文中包括如何建立SQL数据库及表格,如何写脚本以及如何触发脚本. 1.安装TIA时,SQL Server Manage ...

  5. excel vb脚本

    Excel VB脚本是指使用Visual Basic语言在Excel中编写的脚本.通过使用Excel VB脚本,可以在Excel中自动执行重复性的任务,并利用Excel的强大功能来分析和处理数据. E ...

  6. 利用C#脚本来处理Excel

    废不多,直入正题. 所需环境:安装了Windows操作系统和Office软件的电脑一台. 开发语言:C# 开发需求:1.利用C#脚本读取Excel .xlsx文件 2.将程序中的数据存储到.csv文件 ...

  7. Android手机上,利用bat脚本模拟用户操作

    大家可能会遇到这样的情景: #  也许你是一个通过App的销售人员,需要不断靠App的点击率来拿利润 #  也许你是一个个人开发者,想要自己写个脚本点击banner广告 #  也许你是一个业务经理,你 ...

  8. 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库

    转载原文: 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库 问题提出 蛙蛙求助:以编程的方式还原sqlserver数据库问题 我有一 ...

  9. excel 中vb组合框_Excel数据验证组合框代码

    excel 中vb组合框 Instead of selecting a product code in an Excel drop down list, it's usually easier to ...

最新文章

  1. linux下从git获取有权限的代码,linux下从源代码安装git
  2. java 继承 重载_java – 使用继承的重载方法
  3. 图解SSL和加密解密-原理篇
  4. matlab控工大作业,哈工大现代控制理论matlab极点配置作业
  5. laravel中的form表单提交
  6. B Convex Polygon
  7. vim配置之目录结构
  8. python的内存模型
  9. JS工具对象 DATE 方法
  10. dojo省份地市级联之省份封装类(一)
  11. 前端预览PDF总结:iframe、embed、PDFObject、PDF.js
  12. 网络限速软件测试大乐,宽带测速谁靠谱?网速测试软件大对比
  13. 重归理性 国内SOA平台期待价值提升
  14. 怎样自学3D建模?能学会吗?
  15. 教你用arduino控制LCD1602液晶屏的底层程序实现(全网最笨的方法)
  16. 医院基本流程-挂号收费
  17. Java分布式中文分词组件 - word分词(转自 https //github com/ysc/word)
  18. 幼儿园科学教案计算机,幼儿园大班科学教案_大班科学教案_幼教网
  19. 部署CentOS可视化界面GUI-之腾讯云服务器
  20. mac 时间机器备份到windows共享文件遇到的问题及解决记录

热门文章

  1. js 全屏移动漂浮框广告栏(3w)
  2. 新版LinuxLinus Torvalds发布
  3. JS的onload事件
  4. 脸上用激光手术点完痦子之后出现疤痕增生怎么处理比较好
  5. thinkphp 实现汉字转换成拼音
  6. 【机器视觉】Halcon 18安装教程
  7. ORA-39097:Data Pump job encountered unexpected error 06502
  8. 中国联通沃云----弹性云主机使用说明
  9. H5前端性能测试点及优化方法
  10. Android耗电原理及飞书耗电治理