Foxtable(狐表)用户栏目专家坐堂 → 请教:如何用代码建立临时表?


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

主题:请教:如何用代码建立临时表?

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


加好友 发短信
等级:幼狐 帖子:166 积分:1467 威望:0 精华:0 注册:2014/3/4 15:30:00
请教:如何用代码建立临时表?  发帖心情 Post By:2014/7/12 11:16:00 [只看该作者]

假如我现在有一张内部数据表 TableA

请问我该如何在项目运行中用代码建立一个类型为 临时表 的空表 TableB, 而且TableB的结构与TableA完全一致?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/7/12 11:17:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:166 积分:1467 威望:0 精华:0 注册:2014/3/4 15:30:00
  发帖心情 Post By:2014/7/12 11:31:00 [只看该作者]

OK

问题是如何获取源表TableA各个列的数据类型呢?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/7/12 11:34:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:166 积分:1467 威望:0 精华:0 注册:2014/3/4 15:30:00
  发帖心情 Post By:2014/7/12 21:04:00 [只看该作者]

以下是引用Bin在2014-7-12 11:34:00的发言:
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=35615&skin=0

 

Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.CommandText = "Select a.name As colname, b.name As typename from syscolumns a,systypes b where a.xusertype=b.xusertype And a.id=object_id('TableA')"
dt = cmd.ExecuteReader()

 

请问是这样吗?

 

在命令窗口运行结果如下:

 

 

 


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

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/7/12 21:50:00 [只看该作者]

syscolumns 表不存在或表名不准确
最好有个实例,大家都不用猜
[此贴子已经被作者于2014-7-12 21:49:52编辑过]

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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/7/12 22:47:00 [只看该作者]

 

如果你的表 TableA 已经加载

 

临时表 用  

Dim dtb As New DataTableBuilder("B")
For Each dc As DataCol In DataTables("A").DataCols
    dtb.AddDef(dc.name,dc.DataType)
Next
dtb.Build

 

窗口表 用

 

Dim tb As Table = e.Form.Controls("Table1").Table
tb.DataSource = DataTables("A").BaseTable.Clone
tb.DataTable.AllowEdit = True

 

 

没有加载,就select 加载一下,再用以上方法


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


加好友 发短信
等级:幼狐 帖子:166 积分:1467 威望:0 精华:0 注册:2014/3/4 15:30:00
  发帖心情 Post By:2014/7/13 9:11:00 [只看该作者]

以下是引用逛逛在2014-7-12 22:47:00的发言:

 

如果你的表 TableA 已经加载

 

临时表 用  

Dim dtb As New DataTableBuilder("B")
For Each dc As DataCol In DataTables("A").DataCols
    dtb.AddDef(dc.name,dc.DataType)
Next
dtb.Build

 

谢谢啦!我要的就是它!

 

我在逛大的基础上稍稍做了点改动,这样就把A表的字符长度也复制过来了。

 

Dim dtb As New DataTableBuilder("B")
For Each dc As DataCol In DataTables("A").DataCols
If dc.IsString Then
    dtb.AddDef(dc.name,dc.DataType,dc.MaxLength)
Else
    dtb.AddDef(dc.name,dc.DataType)
End If
Next
dtb.Build

 


 回到顶部