Foxtable(狐表)用户栏目专家坐堂 → 动态修改表结构,求助


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

主题:动态修改表结构,求助

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
动态修改表结构,求助  发帖心情 Post By:2019/9/6 16:23:00 [只看该作者]

数据源是外部数据源

我希望遍寻所有的表
找到第一列
如果有
.RenameColumn("第一列","姓名")
如果没有就新建
.AddColumn("姓名" ,ADOXType.Text) '增加备注列
求助老师


Dim Builder As New ADOXBuilder("nwnd") '要指定数据源名称
Dim
tbl As ADOXTable
Builder.Open()
With
Builder.Tables("A")
    .
RenameColumn("第一列","姓名")
End With

Builder
.Close()

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/6 16:34:00 [只看该作者]

获取数据源中所有的表名参考:http://www.foxtable.com/webhelp/topics/1943.htm

通过表名使用SQLCommand返回表结构:select * from xxx表 where false
根据返回的datatable,判断是否有"第一列"


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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2019/9/6 18:04:00 [只看该作者]

看了还是不会组织代码,求助老师

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/6 20:16:00 [只看该作者]

Dim cmd As New SQLCommand
Dim
 dt As DataTable
cmd.ConnectionName = 
"region"

For Each nm As String In Connections("region").GetTableNames

cmd.CommandText = 
"SELECT * From " & nm & " where false"
dt = cmd.ExecuteReader()

if dt.datacols.contains("第一列") then

msgbox("包含第一列")

end if
Next



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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By: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

---------------------------

确定   

---------------------------



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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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添加的列,注意是没有办法在主表里看到的,需要在外部表管理中重新添加表。

 回到顶部