Foxtable(狐表)用户栏目专家坐堂 → 怎样用表动态生成数据库结构?


  共有2568人关注过本帖树形打印复制链接

主题:怎样用表动态生成数据库结构?

帅哥哟,离线,有人找我吗?
xongyijd
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:3629 威望:0 精华:1 注册:2010/5/9 18:45:00
怎样用表动态生成数据库结构?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:335 积分:2674 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:3629 威望:0 精华:1 注册:2010/5/9 18:45:00
  发帖心情 Post By:2019/6/16 9:56:00 [只看该作者]

这个列类型就不能从表中提取阈值?


 回到顶部
帅哥哟,离线,有人找我吗?
nxhylczh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:335 积分:2674 威望:0 精华:0 注册:2018/11/22 9:19:00
  发帖心情 Post By:2019/6/16 13:03:00 [只看该作者]

当然可以

 回到顶部
帅哥哟,离线,有人找我吗?
xongyijd
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:3629 威望:0 精华:1 注册:2010/5/9 18:45:00
  发帖心情 Post By:2019/6/17 7:12:00 [只看该作者]

那怎么引用?
tbl.AddColumn(dr("列名称"), dr("数据类型"))
用dr(”数据类型”)显示数据转换无效,怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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()

 回到顶部