以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  对逻辑列进行设置的问题!!请专家赐教!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69117)

--  作者:q2649295605
--  发布时间:2015/5/30 18:41:00
--  对逻辑列进行设置的问题!!请专家赐教!

表A中 共有10列:列1,列2.....列10,其中列1到列9内 有逻辑列  有整数列  有日期列  有单双精度小数列!

列10为逻辑列!

要求:列1到列9内全部有数据(逻辑列处于被选中的状态)的时候,列10自动被选中!并且列10不能直接修改!

 

请专家赐教!


--  作者:q2649295605
--  发布时间:2015/5/30 20:18:00
--  
为什么没有答案?
--  作者:sloyy
--  发布时间:2015/5/31 0:26:00
--  

1 列10 锁定

DataTables("表A").DataCols("列10").AllowEdit = False


2 1-9 每一列的 DataColChanged事件


If e.DataCol.Name = "列X" Then \'如果更改的是列X

If not e.DataRow.IsNull("列1")   and  e.DataRow("列2")=true  and ..........and  not e.DataRow.IsNull("列9"   Then 

e.DataRow(列10)=true

else

e.DataRow(列10)=false

endif






--  作者:大红袍
--  发布时间:2015/5/31 10:18:00
--  

 Datacolchanged事件

 

If e.DataCol.Name <> "第十列" Then
    Dim flag = True
    For Each dc As DataCol In e.DataTable.DataCols
        If dc.IsBoolean AndAlso e.DataRow(dc.Name) = False OrElse dc.IsBoolean = False AndAlso e.DataRow.IsNull(dc.Name) Then
            flag = False
            Exit For
        End If
    Next
    e.DataRow("第十列") = flag
End If


--  作者:sloyy
--  发布时间:2015/5/31 16:29:00
--  
嗯 昨晚我就想能否只写一个Datacolchanged事件
大红袍写得巧妙