以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  AddColumn 错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160846)

--  作者:yifan3429
--  发布时间:2021/2/23 22:14:00
--  AddColumn 错误
---------------------------
错误
---------------------------
编译错误:“AddColumn”不是“DataTable”的成员。



错误代码:.AddColumn("sys_日期" ,ADOXType.DateTime)
---------------------------
确定   
---------------------------

图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20210223221553.png
图片点击可在新窗口打开查看

    
    If dt.datacols.contains("sys_日期") Then
        
    Else
        
        With dt
            .AddColumn("sys_日期" ,ADOXType.DateTime)
            .AddColumn("sys_姓名" ,ADOXType.String, 5) \'增加字符型列,长度指定为12
            .AddColumn("部门" ,ADOXType.String, 10)
        End With
    End If
Next

[此贴子已经被作者于2021/2/23 22:15:00编辑过]

--  作者:有点蓝
--  发布时间:2021/2/23 22:50:00
--  
表格没有AddColumn这种用法,如果要添加临时列参考:http://www.foxtable.com/webhelp/topics/1428.htm

如果要添加永久列,参考:http://www.foxtable.com/webhelp/topics/2122.htm

--  作者:yifan3429
--  发布时间:2021/2/24 23:37:00
--  
---------------------------
错误
---------------------------
编译错误:“dt”不是“ADOXBuilder”的成员。



错误代码:With Builder.dt
---------------------------
确定   
---------------------------
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
For Each nm As String In Connections("city").GetTableNames
    cmd.CommandText = "SELE CT * Fr om " & nm & " where false"
    dt = cmd.ExecuteReader()    
    If dt.datacols.contains("sys_日期") Then        
    Else
        Dim Builder As New ADOXBuilder
        Builder.Open() \'打开ADOXBuilder
        With Builder.dt            
            dt.AddColumn("sys_日期" ,ADOXType.DateTime)
            dt.AddColumn("sys_姓名" ,ADOXType.String, 5) \'增加字符型列,长度指定为12
            dt.AddColumn("部门" ,ADOXType.String, 10)
        End With
    End If
Next
Builder.Close() \'关闭ADOXBuilder
MessageBox.Show("city字段检索并填完成添加完成 ","提示")
[此贴子已经被作者于2021/2/24 23:37:35编辑过]

--  作者:有点蓝
--  发布时间:2021/2/25 8:41:00
--  
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
For Each nm As String In Connections("city").GetTableNames
    cmd.CommandText = "SELECT * From " & nm & " where false"
    dt = cmd.ExecuteReader()
    If dt.datacols.contains("sys_日期") = false Then
        
        Dim Builder As New ADOXBuilder("数据源名称")
        Dim tbl As ADOXTable
        Builder.Open()
        tbl = Builder.Tables(nm) 
        With tbl
            .AddColumn("sys_日期" ,ADOXType.DateTime)
            .AddColumn("sys_姓名" ,ADOXType.String, 5) \'增加字符型列,长度指定为12
            .AddColumn("部门" ,ADOXType.String, 10)
        End With
        Builder.Close()
        
    End If
Next
MessageBox.Show("city字段检索并填完成添加完成 ","提示")

--  作者:yifan3429
--  发布时间:2021/2/25 16:18:00
--  
---------------------------
版本:2020.5.29.8
---------------------------
代码执行出错,错误信息:



System.NullReferenceException: 未将对象引用设置到对象的实例。

   在 UserCode.Test()
---------------------------
确定   
---------------------------

图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20210223221553.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/2/25 16:29:00
--  
去掉单引号,不要画蛇添足

cmd.CommandText = "SELECT * From " & nm & " where false"

--  作者:yifan3429
--  发布时间:2021/2/26 22:24:00
--  
还是会有报错
图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20210223221553.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/2/27 9:15:00
--  
如果是SqlServer

cmd.CommandText = "SELECT * From " & nm & " where 1=2"