以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  老师,如何判断一个表中的列是否为临时列?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=174592)

--  作者:fntfgz
--  发布时间:2022/1/22 10:30:00
--  老师,如何判断一个表中的列是否为临时列?
老师,如何判断一个表中的列是否为临时列?
--  作者:有点蓝
--  发布时间:2022/1/22 11:01:00
--  
方法1、创建临时列的时候使用一个固定的前缀,比如:临_第一列、临_第二列
2、使用SQLcommand返回后台数据库的表,然后比较2个表结构,不存在数据库的,又没有表达式就是临时列

--  作者:fntfgz
--  发布时间:2022/1/23 7:25:00
--  
老师,我用您提供的第二个方法,对一个表手工填加临时列,然后删除,但是总是删除不干净,剩下两个临时列,不是问题出在哪里?
Dim bm As String ="临时表"
If not DataTables(bm).DataCols.Contains("所属表") Then
DataTables(bm).DataCols.Add("所属表", Gettype(String), 200)
End If
If not DataTables(bm).DataCols.Contains("列名") Then
DataTables(bm).DataCols.Add("列名", Gettype(String), 200)
End If
If not DataTables(bm).DataCols.Contains("类型") Then
DataTables(bm).DataCols.Add("类型", Gettype(String), 200)
End If
If not DataTables(bm).DataCols.Contains("长度") Then
DataTables(bm).DataCols.Add("长度", Gettype(String), 200)
End If
If not DataTables(bm).DataCols.Contains("数据源名称") Then
DataTables(bm).DataCols.Add("数据源名称", Gettype(String), 200)
End If

DataTables(bm).DeleteFor("[_Identify] Is not null")
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT * Fro m {临时表}"
dt = cmd.ExecuteReader()
For Each dc As DataCol In dt.DataCols
    Output.Show("ll " & dc.Name)
Next
For Each dl As Col In CurrentTable.Cols
        Output.Show(dl.Name)
    If dt.DataCols.Contains(dl.name)=False Then
        DataTables(bm).DataCols.Delete(dl.Name)
    End If
Next

--  作者:fntfgz
--  发布时间:2022/1/23 15:13:00
--  
老师,有时间帮看一下图片点击可在新窗口打开查看
--  作者:有点蓝
--  发布时间:2022/1/23 21:24:00
--  
删除要倒序处理,从后面开始删除