正式版出炉在即,我在考虑原来用易表开发系统如何向狐表转化及转化的工作难度。现有一个问题即原易表中用单元格公式实现的计算,在狐表中如何变通的问题?请高手帮助一下,看看能否用狐表实现?其难易程度如何?谢谢了!
说明:先求(一)原材料小计 (等于编号从06加到16的金额数值)
(二)车间费用小计 (等于编号从19加到21的金额数值)
后计算(三)铸钢件成本 (等于编号05加上18的金额数值)
详见下面的抓图:
此主题相关图片如下:tt截图.bmp
tables("表名").Rows(x)("列名") = 值。
'''
if e.datacol.name = "金额" then
dim sum1,sum2 as Double
dim dt as DataTable = e.DataTable
dim dr1,dr2,dr3 as DataRow
dr1= dt.Find("[编号]= '03'")
dr2= dt.Find("[编号]= '05'")
dr3= dt.Find("[编号]= '18'")
sum1 = dt .Compute("Sum(金额)","[编号] In('06','07','08','09','10','11','12','13','14','15','16')")
sum2 = dt .Compute("Sum(金额)","[编号] In('19','20','21')")
dr1("金额") = sum1+sum2
dr2("金额") = sum1
dr3("金额") = sum2
End if
呵呵,点将,In如果改为between,可能会更简洁。
以下是引用狐狸爸爸在2008-12-2 15:32:00的发言:
呵呵,点将,In如果改为between,可能会更简洁。
哦,谢谢指点
以下是引用ybil在2008-12-2 15:34:00的发言:
哦,谢谢指点
惭愧,是我搞错了,表达式不支持Between.
我脑子里出现的是SQL语句的语法。
狐爸未明白我的意思。
具体算法是在狐表中金额定位是通过编码来指定的。其算法我已基本测试成功,如下:(假设编号为数值型)
Dim Sum As Double = DataTables("表A").Compute("Sum(金额)","[编号] >= 6 and [编号] <= 16" )
tables("表A").Rows(1)("金额") = sum
Dim Sum1 As Double = DataTables("表A").Compute("Sum(金额)","[编号] >=19 and [编号] <=21" )
tables("表A").Rows(12)("金额") = sum1
tables("表A").Rows(0)("金额") = sum+sum1
我现在想问题一下,如将金额值的写入也改成按编号定位,即将下列三行代码:
tables("表A").Rows(1)("金额") = sum ‘改成编码=5 定位后再写入金额值
tables("表A").Rows(12)("金额") = sum1 ‘改成编码=18定位后再写入金额值
tables("表A").Rows(0)("金额") = sum+sum1 ‘改成编码=3定位后再写入金额值
即这三行不用行数指定,而编码来指定写入位置应如何写呢?即假定不论行数如何变化,只要编码不变,公式即永远成立!即把rows()中的1、12、0换成编码=5、18、3.
谢谢!
谢谢! Ybil已经解决了这个问题! 如果编码列改成数值型的话,用
Dim Sum As Double = DataTables("表A").Compute("Sum(金额)","[编号] >= 6 and [编号] <= 16" )还是比较简单的。若是字符型的话
Dim Sum As Double = DataTables("表A").Compute("Sum(金额)","[编号] >= '06' and [编号] <= '16' " )
好象也是正确的吧?
学会了用 dr1= dt.Find("[编号]= '03'") dr1("金额") = sum1+sum2 这二个组合经常用得到!