以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 动态修改表结构,求助 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=140488) |
-- 作者:yifan3429 -- 发布时间:2019/9/6 16:23:00 -- 动态修改表结构,求助 数据源是外部数据源 我希望遍寻所有的表 找到第一列 如果有 .RenameColumn("第一列","姓名") 如果没有就新建 .AddColumn("姓名" ,ADOXType.Text) \'增加备注列 求助老师 Dim Builder As New
ADOXBuilder("nwnd") \'要指定数据源名称 Builder.Open()Dim tbl As ADOXTable With Builder.Tables("表A") .RenameColumn("第一列","姓名") End With Builder.Close() |
-- 作者:有点蓝 -- 发布时间:2019/9/6 16:34:00 -- 获取数据源中所有的表名参考:http://www.foxtable.com/webhelp/topics/1943.htm 通过表名使用SQLCommand返回表结构:select * from xxx表 where false 根据返回的datatable,判断是否有"第一列" |
-- 作者:yifan3429 -- 发布时间:2019/9/6 18:04:00 -- 看了还是不会组织代码,求助老师 |
-- 作者:有点蓝 -- 发布时间:2019/9/6 20:16:00 -- Dim cmd As New SQLCommand For Each nm As String In Connections("region").GetTableNames if dt.datacols.contains("第一列") then msgbox("包含第一列") end if |
-- 作者:yifan3429 -- 发布时间:2019/9/15 7:29:00 -- DataRowAdding 新增行时 \'寻找系统必备列 如果没有那就增加 Dim cmd As New SQLCommand Dim dt As DataTable cmd.C For Each nm As String In Connections("erp2019").GetTableNames cmd.CommandText = "SEL ECT * F rom " & nm & " where false" dt = cmd.ExecuteReader() If dt.datacols.contains("Log") Then Else dt.datacols.AddColumn("Log" ,ADOXType.String, 50) \'增加字符型列,长度指定为12 End If Next --------------------------- 错误 --------------------------- 编译错误:“AddColumn”不是“DataColCollection”的成员。 错误代码:dt.datacols.AddColumn("Log" ,ADOXType.String, 50) \'增加字符型列,长度指定为12 --------------------------- 确定 --------------------------- |
-- 作者:有点蓝 -- 发布时间:2019/9/15 8:46:00 -- datatable.datacols没有AddColumn这种用法:http://www.foxtable.com/webhelp/topics/1428.htm 使用datatable.datacols只能添加临时列,这种用法没有必要判断数据库,因为临时列是不可能在数据库里有的。 如果要添加永久列,参考:http://www.foxtable.com/webhelp/topics/2122.htm 另外使用ADOXBuilder添加的列,注意是没有办法在主表里看到的,需要在外部表管理中重新添加表。
|