以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么在同一个项目的多张表中增加两列并赋值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=147746)

--  作者:ymli
--  发布时间:2020/3/23 12:53:00
--  怎么在同一个项目的多张表中增加两列并赋值
想将所有表中增加两列,并赋值,但是出现错误,代码如下:
For Each dt As DataTable In DataTables
    Dim Names As New List (of String)
    Names.add(dt.name)
    For Each Name As String In Names
        Output.Show (Name)
    Next
    Dim Builder As New ADOXBuilder
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables(Name)
        .AddColumn("LineName" ,ADOXType.String, 20) \'增加字符列,长度为20
        .AddColumn("Upload" ,ADOXType.Integer) \'增加整数型列
    End With
    For Each dr As DataRow In DataTables(name).DataRows
        dr("LineName" ) = "Line1"
        dr("Upload" ) = "0"
    Next
    Builder.Close() \'关闭ADOXBuilder
Next

[此贴子已经被作者于2020/3/23 12:53:16编辑过]

--  作者:程兴刚
--  发布时间:2020/3/23 12:57:00
--  

For Each dt As DataTable In DataTables
    Dim Builder As New ADOXBuilder
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables(dt.name)
        .AddColumn("LineName" ,ADOXType.String, 20) \'增加字符列,长度为20
        .AddColumn("Upload" ,ADOXType.Integer) \'增加整数型列
    End With
    For Each dr As DataRow In DataTables(name).DataRows
        dr("LineName" ) = "Line1"
        dr("Upload" ) = "0"
    Next
    Builder.Close() \'关闭ADOXBuilder
Next

--  作者:程兴刚
--  发布时间:2020/3/23 13:01:00
--  
其实代码都让您写出来了,只是逻辑不对,如果不是所有表,手工指定表用这个,下面指定表A、表B:
Dim Names As New List (of String)
Names.add("表A")
Names.add("表B")
For Each Name As String In Names
     Dim Builder As New ADOXBuilder
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables(Name)
        .AddColumn("LineName" ,ADOXType.String, 20) \'增加字符列,长度为20
        .AddColumn("Upload" ,ADOXType.Integer) \'增加整数型列
    End With
    For Each dr As DataRow In DataTables(name).DataRows
        dr("LineName" ) = "Line1"
        dr("Upload" ) = "0"
    Next
    Builder.Close() \'关闭ADOXBuilder
Next

--  作者:ymli
--  发布时间:2020/3/23 13:07:00
--  
运行表A,表B的程序,出现如图的错误
图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

--  作者:程兴刚
--  发布时间:2020/3/23 13:17:00
--  
好像要重新启动,您查帮助改一下,这一段代码好像不能用:
    For Each dr As DataRow In DataTables(name).DataRows
        dr("LineName" ) = "Line1"
        dr("Upload" ) = "0"
    Next

--  作者:有点蓝
--  发布时间:2020/3/23 14:30:00
--  
需要重启项目,增加的列才能加载使用
--  作者:ymli
--  发布时间:2020/3/23 16:43:00
--  
按照如下代码增加列,但中途报错,如图:重启项目后,只有第一个表成功添加,其他表都没成功
图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

For Each dt As DataTable In DataTables
    Dim Builder As New ADOXBuilder
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables(dt.name)
        .AddColumn("LineName" ,ADOXType.String, 20) \'增加字符列,长度为20
        .AddColumn("Upload" ,ADOXType.Integer) \'增加整数型
    End With
    Builder.Close() \'关闭ADOXBuilder
    Syscmd.Project.Open(ProjectFile) \'重新打开当前项目
Next

--  作者:有点蓝
--  发布时间:2020/3/23 17:11:00
--  
改完再重启啊

For Each dt As DataTable In DataTables
    Dim Builder As New ADOXBuilder
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables(dt.name)
        .AddColumn("LineName" ,ADOXType.String, 20) \'增加字符列,长度为20
        .AddColumn("Upload" ,ADOXType.Integer) \'增加整数型
    End With
    Builder.Close() \'关闭ADOXBuilder
Next
    Syscmd.Project.Open(ProjectFile) \'重新打开当前项目