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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望: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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/23 9:34:00 [只看该作者]

 测试没有问题啊


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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望: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 ","合价"

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/23 9:52:00 [只看该作者]

 不可能,双引号里面的单引号不是注释

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/23 11:13:00 [只看该作者]

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

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2014/11/23 11:36:00 [只看该作者]

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

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/23 14:11:00 [只看该作者]

 表达式没有 10 ^ 2 这种。

 

 你计算好了以后,再加进去呗。


 回到顶部
总数 11 1 2 下一页