以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码简化思路求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190003)

--  作者:chen_sheng
--  发布时间:2024/1/10 14:32:00
--  代码简化思路求助
对接一个需求需要特殊转化个数据  一共19组数据,上一组为零时引用下一组不为0的数据,写一半感觉代码太累赘了 思路请教

坐标1-19  当上一个值为零=下一个不为零的数据
Dim r As Row = Tables("表A").Current
If r("冲孔坐标1")=0 Then
If r("冲孔坐标2")>0 Then
r("冲孔坐标1")= r("冲孔坐标2")
ElseIf r("冲孔坐标3")>0 Then
r("冲孔坐标1")= r("冲孔坐标3")
ElseIf r("冲孔坐标4")>0 Then
r("冲孔坐标1")= r("冲孔坐标4")
ElseIf r("冲孔坐标5")>0 Then
r("冲孔坐标1")= r("冲孔坐标5")
ElseIf r("冲孔坐标6")>0 Then
r("冲孔坐标1")= r("冲孔坐标6")
ElseIf r("冲孔坐标7")>0 Then
r("冲孔坐标1")= r("冲孔坐标7")
ElseIf r("冲孔坐标8")>0 Then
r("冲孔坐标1")= r("冲孔坐标8")
ElseIf r("冲孔坐标9")>0 Then
r("冲孔坐标1")= r("冲孔坐标9")
ElseIf r("冲孔坐标10")>0 Then
r("冲孔坐标1")= r("冲孔坐标10")
ElseIf r("冲孔坐标11")>0 Then
r("冲孔坐标1")= r("冲孔坐标11")
ElseIf r("冲孔坐标12")>0 Then
r("冲孔坐标1")= r("冲孔坐标12")
ElseIf r("冲孔坐标13")>0 Then
r("冲孔坐标1")= r("冲孔坐标13")
ElseIf r("冲孔坐标14")>0 Then
r("冲孔坐标1")= r("冲孔坐标14")
ElseIf r("冲孔坐标15")>0 Then
r("冲孔坐标1")= r("冲孔坐标15")
ElseIf r("冲孔坐标16")>0 Then
r("冲孔坐标1")= r("冲孔坐标16")
ElseIf r("冲孔坐标17")>0 Then
r("冲孔坐标1")= r("冲孔坐标17")
ElseIf r("冲孔坐标18")>0 Then
r("冲孔坐标1")= r("冲孔坐标18")
ElseIf r("冲孔坐标19")>0 Then
r("冲孔坐标1")= r("冲孔坐标19")
End If
End If
If r("冲孔坐标2")=0 Then
If r("冲孔坐标3")>0 Then
r("冲孔坐标2")= r("冲孔坐标3")
ElseIf r("冲孔坐标4")>0 Then
r("冲孔坐标2")= r("冲孔坐标4")
ElseIf r("冲孔坐标5")>0 Then
r("冲孔坐标2")= r("冲孔坐标5")
ElseIf r("冲孔坐标6")>0 Then
r("冲孔坐标2")= r("冲孔坐标6")
ElseIf r("冲孔坐标7")>0 Then
r("冲孔坐标2")= r("冲孔坐标7")
ElseIf r("冲孔坐标8")>0 Then
r("冲孔坐标2")= r("冲孔坐标8")
ElseIf r("冲孔坐标9")>0 Then
r("冲孔坐标2")= r("冲孔坐标9")
ElseIf r("冲孔坐标10")>0 Then
r("冲孔坐标2")= r("冲孔坐标10")
ElseIf r("冲孔坐标11")>0 Then
r("冲孔坐标2")= r("冲孔坐标11")
ElseIf r("冲孔坐标12")>0 Then
r("冲孔坐标2")= r("冲孔坐标12")
ElseIf r("冲孔坐标13")>0 Then
r("冲孔坐标2")= r("冲孔坐标13")
ElseIf r("冲孔坐标14")>0 Then
r("冲孔坐标2")= r("冲孔坐标14")
ElseIf r("冲孔坐标15")>0 Then
r("冲孔坐标2")= r("冲孔坐标15")
ElseIf r("冲孔坐标16")>0 Then
r("冲孔坐标2")= r("冲孔坐标16")
ElseIf r("冲孔坐标17")>0 Then
r("冲孔坐标2")= r("冲孔坐标17")
ElseIf r("冲孔坐标18")>0 Then
r("冲孔坐标2")= r("冲孔坐标18")
ElseIf r("冲孔坐标19")>0 Then
r("冲孔坐标2")= r("冲孔坐标19")
End If
End If
.......  共19组
[此贴子已经被作者于2024/1/10 14:37:03编辑过]

--  作者:有点蓝
--  发布时间:2024/1/10 14:38:00
--  
For i As Integer = 1 To 19
    If r("冲孔坐标" & i) > 0 Then
        Dim a As doble = r("冲孔坐标" & i) 
        For j As Integer = 1 To i
            r("冲孔坐标" & j) = a
        Next
        Exit For
    End If
Next

--  作者:chen_sheng
--  发布时间:2024/1/10 15:00:00
--  
有点问题,和希望的效果有点差异

图片点击可在新窗口打开查看此主题相关图片如下:dingtalk_20240110145904.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2024/1/10 15:25:00
--  
什么差异?
--  作者:chen_sheng
--  发布时间:2024/1/10 15:35:00
--  
为0时补位仅补1位退出  这些数据任何一栏都可能为0
--  作者:有点蓝
--  发布时间:2024/1/10 15:40:00
--  
dim k as integer = 1

For i As Integer = 1 To 19
    If r("冲孔坐标" & i) > 0 Then
        Dim a As doble = r("冲孔坐标" & i) 
        For j As Integer = k To i
            r("冲孔坐标" & j) = a
        Next
        k = i+1
    End If
Next