以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 折后计算问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=162930) |
||||
-- 作者:lin98 -- 发布时间:2021/4/17 15:39:00 -- 折后计算问题 根据下面条件(类型,组合,计算公式),如何实现计算出“组合统计表”的组合名称的重量? 一,类型,组合 类型:A, 组合:BC 类型:A,组合:A1BC 类型:BC, 组合:ABCBA1 类型:BBE, 组合:A1B1CB1CB 二,计算公式 1.计算:B,C的重量 计算公式: B=面积*(类型表).系数*(组合表).克重 C=面积*(组合表).克重 2.计算:A1,B,C的重量 计算公式: A1=面积*(组合表).克重 B=面积*(类型表).系数*(组合表).克重 C=面积*(组合表).克重 3.计算:A,B,C,B,A1的重量 计算公式: A=面积*(组合表).克重 B=面积*(类型表).系数*(组合表).克重 C=面积*(组合表).克重 B=面积*(类型表).系数*(组合表).克重 A1=面积*(组合表).克重 4.计算:A1,B1,C,B1,C,B 的重量 计算公式: A1=面积*(组合表).克重 B1=面积*(类型表).系数*(组合表).克重 C=面积*(组合表).克重 B1=面积*(类型表).系数*(组合表).克重 C=面积*(组合表).克重 B=面积*(类型表).系数*(组合表).克重 C=面积*(组合表).克重
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/17 17:10:00 -- 把组合拆分开来即可,比如 Dim s As String = "A1B1CB1CBC" Dim lst As new List(of String) Dim m As String = s(0) For i As Integer = 1 To s.Length - 1 If Char.IsDigit(s(i)) Then m = m & s(i) lst.Add(m) m = "" ElseIf m > "" lst.Add(m) m = s(i) Else m = s(i) End If Next lst.Add(m) For Each s1 As String In lst Output.Show(s1) Next 根据拆分结果进行不同的计算即可,比如 For Each s1 As String In lst Output.Show(s1) Next 改为下面代码 Dim 面积 As Integer = 根据组合名称从资料表获取面积,参考下面find的用法 For Each s1 As String In lst Dim dr As DataRow = DataTables("组合表").Find("组合=\'" & s1 & "\'") Dim 克重 As Integer = 0 If dr IsNot Nothing Then 克重 = dr("克重") End If dr = DataTables("类型表").Find("类型=\'" & s1 & "\'") Dim 系数 As Double = 0 If dr IsNot Nothing Then 系数 = dr("系数") End If Select Case s1 Case "A","C","A1" Dim sum As Double = 面积 * 克重 Case "B" Dim sum As Double = 面积 * 系数 * 克重 End Select Next |
||||
-- 作者:lin98 -- 发布时间:2021/4/19 9:05:00 -- Dim 面积 As Integer = DataTables("资料表").Find("面积 =\'" & s1 & "\'") 根据组合名称从资料表获取面积,参考下面find的用法 For Each s1 As String In lst Dim dr As DataRow = DataTables("组合表").Find("组合=\'" & s1 & "\'") Dim 克重 As Integer = 0 If dr IsNot Nothing Then 克重 = dr("克重") End If dr = DataTables("类型表").Find("类型=\'" & s1 & "\'") Dim 系数 As Double = 0 If dr IsNot Nothing Then 系数 = dr("系数") End If Select Case s1 Case "A","C","A1" Dim sum As Double = 面积 * 克重 Case "B" Dim sum As Double = 面积 * 系数 * 克重 End Select Next 老师,上面报错,请帮助,谢谢, |
||||
-- 作者:有点蓝 -- 发布时间:2021/4/19 9:12:00 -- 报什么错 |
||||
-- 作者:lin98 -- 发布时间:2021/4/19 14:21:00 -- ![]() ![]() |
||||
-- 作者:有点蓝 -- 发布时间:2021/4/19 14:24:00 -- Dim 面积 As Integer = DataTables("资料表").Find("面积从哪个表取?根据什么条件取?改为正确的条件") |
||||
-- 作者:lin98 -- 发布时间:2021/4/19 15:00:00 -- 详细错误信息: 调用的目标发生了异常。 无法在 System.Single 和 System.String 上执行“=”操作。
|
||||
-- 作者:lin98 -- 发布时间:2021/4/19 15:05:00 -- For Each s1 As String In lst Dim dr As DataRow = DataTables("组合表").Find("组合=\'" & s1 & "\'") Dim 克重 As Integer = 0 If dr IsNot Nothing Then 克重 = dr("克重") End If dr = DataTables("类型表").Find("类型=\'" & s1 & "\'") Dim 系数 As Double = 0 If dr IsNot Nothing Then 系数 = dr("系数") End If dr= DataTables("资料表").Find("面积 =\'" & s1 & "\'") Dim 面积 As Double = 0 If dr IsNot Nothing Then 面积= dr("面积") End If Select Case s1 Case "A","C","A1" Dim sum As Double = 面积 * 克重 Case "B" Dim sum As Double = 面积 * 系数 * 克重 End Select Next 上面代码报错,请老师在附件改正,谢谢!
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/19 15:12:00 -- 面积从哪个表取?根据什么条件取?不考虑代码,请使用文字回答 |
||||
-- 作者:lin98 -- 发布时间:2021/4/19 15:32:00 -- 面积从“资料表”取值,根据“组合”条件取。 |