以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态修改表结构总提示出错?(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30296)

--  作者:zpx_2012
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/3/25 11:55:00
--  

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

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

 

 


--  作者:zpx_2012
--  发布时间:2013/3/25 12:10:00
--  
通过菜单增加列是没有问题,但那样太麻烦了,因为表单很多要打开来一列一列增加,而且主要都是一些相同的列,

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

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

--  作者:狐狸爸爸
--  发布时间:2013/3/25 12:44:00
--  
从简单的开始,先用代码单独增加一列,看看行不行。
--  作者:zpx_2012
--  发布时间:2013/3/25 14:43:00
--  
谢谢狐爸,解决了,原来是要排除关联表就可以了。
--  作者:zerov
--  发布时间:2013/3/25 15:58:00
--  回复:(zpx_2012)谢谢狐爸,解决了,原来是要排除关...
把代码贴出来,给大家学学
--  作者:zpx_2012
--  发布时间: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