以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求解析]列表达式出现错误对话框  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=18247)

--  作者:zhangzhijun
--  发布时间:2012/4/7 11:05:00
--  [求解析]列表达式出现错误对话框

我是访照 高效率的流水账.table  编程

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:高效率的流水账.table

添加了“数值1”数值2“二个列,”收入“列 用表达式 [数值1] * [数值2](是出现错误的地方,删除表达式,不出现错误对话框,“收入”列 不能输入值)

”余额“列不能动态变值,要在“支出”列输入值,才能变值,

能删除行,但删除行时出现错误,如下图:


此主题相关图片如下:snap2.bmp
按此在新窗口浏览图片


”余额“列不能动态变值,要在“支出”列输入值,才能变值

请求解决:1 删除行时,不出现错误对话框,“余额”要自动变值

              2 正常输入值时,“余额”也要自动变值


--  作者:sloyy
--  发布时间:2012/4/7 12:45:00
--  

1 你的收入列原来是表达式列,应改为普通数据列

2 修改代码 :  如果支出,数值1,数值2 变化时重新计算

Select Case e.DataCol.Name
    Case "支出","数值1","数值2"
       
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") \'找出上一行
        If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行
            e.DataRow("收入") = e.DataRow("数值1") * e.DataRow("数值2")
           
            e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出")
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1 \'重算余下行的收入 余额
            e.DataRow("收入") = e.DataRow("数值1") * e.DataRow("数值2")
            drs(i)("收入") = drs(i)("数值1") * drs(i)("数值2")
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
        Next
End Select


--  作者:mr725
--  发布时间:2012/4/7 19:23:00
--  

可能是楼主的DataRowDelelting中的代码引起的···既然是表达式列,就不要用代码赋值了吧,