Foxtable(狐表)用户栏目专家坐堂 → 能否这样动态创建表


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

主题:能否这样动态创建表

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


加好友 发短信
等级:小狐 帖子:359 积分:3403 威望:0 精华:0 注册:2011/8/2 20:53:00
能否这样动态创建表  发帖心情 Post By:2011/9/8 23:55:00 [只看该作者]

表A中,有‘节点’和'名称'列,

 

'节点'列的数据如下:0、1;希望通过点击按钮,实现:以节点为0的名称作表名,以节点为1的名称为列名;

备注:点击创建表以后,表A的数据清空

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:请教.table


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/9 [只看该作者]

肯定可以。

不过节点列的数据得换换,因为狐表是不支持纯数字的表名的。


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


加好友 发短信
等级:小狐 帖子:359 积分:3403 威望:0 精华:0 注册:2011/8/2 20:53:00
  发帖心情 Post By:2011/9/9 0:02:00 [只看该作者]

节点只是用来作为表名的的依据,如表中的节点为0的(对应的)名称做表名。

节点为1的名称做列名。

 

 

麻烦你帮我做一下这个例子可以吗》?


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/9 0:05:00 [只看该作者]

这里有现成的例子,原理差不多,可参考。

 

http://www.datasoft.com.cn/dispbbs.asp?boardid=2&id=7936&authorid=0&page=0&star=1

 

 

 

 


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/9 0:06:00 [只看该作者]

以下是引用kevin在2011-9-9 0:02:00的发言:

节点只是用来作为表名的的依据,如表中的节点为0的(对应的)名称做表名。

节点为1的名称做列名。

 

 

麻烦你帮我做一下这个例子可以吗》?

 

一样的,狐表同样不支持纯数字做为列名。


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


加好友 发短信
等级:小狐 帖子:359 积分:3403 威望:0 精华:0 注册:2011/8/2 20:53:00
  发帖心情 Post By:2011/9/9 0:09:00 [只看该作者]

我有下载,但是我的表需要加上条件:节点为0 的做表名,节点为1的做列名。

这个我做不来,还请老师帮忙一下,对了,我忘记加上字符长度的列了,呵呵


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/9 0:34:00 [只看该作者]

稍做了下修改。

唯一的缺憾是GetUniqueValues没有排序功能,所创建的列顺序会打乱。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目40.table


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/9 0:49:00 [只看该作者]

改成这样吧。

 

Dim dr As DataRow = DataTables("基础设置").Find("节点 = 0")
Dim Name As String
If dr IsNot Nothing Then
    Name = dr("名称")
Else
    MessageBox.Show("未设置表名称!")
    Return
End If
For Each dt As DataTable In DataTables
    If dt.Name.Contains(Name) Then
        MessageBox.Show(Name & "表已经存在,不能重复创建!")
        Return
    End If
Next
Dim drs As List(Of DataRow) = DataTables("基础设置").Select("[名称] <> '" & Name & "'","_Identify")
Dim Builder As New ADOXBuilder
Builder.Open()
Dim tbl As ADOXTable = Builder.NewTable(Name)

For Each r As DataRow In drs
    If r.IsNull("字符长度") Then
        tbl.AddColumn(r("名称"),r("数据类型"))
    Else
        tbl.AddColumn(r("名称"),r("数据类型"),r("字符长度"))
    End If
Next
Builder.AddTable(tbl)
Builder.Close()
syscmd.Project.Open(ProjectFile)
MainTable = Tables(Name)


 回到顶部
帅哥哟,离线,有人找我吗?
涛声依旧5666
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:2193 威望:0 精华:0 注册:2011/6/28 16:50:00
  发帖心情 Post By:2011/9/12 14:45:00 [只看该作者]

For Each dt As DataTable In DataTables
If dt.Name.Contains(Name) Then
MessageBox.Show(Name & "表已经存在,不能重复创建!")
Return
End If
Next
 

改成以下代码更好:

 

If  DataTables.Contains(Name) Then
        MessageBox.Show(Name & "表已经存在,不能重复创建!")
        Return
End If


 回到顶部