以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  表A中有开始 结束两个逻辑列 怎么实现表中的所有数据行 只能有一个开始列=true  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176789)

--  作者:cnsjroom
--  发布时间:2022/4/27 1:48:00
--  表A中有开始 结束两个逻辑列 怎么实现表中的所有数据行 只能有一个开始列=true

表A中有开始 结束两个逻辑列  怎么实现表中的所有数据行 只能有一个开始列=true

1、如果某行 开始=true  结束=false 时 不允许别的行的开始=true

2、当某行 开始=true 且结束=true时  才允许别的行的开始=true


--  作者:有点蓝
--  发布时间:2022/4/27 8:44:00
--  
别的行指任意行?还是指某行的下一行?
--  作者:cnsjroom
--  发布时间:2022/4/27 8:51:00
--  回复:(有点蓝)别的行指任意行?还是指某行的下一行...
老师  是随机一行
只要随机有一行开始为TRUE   结束为FALSE 就不允许下一个随机行开始为TRUE   
必须开始为TRUE  且结束为TRUE  下一个随机行才能让开始为TRUE

--  作者:有点蓝
--  发布时间:2022/4/27 9:08:00
--  
意思是只要有任意一行的结束为FALSE,其它行开始就不能录入TRUE?
--  作者:cnsjroom
--  发布时间:2022/4/27 9:15:00
--  回复:(有点蓝)意思是只要有任意一行的结束为FALSE,...
对  任意一行
开始为TRUE就一定要结束为TRUE
开始为FALSE 结束就一定为FALSE 不能为TRUE
开始 结束均为TRUE 其它任一行才能操作开始为TRUE 或结束为TRUE

--  作者:有点蓝
--  发布时间:2022/4/27 9:53:00
--  
到datacolchanging事件处理判断如果开始录入true,就使用find查询是否有开始不等于结束的行,如果有就取消录入
--  作者:cnsjroom
--  发布时间:2022/4/27 10:31:00
--  回复:(有点蓝)到datacolchanging事件处理判断如果开...

    Case "开始状态","结束状态"
        If e.NewValue Then
            Dim bb As DataRow = DataTables("会议议题").Find("开始状态=\'true\' and 结束状态 = \'false\'and uuid=\'" & e.DataRow("uuid") & "\'")
            If bb IsNot Nothing Then
                e.Cancel=True
                MessageBox.Show(bb("议题标题") & "在开始状态,且尚未结束的,请先结束再开始","提示!")
            Else
                e.DataRow("开始状态")=True
            End If
        End If

 

没有完美达到预期  麻烦老师指导下!

当开始为true  结束为false的时候   上述代码执行后 弹出提示后开始还是被选择true

 

[此贴子已经被作者于2022/4/27 10:32:38编辑过]

--  作者:有点蓝
--  发布时间:2022/4/27 10:55:00
--  

    Case "开始状态"
        If e.NewValue Then
            Dim bb As DataRow = DataTables("会议议题").Find("开始状态=true and 结束状态 = false and uuid=\'" & e.DataRow("uuid") & "\'")
            If bb IsNot Nothing Then
                e.Cancel=True
                MessageBox.Show(bb("议题标题") & "在开始状态,且尚未结束的,请先结束再开始","提示!")
            End If
        End If