Foxtable(狐表)用户栏目专家坐堂 → 动态增加表,能不能增加表达式啊?


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

主题:动态增加表,能不能增加表达式啊?

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


加好友 发短信
等级:婴狐 帖子:25 积分:308 威望:0 精华:0 注册:2013/1/27 1:36:00
动态增加表,能不能增加表达式啊?  发帖心情 Post By:2013/2/17 17:07:00 [只看该作者]

Dim Name As String = e.Form.Controls("工程数量分表名称").Value
If Name = "" Then
    MessageBox.Show("分表名称不能为空!")
    Return
End If
For Each dt As DataTable In DataTables
    If dt.Name.Contains(Name) Then
        MessageBox.Show(Name & "分表已经存在,不能创建!")
        Return
    End If
Next
Dim Builder As New ADOXBuilder
Dim fb As ADOXTable
Builder.Open()
fb = Builder.NewTable(name) '创建表
With fb
    .AddColumn("分部工程" ,ADOXType.String, 16)
    .AddColumn("分项工程" ,ADOXType.String, 16)
    .AddColumn("施工部位_主部位" ,ADOXType.String, 16)
    .AddColumn("施工部位_辅部位" ,ADOXType.String, 16)
    .AddColumn("细目号" ,ADOXType.String, 16)
    .AddColumn("材料类别" ,ADOXType.String, 16)
    .AddColumn("材料规格" ,ADOXType.String, 16)
    .AddColumn("单位" ,ADOXType.String, 16)
    .AddColumn("设计数量" ,ADOXType.Single)
    .AddColumn("变更数量" ,ADOXType.Single)
    .AddColumn("有效数量" ,ADOXType.Single)'我希望“有效数量”=“设计数量”+“变更数量” 应该怎么写啊?
End With
Builder.AddTable(fb) '增加表
Builder.Close()
syscmd.Project.Open(ProjectFile)  '打开表
MainTable = Tables(Name)
forms("创建工程数量分表").close()

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/17 17:22:00 [只看该作者]

 图片点击可在新窗口打开查看
[此贴子已经被作者于2013-2-17 17:25:51编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/2/17 17:32:00 [只看该作者]

可以增加表达式列,首先你增加的表名,最好用约定的字符开头或结尾:然后在AfterOpenProject事件中加上代码

 

For Eah dt As DataTable in DataTables

   if dt.Name.StartsWith(“约定的表名开头字符") Then

       dt.DataCols.Add(....)

   End if

Next

 

更好的办法是,另外建立一个表,四列: 表名、列名、数据类型,表达式,将用户新增的表达式列信息保存在这个表中,然后在AfterOpenProject事件中加上代码:

 

For each dr As Datarow in DataTables("表名").Datarows

    Select Case dr("类型")

          Case "整数"

                  DaaTables(dr("表名")).Add(dr("列名"),GetType(Integer),dr("表达式"))

          Case "小数"

                  DaaTables(dr("表名")).Add(dr("列名"),GetType(Double),dr("表达式"))

    End Select

Next

 

其实Foxtable自己的表达式列,就是这样处理的。

 

[此贴子已经被作者于2013-2-17 17:31:55编辑过]

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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2013/2/18 9:02:00 [只看该作者]

原来表达式列是这样处理的,学习了!


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


加好友 发短信
等级:幼狐 帖子:122 积分:852 威望:0 精华:0 注册:2013/3/16 9:52:00
  发帖心情 Post By:2013/5/10 21:51:00 [只看该作者]

窗口表中:怎样动态增加一表达式列  如:表达式列名为:客户名称      表达式内容为:客户名称


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


加好友 发短信
等级:童狐 帖子:269 积分:2425 威望:0 精华:0 注册:2011/10/21 17:07:00
  发帖心情 Post By:2020/5/23 11:46:00 [只看该作者]

以下是引用狐狸爸爸在2013/2/17 17:32:00的发言:

可以增加表达式列,首先你增加的表名,最好用约定的字符开头或结尾:然后在AfterOpenProject事件中加上代码

 

For Eah dt As DataTable in DataTables

   if dt.Name.StartsWith(“约定的表名开头字符") Then

       dt.DataCols.Add(....)

   End if

Next

 

更好的办法是,另外建立一个表,四列: 表名、列名、数据类型,表达式,将用户新增的表达式列信息保存在这个表中,然后在AfterOpenProject事件中加上代码:

 

For each dr As Datarow in DataTables("表名").Datarows

    Select Case dr("类型")

          Case "整数"

                  DaaTables(dr("表名")).Add(dr("列名"),GetType(Integer),dr("表达式"))

          Case "小数"

                  DaaTables(dr("表名")).Add(dr("列名"),GetType(Double),dr("表达式"))

    End Select

Next

 

其实Foxtable自己的表达式列,就是这样处理的。

 

[此贴子已经被作者于2013-2-17 17:31:55编辑过]

UPUP


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


加好友 发短信
等级:八尾狐 帖子:1823 积分:19512 威望:0 精华:0 注册:2013/4/10 14:38:00
  发帖心情 Post By:2020/5/23 13:53:00 [只看该作者]

以下是引用狐狸爸爸在2013/2/17 17:32:00的发言:

可以增加表达式列,首先你增加的表名,最好用约定的字符开头或结尾:然后在AfterOpenProject事件中加上代码

 

For Eah dt As DataTable in DataTables

   if dt.Name.StartsWith(“约定的表名开头字符") Then

       dt.DataCols.Add(....)

   End if

Next

 

更好的办法是,另外建立一个表,四列: 表名、列名、数据类型,表达式,将用户新增的表达式列信息保存在这个表中,然后在AfterOpenProject事件中加上代码:

 

For each dr As Datarow in DataTables("表名").Datarows

    Select Case dr("类型")

          Case "整数"

                  DaaTables(dr("表名")).Add(dr("列名"),GetType(Integer),dr("表达式"))

          Case "小数"

                  DaaTables(dr("表名")).Add(dr("列名"),GetType(Double),dr("表达式"))

    End Select

Next

 

其实Foxtable自己的表达式列,就是这样处理的。

 

[此贴子已经被作者于2013-2-17 17:31:55编辑过]

怎样判断一个列是表达式列,如果可以判断,可以在加载数据前,把所有 表达式列保存起来 再 设置为空,加载完成后再设置成原来的表达式,是否会加快加载速度,可以做一个通用的程序。

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/23 14:12:00 [只看该作者]

if DataTables("订单").DataCols("金额").Expression > "" then msgbox("表达式列")

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


加好友 发短信
等级:八尾狐 帖子:1823 积分:19512 威望:0 精华:0 注册:2013/4/10 14:38:00
  发帖心情 Post By:2020/5/23 14:23:00 [只看该作者]

收到,

狐表在设计表的时候是不是把表达式放在表中了?如果是,可否作一个通用函数取得指定表的表达式列。


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/23 14:31:00 [只看该作者]

只能逐个列判断Expression

 回到顶部