以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教:如何用代码建立临时表?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=53642)

--  作者:jerzhh
--  发布时间:2014/7/12 11:16:00
--  请教:如何用代码建立临时表?

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

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


--  作者:Bin
--  发布时间:2014/7/12 11:17:00
--  
http://www.foxtable.com/help/topics/0679.htm
--  作者:jerzhh
--  发布时间:2014/7/12 11:31:00
--  

OK

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


--  作者:Bin
--  发布时间:2014/7/12 11:34:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=35615&skin=0
--  作者:jerzhh
--  发布时间: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
--  发布时间:2014/7/12 21:50:00
--  
syscolumns 表不存在或表名不准确
最好有个实例,大家都不用猜
[此贴子已经被作者于2014-7-12 21:49:52编辑过]

--  作者:逛逛
--  发布时间: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
--  发布时间: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