Foxtable(狐表)用户栏目专家坐堂 → beforeclose事件问题


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

主题:beforeclose事件问题

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


加好友 发短信
等级:三尾狐 帖子:655 积分:7707 威望:0 精华:0 注册:2013/12/11 17:49:00
beforeclose事件问题  发帖心情 Post By:2019/10/4 9:17:00 [只看该作者]

请老师帮忙看一下 下面这段代码 写在模式窗口 beforeclose 事件  能弹出  请先保存数据后,再关闭 
但是窗口 还是关闭了   感觉  e.Cancel =True  这句代码失灵了  这个问题有时候出现  有时候不出现 ,只要出现过一次  第二次还是会出现  进入编辑窗口 未做任何修改 再次打开 就不会关闭
    在好多台电脑都出现这个问题  


If DataTables("表A").HasChanges =True Or DataTables("表B").HasChanges =True Then
    If  Tables("表B").Rows.Count =0 Then
        DataTables("表A").RejectChanges()
        DataTables("表B").RejectChanges()
    Else
        Dim Result As DialogResult
        Result= messagebox.Show("数据有变动,请保存!","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
        If Result=DialogResult.no Then
            DataTables("表A").RejectChanges()
            DataTables("表B").RejectChanges()
        ElseIf Result=DialogResult.yes Then
            MessageBox.Show("请先保存数据后,再关闭!")
            e.Cancel =True
        End If
    End If
End If

[此贴子已经被作者于2019/10/4 9:49:24编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/4 10:00:00 [只看该作者]

按照你的代码逻辑,点击"否",撤销修改并关闭窗口,点击是,提示保存并禁止关闭窗口。
我测试也是如此,没有问题。

有问题的是你的逻辑,请先理清楚。

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


加好友 发短信
等级:三尾狐 帖子:655 积分:7707 威望:0 精华:0 注册:2013/12/11 17:49:00
  发帖心情 Post By:2019/10/4 10:04:00 [只看该作者]

谢谢狐狸爸爸  我要实现的效果 点 是  弹出 不关闭窗口 
现在的问题是 我点了是 有时候 不关闭 有时候 直接关闭窗口了 


Dim Result As DialogResult
Result= messagebox.Show("数据有变动,请保存!","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
If Result=DialogResult.no Then
    DataTables("表A").RejectChanges()
    DataTables("表B").RejectChanges()
ElseIf Result=DialogResult.yes Then
    MessageBox.Show("请先保存数据后,再关闭!")
    e.Cancel =True
End If
[此贴子已经被作者于2019/10/4 10:06:07编辑过]

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


加好友 发短信
等级:一尾狐 帖子:410 积分:4280 威望:0 精华:0 注册:2018/7/18 21:08:00
  发帖心情 Post By:2019/10/4 10:13:00 [只看该作者]

代码写的不对啊,逻辑错了。  变动什么  第一句true  然后 else  有变动  自己打自己

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


加好友 发短信
等级:三尾狐 帖子:655 积分:7707 威望:0 精华:0 注册:2013/12/11 17:49:00
  发帖心情 Post By:2019/10/4 10:21:00 [只看该作者]

谢谢   如果逻辑错 是不会弹出的   现在的问题是 弹出  还关闭窗口

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


加好友 发短信
等级:一尾狐 帖子:410 积分:4280 威望:0 精华:0 注册:2018/7/18 21:08:00
  发帖心情 Post By:2019/10/4 10:28:00 [只看该作者]

Dim n As Integer = Tables("客户联系人").Rows.Count
If  n> 0 Then
    If Tables("客户联系人").Current.DataRow.RowState <> DataRowState.Unchanged Then '如果当前行已经修改过
        Dim Result As DialogResult
        Result = MessageBox.Show("当前行数据已经修改是否保存", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            Tables("客户联系人").Current.save
            MessageBox.Show("数据已经保存","提示")
        Else
            e.Cancel = True
            MessageBox.Show("没有修改原始数据!","提示")
        End If
    End If
Else
  MessageBox.show("数据已经删除!")
End If
Tables("客户联系人").filter=""

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


加好友 发短信
等级:一尾狐 帖子:410 积分:4280 威望:0 精华:0 注册:2018/7/18 21:08:00
  发帖心情 Post By:2019/10/4 10:30:00 [只看该作者]

给一个客户做的,这个更好用。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20191004102910.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/4 10:30:00 [只看该作者]

我之前测试了没有问题,点击否关闭窗口,点击是提示保存数据后拒绝关闭窗口,完全符合你的设计逻辑:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目143.table



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


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2019/10/4 12:02:00 [只看该作者]

这个感觉像软件的BUG,代码逻辑是没有问题 的,因为大部分情况下都是可以正常执行的,莫名奇妙的会出现几次,而且一旦出现,所有的e.cancel= true
都会失灵,除非重启项目

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


加好友 发短信
等级:三尾狐 帖子:655 积分:7707 威望:0 精华:0 注册:2013/12/11 17:49:00
  发帖心情 Post By:2019/10/4 14:13:00 [只看该作者]


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

附件为操作视频

以下为beforeclose事件代码

If DataTables("出入库主表").HasChanges =True Or DataTables("出入库明细表").HasChanges =True Then
    If  Tables(e.Form.Name & "_制单表").Rows.Count =0  Then
        DataTables("出入库主表").RejectChanges()
        DataTables("出入库明细表").RejectChanges()
    Else
        Dim Result As DialogResult
        Result= messagebox.Show("数据有变动,请保存!","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
        If Result=DialogResult.no Then
            DataTables("出入库主表").RejectChanges()
            DataTables("出入库明细表").RejectChanges()
        ElseIf Result=DialogResult.yes Then            
            MessageBox.Show("请先保存数据后,再关闭!")
            e.Cancel =True 
        End If
    End If
End If
[此贴子已经被作者于2019/10/4 14:26:09编辑过]

 回到顶部