Foxtable(狐表)用户栏目专家坐堂 → 绕不过的HasChanges?


  共有2425人关注过本帖树形打印复制链接

主题:绕不过的HasChanges?

帅哥哟,离线,有人找我吗?
hitzfeld
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
绕不过的HasChanges?  发帖心情 Post By:2020/12/15 1:16:00 [只看该作者]

If Tables("采购单").Current("审核") = "已审核" Then             '先判断单据是否已经审核,如果已经审核就直接退出,如果是未审核,开始下面的判断.
Forms("采购单").close
   Else
If DataTables("采购明细").HasChanges Then
    If MessageBox.Show("采购表已经被修改,是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
        Tables("采购单").Current.Save()
        Tables("采购单.采购明细").Save()
    Forms("采购单").close
Else
Dim idxs As String = "-1,"
For Each dr As DataRow In DataTables("采购明细").datarows
    If dr.RowState = DataRowState.Added Then
        idxs &= dr("_Identify") & ","
        dr.Delete
     End If
Next
        Tables("采购单").Current.Save()
        Tables("采购单.采购明细").Save()
DataTables("采购明细").DeleteFor("_Identify in (" & idxs & ")")
    End If
Else

End If

Forms("采购单").close
End If

上面的代码,我首先判断单据是否已经审核,如果是“已审核”就直接关闭窗口。我主要是想跳过HasChanges的提醒,因为已审核就意味着已经保存了,不需要提醒了。但是实际还是不行,仍然跳出提醒?为什么?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107312 积分:545821 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/15 8:59:00 [只看该作者]

意思是【Tables("采购单").Current("审核") = "已审核"】的情况下,还是会弹出【MessageBox.Show("采购表已经被修改,是否保存?", ...】?这个明显不可能的,除非其它地方有代码影响了,上面的代码在什么事件里?

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

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2020/12/15 14:37:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:关联表.table

蓝老师您好,我上传了实例您看下?确实是这样的。上述代码在采购单窗口的“退出”按钮
[此贴子已经被作者于2020/12/15 14:37:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2020/12/15 14:41:00 [只看该作者]

啊!我知道是为什么了!在afterclose事件里面也有代码造成的!不用麻烦蓝老师了,打扰您了。

 回到顶部