以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  动态增加表,能不能增加表达式啊?  (http://www.foxtable.com/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