以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  HasChanges的状态问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158975)

--  作者:hitzfeld
--  发布时间:2020/12/9 8:40:00
--  HasChanges的状态问题?
HasChanges按道理是只作用于新增行(红色),但是我发现怎么锁定的也会提示?
比如窗口有三个按钮:保存,审核,退出。我分别在三个按钮写下面代码
保存
Tables("采购单").Current.save
Dim dr As Row = Tables("采购单").Current
For Each cdr As DataRow In dr.DataRow.GetChildRows("采购明细")
    cdr.Save
Next
审核
If Tables("采购单").Current IsNot Nothing AndAlso Tables("采购单").Current.DataRow.GetChildRows("采购明细").count = 0
    msgbox("没有添加明细")
    Return
Else
    Dim drs1 As List(Of DataRow)
      drs1 = Tables("采购单").Current.DataRow.GetChildRows("采购明细")
        For Each dr As DataRow In drs1
            If dr("采购数量") = 0 Then
                msgbox("数量不可为0")
                Return
            Else
                dr.save
                dr.Locked = True
                
            End If
        Next

    Tables("采购单").Current.Save()
    Tables("采购单").Current("审核") = "已审核"
    Tables("采购单").Current.Locked = True
    msgbox("已审核")
End If

退出
If DataTables("采购明细").HasChanges Then
    If MessageBox.Show("采购表已经被修改,是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
        Tables("采购单").Current.Save()
        Tables("采购单.采购明细").Save()
    Forms("采购单").close
end if
end if

保存按钮和审核按钮其实就差一个lock,但是在点击退出的时候,审核必定提示已修改,保存则不会?

[此贴子已经被作者于2020/12/9 8:40:39编辑过]

--  作者:有点蓝
--  发布时间:2020/12/9 8:46:00
--  
HasChanges不仅仅是只作用于新增行,如何数据的更改都起作用,包括增删改。

可以锁定的表有一个_Locked列,锁定行的时候,会导致_Locked列数据发生变化

--  作者:hitzfeld
--  发布时间:2020/12/9 10:38:00
--  
蓝老师,那如果我只判断保存和锁定状态,有保存(含锁定)就不提醒要怎么写?
--  作者:有点蓝
--  发布时间:2020/12/9 11:04:00
--  
没有办法,完全没有必要,锁定肯定也要保存才有效,不如就白锁了。
--  作者:hitzfeld
--  发布时间:2020/12/9 11:16:00
--  
主要是一直提醒很烦呐。。。。
比如我开了张单,保存了,审核了,退出的时候你还问我要不要保存?我就糊涂了图片点击可在新窗口打开查看这样一直提醒也不是个事。

--  作者:有点蓝
--  发布时间:2020/12/9 11:22:00
--  
保存了,审核了   -- 应该反过来,审核了再保存