以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口关闭按钮  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=117981)

--  作者:deliangzhaoe
--  发布时间:2018/4/22 16:48:00
--  窗口关闭按钮
窗口A中的关闭窗口按钮,想要实现的功能:
点击关闭按钮时,如果窗口A中的表A未作修改,窗口A直接关闭;如果窗口A中的表A已作修改,则询问是否保存表A:
1.如果点否不保存,则删除修改后未保存的行,窗口A关闭
2.如果点是则保存,并检查表A中新增的所有行中列1、列2、列3是否为空值。如果不是空值,则表A保存,窗口A关闭;如果任一列为空值,则返回窗口A,填写列1、2、3的值。
请帮我改一下代码:
If Forms("新增安全设施维保记录").opened Then
Dim nms() As String = {"维保日期","维保内容","维保人"}   \'不允许为空的列名
    Dim dt As DataTable=Tables("新增安全设施维保记录_table1").DataTable
   If MessageBox.Show("当前表已修改,是否保存?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information)=7 Then \'如果按否,则删掉本行数据
        For Each dr As DataRow In dt.DataRows
            If dr.RowState = DataRowstate.added Then
                dr.delete
            End If
        Next
    Else \'否则退出
        For Each nm As String  In nms
                If dr.isnull(nm) Then
                    messagebox.show(nm & "维保日期/维保内容/维保人三列必须输入内容,否则请先删除无内容的行")
                    Return
                Else
                    dt.save
                    e.Form.close
        Return
    End If
......

--  作者:有点甜
--  发布时间:2018/4/22 20:29:00
--  


Dim nms() As String = {"维保日期","维保内容","维保人"}   \'不允许为空的列名
Dim dt As DataTable=Tables("新增安全设施维保记录_table1").DataTable
If dt.HasChanges Then
    If MessageBox.Show("当前表已修改,是否保存?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information)=DialogResult.Yes Then \'如果按否,则删掉本行数据
        For Each dr As DataRow In dt.datarows
            For Each nm As String  In nms
                If dr.isnull(nm) Then
                    messagebox.show(nm & "维保日期/维保内容/维保人三列必须输入内容,否则请先删除无内容的行")
                    Return
                End If
            Next
        next
        dt.save
       
    End If
End If

 

e.form.close

[此贴子已经被作者于2018/4/22 20:29:53编辑过]

--  作者:deliangzhaoe
--  发布时间:2018/4/23 8:25:00
--  
不行啊老师,
现在的问题:
出现“是否保存“的提示框后,如果点击”是“,不保存,继续出现提示框”是否保存“,再点击是,保存,提示框关闭。
如果点击一次”否“,提示框不关闭,点击两次”否“后,新增的行删除了,提示框仍不关闭,继续点击”否“,提示框仍不关闭,再点击”是“,提示框关闭,窗口B关闭。
想要实现:
点击”是“,如果三列已输入内容,直接保存,关闭提示框,如果这三列中有空值,返回窗口B继续输入内容。
点击”否“,不保存修改,提示框关闭,删除当前修改的行,窗口B关闭

--  作者:有点甜
--  发布时间:2018/4/23 8:48:00
--  
不可能,请单独使用2楼代码。如果有问题,上传实例测试。
--  作者:deliangzhaoe
--  发布时间:2018/4/23 10:04:00
--  
我上传个实例吧:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

三列有空白时,不删除行


[此贴子已经被作者于2018/4/23 10:54:27编辑过]

--  作者:有点甜
--  发布时间:2018/4/23 10:10:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


--  作者:deliangzhaoe
--  发布时间:2018/4/23 11:46:00
--  
我的项目有问题:
页面集合中的七个页面,七个表,点击除”警示告知类台账“之外的所有六个表的”添加维保记录“中的”新增一行“按钮,警示告知类台账中的第五行都在窗口B中新增七行,并且保存。这样当我点击保存提示框中 的”否“的时候,不能删除窗口B 中已保存的行,所以重复出现保存提示框。

问题出在哪个事件?我找了很长时间,也没找到


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

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


--  作者:有点甜
--  发布时间:2018/4/23 11:54:00
--  
看你的操作对应的会连锁的触发其它什么事件,注释掉那些事件代码,一步步打开处理,确定出错代码。
--  作者:deliangzhaoe
--  发布时间:2018/4/23 14:14:00
--  
这个问题已经解决了,谢谢老师
问题出在窗口B的beforeclose的代码上

但是窗口B新增一行时,窗口B中仍不出现新增的行

--  作者:有点甜
--  发布时间:2018/4/23 14:26:00
--  

请上传可以测试的例子测试。说明测试步骤。