以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何动态替换表列名  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=129902)

--  作者:xndd
--  发布时间:2019/1/8 14:47:00
--  [求助]如何动态替换表列名

甜版好。

 

我通过sql查询方式读取了外部数据源,查询了一张表,是e文列名,但是有一张表是存储中英文列名的,我现在想动态替换,不知道可以不可以?

 

我看到:

重命名列

在命令窗口执行下面的代码:

Dim Builder As New ADOXBuilder
Builder.Open()
With Builder.Tables("表A")
    .RenameColumn("第一列","姓名")
End With
Builder.Close()

 

 

但是如何读取sql查询表的列名?进行替换?


--  作者:有点甜
--  发布时间:2019/1/8 15:22:00
--  
Dim Builder As New ADOXBuilder
Builder.Open()
With Builder.Tables("表A")
    For Each dc As DataCol In DataTables("表A").DataCols
        Dim fdr As DataRow = DataTables("中英列名").find("英文=\'" & dc.name & "\'")
        If fdr IsNot Nothing Then
            .RenameColumn(dc.name, fdr("中文"))
        End If
    Next
End With
Builder.Close()
DataTables.unload("表A")
DataTables.load("表A")

--  作者:xndd
--  发布时间:2019/1/8 15:31:00
--  
原来如此!谢谢!
--  作者:xndd
--  发布时间:2019/1/10 9:53:00
--  

甜版好!

 

上次试了下,发现有问题:

 


图片点击可在新窗口打开查看此主题相关图片如下:pic_2019-01-10_09-50-32.png
图片点击可在新窗口打开查看

代码:

Dim Builder As New ADOXBuilder
Builder.Open()
With Builder.Tables("品号信息")
    For Each dc As DataCol In DataTables("品号信息").DataCols
messagebox.Show(dc.name)
        Dim fdr As DataRow = DataTables("FUNCTION_INFO_RETURN").find("RETURN_CODE=\'" & dc.name & "\'")
        If dc.name = "ITEM_CODE" Then
            messagebox.Show(dc.name)
        End If
        If fdr IsNot Nothing Then
            .RenameColumn(dc.name, fdr("RETURN_NAME"))
           
        End If
    Next
End With
Builder.Close()
DataTables.unload("品号信息")
DataTables.load("品号信息")

 

sql查询表:

 


图片点击可在新窗口打开查看此主题相关图片如下:pic_2019-01-10_09-50-10.png
图片点击可在新窗口打开查看

是不是SQL查询表不支持这种方式?

[此贴子已经被作者于2019/1/10 9:54:41编辑过]

--  作者:有点甜
--  发布时间:2019/1/10 10:05:00
--  

查询表无法修改表结构的。

 

如果你只是想修改标题,参考 http://www.foxtable.com/webhelp/scr/1275.htm

 

如果你想修改列名,请在sql语句那里直接指定别名。