Foxtable(狐表)用户栏目专家坐堂 → [求助] 未能批量动态增加列


  共有4420人关注过本帖树形打印复制链接

主题:[求助] 未能批量动态增加列

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/14 9:16:00 [显示全部帖子]

你如果执行多次同样的代码,就有可能报错。因为你已经添加了某列,你再添加,列名重复了,肯定会报错。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/28 12:59:00 [显示全部帖子]

手动通过菜单增加列,也报错?新建的一个项目,也是这样?如果是修复mdac

 

http://www.foxtable.com/webhelp/scr/2715.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/28 14:25:00 [显示全部帖子]

以下是引用Darcylau在2018/3/28 14:09:00的发言:
老师,你好!
手动增加列可以,新建项目批量增加列也可以。
只是原来的项目批量增加列不可以。很蹊跷。

 

贴出你写的代码。或者执行下面代码测试,如

 

Dim Builder As New ADOXBuilder
Builder.Open() '打开ADOXBuilder
With Builder.Tables("表A")
    .AddColumn("日期abc" ,ADOXType.DateTime) '增加日期型列
End With
Builder.Close() '关闭ADOXBuilder


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/28 18:11:00 [显示全部帖子]

执行这个呢?

 

Dim Builder As New ADOXBuilder
Builder.Open() '打开ADOXBuilder
With Builder.Tables("生产单")
    .AddColumn("测试abc" ,ADOXType.DateTime) '增加日期型列
End With
Builder.Close() '关闭ADOXBuilder

 

如果报错,你的是不是外部数据源?

 

Dim Builder As New ADOXBuilder("数据源名")
Builder.Open() '打开ADOXBuilder
With Builder.Tables("生产单")
    .AddColumn("测试abc" ,ADOXType.DateTime) '增加日期型列
End With
Builder.Close() '关闭ADOXBuilder


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/29 8:53:00 [显示全部帖子]

1、压缩项目

 

http://www.foxtable.com/webhelp/scr/0006.htm

 

2、执行如这样的代码

 

Dim Builder As New ADOXBuilder
Builder.Open() '打开ADOXBuilder
Dim t As Table = Tables("生产单")
With Builder.Tables(t.name)
    If t.Cols.Contains("测试123456") = False Then
        .AddColumn("测试123456" ,ADOXType.DateTime) '增加日期型列
    End If
    If t.Cols.Contains("测试123") = False Then
        .AddColumn("测试123" ,ADOXType.DateTime) '增加日期型列
    End If
End With
Builder.Close() '关闭ADOXBuilder
DataTables.unload("拉手表|淋浴房产品表|客户表|生产单|订单")
DataTables.Load("拉手表|淋浴房产品表|客户表|生产单|订单")

 

3、你的列名,不能有空格,已经存在的列不能重复添加,不然都会报错。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/29 9:43:00 [显示全部帖子]

以下是引用Darcylau在2018/3/29 9:38:00的发言:
老师,您好!
可以了,请问表达式列可以批量添加吗?

 

表达式列,不能添加的。如果添加,也只能临时性添加,如 http://www.foxtable.com/webhelp/scr/1428.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/30 15:27:00 [显示全部帖子]

1、内部表、access数据源,列的上限是252、253个列。

 

2、如果使用sqlserver数据源,没有列的上限。

 

3、你这样设计表是不对的吧?不可能有这么多列的表存在的,你的表设计有问题。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/30 16:17:00 [显示全部帖子]

1、你可以把列改成行的形式,不一定要所有都做列。

 

2、sqlserver,你首先要安装sql server数据库,然后再连接使用

 

http://www.foxtable.com/webhelp/scr/2310.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/30 17:13:00 [显示全部帖子]

回复21楼,可以的。

 回到顶部