以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  安条件锁定行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149667)

--  作者:采菊东篱下
--  发布时间:2020/5/8 21:49:00
--  安条件锁定行
密码:888888
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb


下面这段代码没Do语句前还能一行行锁定行,加了Do语句后报错了,我搞这个锁定行学了一晚,不想想了,还是直接请教专家吧,请问应怎么改?
Dim cbo As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim di As String = cbo.Value
Dim drs As List(Of DataRow) = DataTables("基本信息").Select("[棋赛名称] = \'" & di & "\'")
Do While drs.count
    Dim idx As Integer = drs.count
    Dim dr As DataRow
    dr = DataTables("基本信息").DataRows(idx)
    If dr(idx)("比赛已结束") = False Then \'如果第一行没有锁定
        dr(idx)("比赛已结束") = True
        dr(idx)("比赛已结束").Locked = True \'那么锁定此行
    End If
Loop
DataTables("基本信息").save
[此贴子已经被作者于2020/5/9 8:42:24编辑过]

--  作者:采菊东篱下
--  发布时间:2020/5/9 9:03:00
--  
改为这样也不行
Dim cbo As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim di As String = cbo.Value
Dim drs As List(Of DataRow) = DataTables("基本信息").Select("[棋赛名称] = \'" & di & "\'")
For Each dr As DataRow In drs
    If dr("比赛已结束") = False Then \'如果第一行没有锁定
        dr("比赛已结束") = True
        dr("比赛已结束").Locked = True \'那么锁定此行
    End If
Next
DataTables("基本信息").save

--  作者:有点蓝
--  发布时间:2020/5/9 9:52:00
--  
Locked是DataRow的属性,而dr("比赛已结束")是指某个单元格的值

dr("比赛已结束").Locked = True
改为
dr.Locked = True

更有效率的用法
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛(1).zip



--  作者:采菊东篱下
--  发布时间:2020/5/9 10:23:00
--  
  谢谢,用你的方法成功了,这方法我完全没想到,我的思路只停留在帮助里的知识,弄来弄去就是不行!还想问多了,招人讨厌了!学习阶段,现在是通过实例练习加深学到的知识运用、认知,真很烦人,非常感谢。
[此贴子已经被作者于2020/5/9 10:32:11编辑过]

--  作者:有点蓝
--  发布时间:2020/5/9 10:28:00
--  
我的方法也都是帮助里的知识:http://www.foxtable.com/webhelp/topics/1532.htm
--  作者:采菊东篱下
--  发布时间:2020/5/9 10:42:00
--  
  谢谢,那要用SQLReplaceFor,我的表是分页加载显示,听群里的人说最近会有一次200多人的比赛,因此一定要用后台数据,替换这个属性我看过,可完全没想到可以这样运用。