以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]for each 遍历选择时出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174783)

--  作者:流水
--  发布时间:2022/2/5 15:45:00
--  [求助]for each 遍历选择时出错
CheckBox控件的 CheckedChanged 事件里写了一个循环选择代码,当有作废的记录时,跳过不选,实际运行中,第一条作废记录无论是不是已作废的记录都会被选中;另外还发现,被选中的这一条与 CheckBox控件 有了莫名的联系,点销这条记录的 “选择” 列的 选中状态,CheckBox控件的 选中状态 也会跟着变化,其他行记录点击“选择列”的状态时CheckBox控件不会有变化;
“选择” 列是 临时的逻辑列;

Dim tb As Table = Tables("采购合同_Table2")
Dim s As Integer \'记录作废记录数
If tb.Rows.Count > 0 Then \'如果子表中有数据
    If e.Sender.Checked = True Then \'如果选中
        For Each a As Row In tb.Rows
            If a("作废") = False Then \'如果未作废
                a("选择") = True
            Else \'如果作废了
                s += 1 \'记录作废数
            End If
        Next
        If s > 0 Then
            MessageBox.Show("有未选中的已作废的记录共: " & s & " 条!")
        End If
    Else \'是非选中状态
        For Each a As Row In tb.Rows
            a("选择") = False \'取消选择
        Next
    End If
Else \'如果子表没有记录
    e.Sender.Checked = False \'取消选中
End If

如果用下面的方式选择,当前行就会被选中,无论当前行是不是需要的行;
DataTables("采购价格").ReplaceFor("选择",True,"sys_采购合同内码 = " & a("sys_采购合同内码") & " and 作废 = false") \'选择未作废的记录
[此贴子已经被作者于2022/2/5 17:09:39编辑过]

--  作者:有点蓝
--  发布时间:2022/2/6 10:43:00
--  
CheckBox控件是不是绑定了列?
--  作者:程兴刚
--  发布时间:2022/2/6 14:12:00
--  
不必要这么遍历!
[此贴子已经被作者于2022/2/6 14:24:37编辑过]

--  作者:流水
--  发布时间:2022/2/8 22:56:00
--  
想不到其他办法用来选择