以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按条件增加行出错的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79342)

--  作者:文道古月
--  发布时间:2015/12/29 13:30:00
--  按条件增加行出错的问题

老师好:  下面代码出错,请帮忙看看是什么问题,谢谢!

---------------------------
错误
---------------------------
编译错误:“r”是“Private”,因此它在此上下文中不可访问。

 

错误代码:If r.Checked  = True Then
---------------------------
确定  
---------------------------

 

For Each r As Row In Tables("转移过账_上传预览table1").Rows \'\'遍历所有行
    If r.IsNull("移动数量") = False Then \'\'如果行的数量不为空,设其复选框为选中
        r.Checked = True
    Else r.Checked = False \'如果没有选中,弹出提示
        MessageBox.show(r.Index+1 & "行" & r("描述") & vbcrlf & """移动数量"" 不能为空!")
    End If
Next
If r.Checked  = True Then \'对复选选中的行进行批量操作
    Dim r1 As Row = Tables("库存").AddNew() \'定义在表库存中增加行
    If r("移动代码").StartsWith(2) Then \'假如以2开头,按照下列规则增加行
        Dim r1 As Row = Tables("库存").AddNew()
        r1("物料描述") = r("描述")
        r1("移动单元") = r("移动单元")
        r1("移动代码") = r("移动代码")
        r1("移动文本") = r("移动文本")
        r1("移动数量") = r("移动数量")
        r1.Save()
    ElseIf r("移动代码").StartsWith(1) AndAlso r("接收单元") <> "0" Then \'假如以1开头,并且行值不为0,按下面规则增加行
        Dim r1 As Row = Tables("库存").AddNew()
        r1("物料描述") = r("描述")
        r1("移动单元") = r("接收单元")
        r1("移动代码") = r("移动代码")
        r1("移动文本") = r("移动文本")
        r1("移动数量") = r("移动数量")
        r1.Save()
    End If
    If r("移动代码").StartsWith(3) Then \'假如以3开头,按下面规则增加行
        Dim r1 As Row = Tables("库存").AddNew()
        r1("物料描述") = r("描述")
        r1("移动单元") = r("移动单元")
        r1("移动代码") = r("移动代码")
        r1("移动文本") = r("移动文本")
        r1("移动数量") = -r("移动数量")
        r1.Save()
    ElseIf r("移动代码").StartsWith(1) Then \'假如以1开头,按下面规则增加行
        Dim r1 As Row = Tables("库存").AddNew()
        r1("物料描述") = r("描述")
        r1("移动单元") = r("移动单元")
        r1("移动代码") = r("移动代码")
        r1("移动文本") = r("移动文本")
        r1("移动数量") = -r("移动数量")
        r1.Save()
    End If
    r.Delete() \'以上所有行增加到r1表之后,删除r表中对应的行
End If


--  作者:大红袍
--  发布时间:2015/12/29 14:24:00
--  

你下面的代码是不是要写在循环里面?

 

For Each r As Row In Tables("转移过账_上传预览table1").Rows \'\'遍历所有行
    If r.IsNull("移动数量") = False Then \'\'如果行的数量不为空,设其复选框为选中
        r.Checked = True
    Else r.Checked = False \'如果没有选中,弹出提示
        MessageBox.show(r.Index+1 & "行" & r("描述") & vbcrlf & """移动数量"" 不能为空!")
    End If

 

    \'其余的代码

 


Next


--  作者:文道古月
--  发布时间:2015/12/29 14:51:00
--  

是的,写在循环里面,但是怎么就只执行三次呢

For Each r As Row In Tables("转移过账_上传预览table1").Rows \'\'遍历所有行
    If r.Checked = True Then
        If r("移动代码").StartsWith(2) Then \'假如以2开头,按照下列规则增加行
            Dim r1 As Row = Tables("库存").AddNew()
            r1("物料描述") = r("描述")
            r1("移动单元") = r("移动单元")
            r1("移动代码") = r("移动代码")
            r1("移动文本") = r("移动文本")
            r1("移动数量") = r("移动数量")
            r1.Save()
            r.Delete() \'以上所有行增加到r1表之后,删除r表中对应的行
        End If
    End If
Next


--  作者:大红袍
--  发布时间:2015/12/29 15:21:00
--  
For i As Integer =Tables("转移过账_上传预览table1").Rows.count-1 To 0 Step -1 \'\'遍历所有行
    Dim r As Row = Tables("转移过账_上传预览table1").Rows(i)
    If r.Checked = True Then
        If r("移动代码").StartsWith(2) Then \'假如以2开头,按照下列规则增加行
            Dim r1 As Row = Tables("库存").AddNew()
            r1("物料描述") = r("描述")
            r1("移动单元") = r("移动单元")
            r1("移动代码") = r("移动代码")
            r1("移动文本") = r("移动文本")
            r1("移动数量") = r("移动数量")
            r1.Save()
            r.Delete() \'以上所有行增加到r1表之后,删除r表中对应的行
        End If
    End If
Next