以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  流程控制  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=141327)

--  作者:yifan3429
--  发布时间:2019/9/26 21:26:00
--  流程控制
Dim r As Row = Tables("凭证").Current
If e.DataCol.Name = "结账" Then \'如果是已结帐列的内容变动
    \'If r IsNot Nothing Then
    If r("审核") = True Then
        r("结账") = False
        r.Locked = True \'那么锁定此行
        r("结账信息") = User.Name & "-"& Date.Now & "结账"
        r("结账日期") = Date.Now
        r("出纳") = User.Name
    Else
        e.Cancel = True
                MessageBox.Show("不能批准还未通过审核的行.")
    End If    
End If


如果审核没有通过 就会停止执行   不允许结账  并提示   如果审核通过就可以结账

--  作者:狐狸爸爸
--  发布时间:2019/9/27 8:04:00
--  
先纠正一点,作为老用户,怎么可能还用:
Dim r As Row = Tables("凭证").Current

应该是:
Dim r As DataRow = e.DataRow

其他没看出什么

--  作者:houseer
--  发布时间:2019/9/27 11:36:00
--  
以下是引用狐狸爸爸在2019/9/27 8:04:00的发言:
先纠正一点,作为老用户,怎么可能还用:
Dim r As Row = Tables("凭证").Current

应该是:
Dim r As DataRow = e.DataRow

其他没看出什么  
请问这俩种写法有什么区别?


--  作者:有点蓝
--  发布时间:2019/9/27 12:07:00
--  
e.DataRow指触发事件的行

Tables("凭证").Current指当前行

比如使用代码赋值了10行,e.DataRow会不同,而Tables("凭证").Current可能不会变都是同一行

--  作者:yifan3429
--  发布时间:2019/9/27 14:20:00
--  
Dim r As DataRow = e.DataRow
If e.DataCol.Name = "结账" Then \'如果是已结帐列的内容变动
    \'If r IsNot Nothing Then
    If r("审核") = True Then
        r("结账") = False
        r.Locked = True \'那么锁定此行
        r("结账信息") = User.Name & "-"& Date.Now & "结账"
        r("结账日期") = Date.Now
        r("出纳") = User.Name
    Else
        e.Cancel = True
        MessageBox.Show("不能批准还未通过审核的行.")
    End If    
End If


代码找不到问题了了  老师看下  我需要的是   点击结账列  如果审核列是勾选的 那么填充结账相关信息,如果审核没有勾选那么停止操作 并提示要先审核后。

现在是会有提示但是结账还是会被勾选。

--  作者:有点蓝
--  发布时间:2019/9/27 14:22:00
--  
代码放到datacolchanging事件