以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 动态增加表,能不能增加表达式啊? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28758) |
-- 作者:tedat -- 发布时间: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 -- 发布时间:2013/2/17 17:22:00 -- [此贴子已经被作者于2013-2-17 17:25:51编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间: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编辑过]
|
-- 作者:小猪鑫鑫 -- 发布时间:2013/2/18 9:02:00 -- 原来表达式列是这样处理的,学习了! |
-- 作者:ft20130316 -- 发布时间:2013/5/10 21:51:00 -- 窗口表中:怎样动态增加一表达式列 如:表达式列名为:客户名称 表达式内容为:客户名称 |
-- 作者:wfkbabro -- 发布时间: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 -- 发布时间: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编辑过] |
-- 作者:有点蓝 -- 发布时间:2020/5/23 14:12:00 -- if DataTables("订单").DataCols("金额").Expression > "" then msgbox("表达式列") |
-- 作者:wei0769 -- 发布时间:2020/5/23 14:23:00 -- 收到, 狐表在设计表的时候是不是把表达式放在表中了?如果是,可否作一个通用函数取得指定表的表达式列。 |
-- 作者:有点蓝 -- 发布时间:2020/5/23 14:31:00 -- 只能逐个列判断Expression |