以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]改列名后重新代码加载会报错!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68980)

--  作者:whyfoxtable
--  发布时间:2015/5/28 15:35:00
--  [求助]改列名后重新代码加载会报错!
Dim Builder As New ADOXBuilder
Builder.Open()
With Builder.Tables("表B")
    .RenameColumn("第三列","成绩")
End With
Builder.Close()
DataTables("表B").Load
[此贴子已经被作者于2015/5/28 15:38:18编辑过]

--  作者:Bin
--  发布时间:2015/5/28 15:35:00
--  
报什么错? 
--  作者:whyfoxtable
--  发布时间:2015/5/28 15:38:00
--  [求助]会提示“表B没有“成绩”列”
然后就是一大堆代码,表B也不能正常出现,需要关闭程序重新打开才可见。
--  作者:Bin
--  发布时间:2015/5/28 15:38:00
--  
请问报什么错?
--  作者:大红袍
--  发布时间:2015/5/28 15:43:00
--  
 删除列的时候,要unload表,然后再load表。
--  作者:whyfoxtable
--  发布时间:2015/5/28 15:43:00
--  [求助]有如下报错.

见附件。

 

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


图片点击可在新窗口打开查看此主题相关图片如下:n2.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2015/5/28 15:47:20编辑过]

--  作者:狐狸爸爸
--  发布时间:2015/5/28 15:45:00
--  

DataTable的load是加载数据,  你修改了结构,当然会出错。

 

应该先先卸载:

http://www.foxtable.com/help/topics/2754.htm

再加载:

http://www.foxtable.com/help/topics/2753.htm

 

个人建议你不要去折腾这些东西,不适合目前的你。

[此贴子已经被作者于2015/5/28 15:48:22编辑过]

--  作者:whyfoxtable
--  发布时间:2015/5/28 16:11:00
--  [求助]毛病出在表上,表中有表达式列!

去除表达式列,则代码正常。

有表达式列,则代码不能正常。

 

现在,如何检测是否是表达式列?

 


Dim Builder As New ADOXBuilder
Dim dc As Col
Dim NewName As String
Dim OLDname As String
Builder.Open()
    For Each dc  In Tables("表A").Cols
        NewName =  "pii"+dc.name
        OLDname = dc.name
        Builder.Tables("表A").RenameColumn(OLDname,NewName)
    Next
Builder.Close()

 If DataTables.Contains("表A")  Then \'如果表已经加载
      DataTables.Unload("表A") \'卸载表
 End If

 If (DataTables.Contains("表A") = False)  Then \'如果未加载
      DataTables.load("表A") \'加载表
 End If

[此贴子已经被作者于2015/5/28 16:17:52编辑过]

--  作者:大红袍
--  发布时间:2015/5/28 16:25:00
--  

Dim Builder As New ADOXBuilder
Dim dc As Col
Dim NewName As String
Dim OLDname As String
Builder.Open()
For Each dc  In Tables("表A").Cols
    If dc.DataCol.Expression = "" Then
        NewName =  "pii"+dc.name
        OLDname = dc.name
        Builder.Tables("表A").RenameColumn(OLDname,NewName)
    End If
Next
Builder.Close()


If DataTables.Contains("表A")  Then \'如果表已经加载
    DataTables.Unload("表A") \'卸载表
End If

If (DataTables.Contains("表A") = False)  Then \'如果未加载
    DataTables.load("表A") \'加载表
End If

 


--  作者:whyfoxtable
--  发布时间:2015/5/28 16:33:00
--  [求助]如是是表达式列,但没表达式,会不会正常?

我去试一下,回来报告。

 

 

。。。。

 

试了一下,新加表达式列,但不设表达式,代码仍旧会报错。。。。

[此贴子已经被作者于2015/5/28 16:37:16编辑过]