以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  保存撤销问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172242)

--  作者:夜点蚊香
--  发布时间:2021/10/1 10:05:00
--  保存撤销问题
If vars("a") = True Then
    vars("a") = False
Else
    With Tables("签到表")
        If .Current IsNot Nothing Then
            .Current.Reject()
            DataTables("学生签到明细表").RejectChanges
            DataTables("教师签到表").RejectChanges
        End If
    End With
End If
上面代码 执行的是哪个保存命令

我用的下面的保存命令
Tables("签到表").Current.Save()

执行保存以后, 上面的撤销代码还是会执行。用什么保存命令,上面的撤销代码不执行。

--  作者:新福星
--  发布时间:2021/10/1 10:53:00
--  
编辑->保存,这个是保存了编辑结果;编辑->撤销->保存,这个是无法保存编辑的结果的。
看你上面的代码,就是第二种情况,无法保存编辑变动的结果。你应该使用第一种方法。撤销一般用在录入过程中发现不对或者中途退出的情况。

--  作者:有点蓝
--  发布时间:2021/10/4 21:15:00
--  
If .Current IsNot Nothing Then】判断的是表格是否有数据,而不是是否保存了。

要判断选中的行是否未保存参考:http://www.foxtable.com/webhelp/topics/0428.htm
If .Current.DataRow.RowState  <> DataRowState.Unchanged Then

另外注意Current指的是选中的行,假设选中第一行保存了,然后可能做了其它操作,选中了第二行,第二行是未保存的,可能会导致逻辑混乱。

如果要判断整个表是否修改过参考这个:http://www.foxtable.com/webhelp/topics/0387.htm