Foxtable(狐表)用户栏目专家坐堂 → 动态修改表结构总提示出错?(已解决)


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

主题:动态修改表结构总提示出错?(已解决)

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
动态修改表结构总提示出错?(已解决)  发帖心情 Post By:2013/3/25 11:51:00 [只看该作者]

如题,想在命令窗口中通过下面的代码批量的增加一些列,如下:

Dim Cns() As String = {"填表人","修改人","sys_流程状态","sys_流程名称","sys_传递说明","sys_编辑者"}
Dim Builder As New ADOXBuilder("EI")  '用于外部数据源
Builder.Open()
For Each t As Table In Tables
    For Each Cn As String In Cns
        If Tables(t.name).Cols.Contains(Cn) = False Then '如果表中没有此列
            With Builder.Tables(t.name)
                .AddColumn(Cn,ADOXType.String,16)
            End With
        End If
    Next
Next
Builder.Close()

但运行时总提示如下错误


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

不知道是哪里错了,请教大家,谢谢!

[此贴子已经被作者于2013-3-25 14:43:17编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/25 11:55:00 [只看该作者]

如果通过菜单增加列也不行,那么看看:

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=29816&page=4

 

 


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/25 12:10:00 [只看该作者]

通过菜单增加列是没有问题,但那样太麻烦了,因为表单很多要打开来一列一列增加,而且主要都是一些相同的列,

同时我在命令窗口使用这种方式出现这个情况,如果一次只是增加一列,而且现有的每个表都没有这一列的话就没有问题可以增加,若其中有一个表已经有这一列,则会报错。所以我就想在增加前先遍历表并且判断这个列是否存在表中,没有才增加,没想到这样也会提示出错。

那请问狐爸,还有没有其他办法一次性的批量增加列。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/25 12:44:00 [只看该作者]

从简单的开始,先用代码单独增加一列,看看行不行。

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/25 14:43:00 [只看该作者]

谢谢狐爸,解决了,原来是要排除关联表就可以了。

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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(zpx_2012)谢谢狐爸,解决了,原来是要排除关...  发帖心情 Post By:2013/3/25 15:58:00 [只看该作者]

把代码贴出来,给大家学学

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/25 16:32:00 [只看该作者]

就是增加了一行排除关联列啊,其他都是一样的。但当列已经增加后,不能再运行第二次,会提示出错,当然这个错不影响什么就是了。

Dim Cns() As String = {"填表人","修改人","sys_流程状态","sys_流程名称","sys_传递说明","sys_编辑者"}
Dim Builder As New ADOXBuilder("EI")  '用于外部数据源
Builder.Open()
For Each t As Table In Tables
    If t.Isrelation = False 
        For Each Cn As String In Cns
            If Tables(t.name).Cols.Contains(Cn) = False Then '如果表中没有此列
                With Builder.Tables(t.name)
                    .AddColumn(Cn,ADOXType.String,16)
                    ' .DeleteColumn("日期")
                    ' .RenameColumn("第一列","姓名")
                End With
            End If
        Next
    End If
Next

 回到顶部