以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动增加列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149058)

--  作者:季朝龙
--  发布时间:2020/4/22 11:25:00
--  自动增加列
在DataColChanged事件里编写了如下代码,还是无法实现自动增加列,请老师帮忙看看代码哪里写错了!

Select Case e.DataCol.Name
    Case "预计完工日期"
        Dim tbl1 As DataTable = DataTables("生产计划_订单表")
        Dim EndDate1 As Date = tbl1.SQLCompute("Max(预计完工日期)")
        If e.NewValue > EndDate1 Then
            Dim dt As Date = EndDate1
            Do
                Dim nm As String = "甘特图" & dt.Year & "年" &  dt.Month & "月_" & dt.Day + 1
                Dim Builder As New ADOXBuilder
                Builder.Open() \'打开ADOXBuilder
                With Builder.Tables("生产计划_订单表甘特图")
                    .AddColumn(nm,ADOXType.String,16)
                End With
                Builder.Close()
                dt = dt.Adddays(1)
                If dt > e.NewValue Then
                    Exit Do
                End If
            Loop
            For Each cl As Col In Tables("生产计划_订单表甘特图").Cols
                cl.width = 20
            Next
            For Each dd As DataTable In DataTables
                dd.Save()
            Next
        End If
End Select


--  作者:2900819580
--  发布时间:2020/4/22 11:29:00
--  
              Dim Builder As New ADOXBuilder
                Builder.Open() \'打开ADOXBuilder
                With Builder.Tables("生产计划_订单表甘特图")
                    .AddColumn(nm,ADOXType.String,16)
                End With
                Builder.Close()
 
用以下代码代替试试
Tables("生产计划_订单表甘特图").datatable.datacols.add(nm,gettype(string),16)

--  作者:有点蓝
--  发布时间:2020/4/22 11:35:00
--  
甘特图应该是使用临时列绘制的吧。使用datacols.add。如果要添加永久列,需重启项目才有效 
--  作者:季朝龙
--  发布时间:2020/4/22 13:33:00
--  
需要增加的永久列,用这个方法增加的是临时列,重新打开项目,之前增加的列又消失了

请问老师我还需要怎么修改代码呀?

--  作者:有点蓝
--  发布时间:2020/4/22 14:33:00
--  
增加的永久列,只能是数据表才有用。临时表不能的

是不是在外部表管理中限制了只加载部分列?http://www.foxtable.com/webhelp/topics/1815.htm,添加所有列,点击确定看看