以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求代码,上一行取数  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149297)

--  作者:nbsugu_z
--  发布时间:2020/4/28 12:00:00
--  求代码,上一行取数
 A   B  C 
  20 5
   20
         30
         40
   20  10    60
        80
   60   20   100
   100  30    200
A列首行,取当前行C列数据,不判断B列是否为空
其他行:B列为空值,A列也为空
           B列不为空时,取上一行C列数据,如果上一行B列也为空,再上移一行
           直到上一行B列不为空时,取此行的C列数据

这个代码不会写。只会写本行取数  上一行,上上一行如何补充呢
Select Case e.DataCol.name
    Case "B"
        If e.DataRow("B") IsNot Nothing Then
            e.DataRow("A") = e.DataRow("C") 
        Else
           e.DataRow("A") = nothing
        End If
End Select

求助
 如果在上表中再增加一列,比如“品种”列,要求按品种自动取数又该如何写?
就是按品种取数。比如品种1、品种2,A列数据分别取自各自相对应品种的上一行(B列不为空的上一行,如果空,再上一行)的C列数据
当然还有个日期列,是按日期排序的,有点象流水帐的味道。





[此贴子已经被作者于2020/4/28 13:15:41编辑过]

--  作者:有点蓝
--  发布时间:2020/4/28 14:18:00
--  
Select Case e.DataCol.name
    Case "B"
        If e.DataRow.isnull("B")  = falseThen
dim idx as integer = tables("当前表名称").findrow(e.DataRow)
if idx > 0 \'如果=0说明是第一行,没有上一行
            e.DataRow("A") = tables("当前表名称")rows(idx-1)("C") 
end if
        Else
           e.DataRow("A") = nothing
        End If
End Select