Foxtable(狐表)用户栏目专家坐堂 → 切换用户时有必填字段为空如何中止切换?(已解决)


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

主题:切换用户时有必填字段为空如何中止切换?(已解决)

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
切换用户时有必填字段为空如何中止切换?(已解决)  发帖心情 Post By:2013/1/8 21:47:00 [显示全部帖子]

各位老师,

 

我在BeforeSaveDataRow用了代码如果有必填项目为空的话禁止保存,并且自动定位到为空的地方,关闭项目时也会提示,但现在问题是切换用户时我在最前面加了保存项目的代码,就是想说切换前先检查是否有必填字段没填就中止。

'切换前先保存
Syscmd.Project.Save()

 

但当点切换按钮时提示有为空的项目,确定后却不会再自动跳到为空处等待处理,而是直接运行下面的代码去了。除了把BeforeSaveDataRow整个代码复制到切换按钮处以外,还有什么其他办法可以实现切换前为空的话必须先处理才能切换?

 

谢谢!


[此贴子已经被作者于2013-1-10 14:52:50编辑过]

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/10 9:50:00 [显示全部帖子]

谢谢老师,但是加了那句也不可以,如果改成

For Each dt As DataTable In DataTables
    dt.Save()
Next

 

接其他代码.....

 

可以自动定位到为空的表单及字段,但是一按确定按钮又继续往下了,


此主题相关图片如下:360截图20130110094855389.jpg
按此在新窗口浏览图片

再请教大家还有没有其他办法定位到为空的那里继续编辑,中止切换?

谢谢!



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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/10 10:15:00 [显示全部帖子]

“要么,用一个全局变量标志是切换时的保存,然后在保存的地方做一个判断。”

 

这个能说的详细点吗,谢谢!


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/10 11:37:00 [显示全部帖子]

好的,做了个简单的例子,随便在产品编码上增加一行,然后按配置栏上的“切换用户”按钮,如果产品编码有空时就必须先去处理,切换按钮下面的代码就不能运行即窗口1不会打开。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:为空验证.foxdb

 

谢谢!


 

[此贴子已经被作者于2013-1-10 13:53:22编辑过]

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/10 13:47:00 [显示全部帖子]

关键是不知道怎么禁止切换?

因为我的保存前验证的代码是在全局表事件中通用的,有e参数,在保存时不管是主表,明细表或关联表都可以自动定位到为空的表及具体行中,

 

如果到切换按钮中来判断因为没有e参数,就不知道怎么自动定位到为空的那张表了,如果把e.datatable换成Currenttable则代码中到处都提示出错了,很多e参数的地方都不知道要怎么修改才可以。

 

下面是全局代码中的代码:请问大家要怎么正确的用到切换代码当中?

 

'集合系统表中所有有必填字段的表
Dim tbs As String
tbs = DataTables("系统表").GetComboListString("表名","必填字段 is not Null ")
If tbs > "" Then
    '保存前检查不为空的列是否为空
    If tbs.contains(e.DataTable.Name)  Then
        Dim dr As DataRow = DataTables("系统表").Find("表名 = '" & e.DataTable.Name & "'")
        Dim s As String = dr("必填字段")
        Dim ss() As String = s.split("\")
        For i As Integer = 0 To ss.Length - 1
            If e.DataRow.IsNull(ss(i)) Then
                MessageBox.Show("'" & e.DataTable.Name & "'的" & "'" & ss(i) & "列'不能为空!")
                If e.DataTable.name Like "*明细" Then
                    For Each re As Relation In Relations
                        If e.DataTable.Name = re.ChildTable.Name Then  '如果是明细表
                            Dim tbname As String = re.ParentTable.Name & "." & re.ChildTable.Name '得到关联表
                            MainTable = Tables(re.ParentTable.Name)
                            '定位到为空行的父行
                            Tables(MainTable.Name).Position = Tables(MainTable.Name).Findrow(e.DataRow.getparentrow(re.ParentTable.Name))
                            Tables(tbname).Position = Tables(tbname).FindRow(e.DataRow) '定位到为空行的行
                            e.Cancel = True
                            Return
                            Exit For
                        End If
                    Next
                Else
                    Tables(e.DataTable.Name).Position = Tables(e.DataTable.Name).FindRow(e.DataRow)
                    MainTable = Tables(e.DataTable.Name)
                    e.Cancel = True
                   Exit For
                End If
             End If
        Next
    End If
End If


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/10 14:00:00 [显示全部帖子]

谢谢blackzhu,那个代码只能用于单张具体的表,我是要通用的,即你说的所有有“表A"的地方都要换成通用的,在

BeforeSaveDataRow中因为有e参数,所有我现在的代码保存时都没问题,关键是要在”切换用户“按钮上因为没有e参数我就不知道要怎么实现了。

 

我刚才上传的那个例子已经修改为通用代码的了。

[此贴子已经被作者于2013-1-10 14:02:10编辑过]

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/10 14:52:00 [显示全部帖子]

谢谢林老师,可以了。谢谢blackzhu!

 回到顶部