Foxtable(狐表)用户栏目专家坐堂 → [求助]菜单中的 % 命令


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

主题:[求助]菜单中的 % 命令

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
[求助]菜单中的 % 命令  发帖心情 Post By:2009/2/1 10:31:00 [只看该作者]

使用菜单中的 %  命令对  实体材料分析表  单位是 % 的行的 金额 求值

Dim a As Table = Tables("实体预算书.实体材料分析")
Dim r As Integer
r = a.Find("%", 0, "单位", True, True, False)
If r = - 1 Then
    MessageBox.Show("此项目不包含 % 材料", "提示")
    Dim S1 As Double = a.Compute("Sum(金额)", "RCJ = 'R'")
    Dim S2 As Double = a.Compute("Sum(金额)", "RCJ = 'C'")
    Dim S3 As Double = a.Compute("Sum(金额)", "RCJ = 'J'")
    Dim b As Double = a.Rows(r)("定额用量")
ElseIf a.Rows(r)("材料编号") = "AW0021" Then
DataTables("实体材料分析").DataCols("金额").Expression = "S2*b/100"

End If

红色字体代码出现错误(有7个材料编号的单位是%,需要对“RCJ”列为“R” 、“C”、“J”求和后,乘以一个百分比数获得金额)



已解决!方法是参照了帮助中下面代码:

Dim exp As String = "[数量] * [单价] * 0.8"
Dim
drs As List(of DataRow) = DataTables("订单").Select("数量 > 500")
For Each
dr As DataRow In drs
   
dr("金额") = Eval(exp,dr)
Next


单元格公式这样做。
[此贴子已经被作者于2009-2-15 12:15:57编辑过]

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


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

错误提示,没有找到列s2,问题在于:

DataTables("实体材料分析").DataCols("金额").Expression = "S2*b/100"

那里来的s2啊

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2009/2/1 10:58:00 [只看该作者]

s2是变量:Dim S2 As Double = a.Compute("Sum(金额)", "RCJ = 'C'")

我知道"S2*b/100"是错误,但不知道怎样修改。

"S2*b/100" 中:
S2表示:对 RCJ  列为 C金额 求和 
b=0.75

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


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

Dim a As Table = Tables("实体预算书.实体材料分析")
Dim r As Integer
Dim S1 As Double = a.Compute("Sum(金额)", "RCJ = 'R'")
Dim S2 As Double = a.Compute("Sum(金额)", "RCJ = 'C'")
Dim S3 As Double = a.Compute("Sum(金额)", "RCJ = 'J'")
Dim b As Double = a.Rows(r)("定额用量")
r = a.Find("%", 0, "单位", True, True, False)
If r = - 1 Then
    MessageBox.Show("此项目不包含 % 材料", "提示")
ElseIf a.Rows(r)("材料编号") = "AW0021" Then
    DataTables("实体材料分析").DataCols("金额").Expression = S2 & "*b/100"

End If

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2009/2/1 11:40:00 [只看该作者]

这样就对了!

DataTables("实体材料分析").DataCols("金额").Expression = S2 & "*" & b & "/100"

谢谢他爸!

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2009/2/10 15:01:00 [只看该作者]

上面的公式还是有问题。

本意是只对单位是 % 的金额求值,其他金额不变。上面的公式是对整列求值(只有一个统一的值)。

请各位再指点一下。

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2009/2/11 9:32:00 [只看该作者]

这个问题就是对单元格求值。

DataTables("实体材料分析").DataCols("金额").Expression   是对金额列求值。

Compute(Expression, Filter) 要求表达式必须是 聚合函数 。

上面两个公式都不可使用。使用什么公式可只对单位是 % 的金额求值?请高手指点。

谢谢!

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


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

别用%,换个字符代替%看看,%可能在数据库中有特殊的意义。

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2009/2/11 9:56:00 [只看该作者]

换个字符是可以,现在问题是找不到合适的公式。

Compute(Expression, Filter)可以根据条件求值,但 Expression 必须是聚合函数

.Expression    是对整个列求值。

我现在是想对单位是 % 的金额求值,公式为S2 & "*" & b & "/100" ,找不到合适的函数。

上面的公式正确,只需对一个单元格求值,而不改变其他内容。

请他爸指点!

[此贴子已经被作者于2009-2-11 10:03:32编辑过]

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


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

没有数据源,也不太明白你的意思,无法帮忙。
只能估计,可以考虑用代码吧,s2和b都是通过代码计算的。



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