以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]菜单中的 % 命令 (http://foxtable.net/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" 单元格公式这样做。 [此贴子已经被作者于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 -- 换个字符是可以,现在问题是找不到合适的公式。 [此贴子已经被作者于2009-2-11 10:03:32编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2009/2/11 10:15:00 -- 没有数据源,也不太明白你的意思,无法帮忙。 只能估计,可以考虑用代码吧,s2和b都是通过代码计算的。 |