以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  怎样用表动态生成数据库结构?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=136565)

--  作者:xongyijd
--  发布时间:2019/6/16 9:09:00
--  怎样用表动态生成数据库结构?
如题,想用表生成外部数据库结构,都不行?还有打开以前开发文件,代码编辑器代码总是显示不全,没有进入编辑器预览是全的,是怎么回事?重新复制都不行
以下是我写的:
Dim Builder As New ADOXBuilder("sjk")
Builder.Open()
Dim tbl As ADOXTable = Builder.NewTable("订单")
For Each dr As DataRow In DataTables("表结构库").DataRows
    tbl.AddColumn(dr("列名称"), dr("数据类型"))
Next
Builder.AddTable(tbl,True,True)
Builder.Close()
syscmd.Project.Open(ProjectFile)
或者:
Dim Builder As New ADOXBuilder("sjk")
Builder.Open()
Dim tbl As ADOXTable = Builder.NewTable("订单")
For Each dr As String() In DataTables("表结构库").GetValues("列名称|数据类型|长度")
 tbl.AddColumn(dr(0),dr(1),dr(2))
Next
Builder.AddTable(tbl,True,True)
Builder.Close()
syscmd.Project.Open(ProjectFile)



图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190616085217.png
图片点击可在新窗口打开查看


--  作者:nxhylczh
--  发布时间:2019/6/16 9:22:00
--  
表里面的数据类型错
改为 ADOXType.String
建议代码这样写
  For Each dr As DataRow DataTables("表结构库").dataRows
        Select Case dr("列类型")
            Case "字符型"
                tbl.AddColumn(dr("列名称") , ADOXType.String, 255)   \'字符型全部设置成255
            Case "日期时间型"
                tbl.AddColumn(dr("列名称") , ADOXType.DateTime)
            Case "整数型"
                tbl.AddColumn(dr("列名称") , ADOXType.Integer)
            Case "逻辑型"
end select
 next
    Builder.AddTable(tbl, True, True)
    Builder.Close()


--  作者:xongyijd
--  发布时间:2019/6/16 9:56:00
--  
这个列类型就不能从表中提取阈值?


--  作者:nxhylczh
--  发布时间:2019/6/16 13:03:00
--  
当然可以
--  作者:xongyijd
--  发布时间:2019/6/17 7:12:00
--  
那怎么引用?
tbl.AddColumn(dr("列名称"), dr("数据类型"))
用dr(”数据类型”)显示数据转换无效,怎么写?

--  作者:有点甜
--  发布时间:2019/6/17 9:03:00
--  
以下是引用xongyijd在2019/6/17 7:12:00的发言:
那怎么引用?
tbl.AddColumn(dr("列名称"), dr("数据类型"))
用dr(”数据类型”)显示数据转换无效,怎么写?

 

不可以直接取,必须向这样处理

 

  For Each dr As DataRow DataTables("表结构库").dataRows
        Select Case dr("数据类型")
            Case "字符型"
                tbl.AddColumn(dr("列名称") , ADOXType.String, 255)   \'字符型全部设置成255
            Case "日期时间型"
                tbl.AddColumn(dr("列名称") , ADOXType.DateTime)
            Case "整数型"
                tbl.AddColumn(dr("列名称") , ADOXType.Integer)
            Case "逻辑型"
end select
 next
    Builder.AddTable(tbl, True, True)
    Builder.Close()