Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口表中新增临时列的表达式


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

主题:[求助]窗口表中新增临时列的表达式

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]窗口表中新增临时列的表达式  发帖心情 Post By:2014/11/22 20:22:00 [显示全部帖子]

我在窗口A中有一个Normal表,要在表中新增三列,A、P、V。
Dim t As Table = e.Form.Controls("Table1").Table

If dt.DataCols.Contains("A") = False Then
    dt.DataCols.Add("A",Gettype(Double),"","数量")
End If

If dt.DataCols.Contains("P") = False Then
    dt.DataCols.Add("P",Gettype(Double),"","单价")
End If

If dt.DataCols.Contains("V") = False Then
    dt.DataCols.Add("V",Gettype(Double),"math.round([A] * [P] ,2)","合价")
End If

这样为什么不行呢?表达式不能直接使用math.round?
但如果直接用
If dt.DataCols.Contains("V") = False Then
    dt.DataCols.Add("V",Gettype(Double),"A*P","合价")
End If
这样又可以,咋个整法?

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2014/11/22 20:25:00 [显示全部帖子]

不好意思,看到了,有四舍五入的帮助 

不过好象这样也不行啊

If dt.DataCols.Contains("V") = False Then
    dt.DataCols.Add("V",Gettype(Double),"Convert([A] * [P]  * 100, 'System.Int64') / 100 ","合价")
End If

后面会被注释掉的
[此贴子已经被作者于2014-11-22 20:32:56编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2014/11/23 9:50:00 [显示全部帖子]

 dt.DataCols.Add("V",Gettype(Double),"Convert([A] * [P]  * 100, 'System.Int64') / 100 ","合价"

这里有一个注释符号,如果这样写,代码直接被注释掉了

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2014/11/23 11:12:00 [显示全部帖子]

我在表达式中引入了一个全局变量
If dt.DataCols.Contains("V") = False Then
dt.DataCols.Add("V",Gettype(Double),"Convert([A] * [P]  * 10^Vars("Dot"), 'System.Int64') / 10^Vars("Dot") ","合价")
End If

这样就报出这个错误

编译错误:没有为“Public Function Add(ColumnName As String, DataType As System.Type, MaxLength As Integer, Expression As String, Caption As String) As DataCol”的参数“Expression”指定参数。


错误代码:dt.DataCols.Add("V",Gettype(Double),"Convert([A] * [P]  * 10^Vars("Dot"), 'System.Int64') / 10^Vars("Dot") ","合价")

是不是表达式中不能引用变量?
[此贴子已经被作者于2014-11-23 11:12:41编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2014/11/23 11:36:00 [显示全部帖子]

啊,一时发晕………………,谢谢

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2014/11/23 12:42:00 [显示全部帖子]

再问:
如果表达式中的A列和P列也是在这个窗口AfterLoad事件中增加的临时列,就不能在其它的新增列中引用A和P列了吧?或者是不能使用乘方符号?

dt.DataCols.Add("V",Gettype(Double),"Convert([A] * [P]  * 10^" & Vars("Dot") & ", 'System.Int64') / 10^" & Vars("Dot"),"合价")

因为我在执行过程中,弹出来这个错误

无法设置列"V"的表达式,原因:表达式包含不支持的运算符“^”
[此贴子已经被作者于2014-11-23 12:42:15编辑过]

 回到顶部