以文本方式查看主题

-  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=1705)

--  作者:gaoqr
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/2/1 10:48:00
--  
错误提示,没有找到列s2,问题在于:

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

那里来的s2啊
--  作者:gaoqr
--  发布时间: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
--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2009/2/1 11:40:00
--  
这样就对了!

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

谢谢他爸!

--  作者:gaoqr
--  发布时间:2009/2/10 15:01:00
--  
上面的公式还是有问题。

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

请各位再指点一下。
--  作者:gaoqr
--  发布时间:2009/2/11 9:32:00
--  
这个问题就是对单元格求值。

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

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

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

谢谢!

--  作者:狐狸爸爸
--  发布时间:2009/2/11 9:44:00
--  
别用%,换个字符代替%看看,%可能在数据库中有特殊的意义。
--  作者:gaoqr
--  发布时间:2009/2/11 9:56:00
--  

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

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

.Expression    是对整个列求值。

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

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

请他爸指点!

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

--  作者:狐狸爸爸
--  发布时间:2009/2/11 10:15:00
--  
没有数据源,也不太明白你的意思,无法帮忙。
只能估计,可以考虑用代码吧,s2和b都是通过代码计算的。