Foxtable(狐表)用户栏目专家坐堂 → [求助]如何判断表中setError的状态


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

主题:[求助]如何判断表中setError的状态

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


加好友 发短信
等级:幼狐 帖子:49 积分:452 威望:0 精华:0 注册:2017/11/1 10:36:00
[求助]如何判断表中setError的状态  发帖心情 Post By:2018/11/30 10:19:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_15435441981553.png
图片点击可在新窗口打开查看
想在“保存并关闭”按钮的代码前加一个判断。
表中是否有红色的设置错误标记,如果还有,就不保存。
请问老师,如何判断表中的SetError状态?

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


加好友 发短信
等级:幼狐 帖子:49 积分:452 威望:0 精华:0 注册:2017/11/1 10:36:00
  发帖心情 Post By:2018/11/30 10:28:00 [只看该作者]

这个表是临时表,没有表事件,很头疼。请老师指点实现思路。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/30 11:49:00 [只看该作者]

1、当初,你是如何setError的?能否用一个全局变量,把所有的信息记录起来?

 

2、然后你直接判断变量?

 

3、如果不用变量,那么你需要循环每一行,循环每一列,读取error的值,看有没有内容。


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


加好友 发短信
等级:幼狐 帖子:49 积分:452 威望:0 精华:0 注册:2017/11/1 10:36:00
  发帖心情 Post By:2018/11/30 12:09:00 [只看该作者]

setError是用循环去做的,先前也考虑用全局变量来判断,但是循环的最后一次,如果没有setError,全局变量为空,就判断不出来了。
把所有setErroe信息记录起来,请甜老师指点具体代码?

下面是我的setError代码
Dim mc As DataRow
For Each dr As Row In Tables("预览").Rows
    For Each le As Col In Tables("预览").Cols
        If dr.IsNull(le.Name) Then
            dr.DataRow.SetError(le.Name,"不能导入空值")
        End If
        If dr("积分")= 0 Then
            dr.DataRow.SetError("积分","积分值为0不必导入,请删除该行")
        End If
        'mc = DataTables("ygb").Find("SF_ID = " & dr("身份证号"))
          mc = DataTables("ygb").Find("SF_ID = '" & dr("身份证号") & "'")
        If mc IsNot Nothing Then '如果找到的话
            If dr("姓名") <> mc("name") Then
                dr.DataRow.SetError("姓名","导入的姓名与员工档案的姓名不一致,请修改后再重新导入")
            End If
        Else
            dr.DataRow.SetError("身份证号","员工档案没有该身份证号记录,查无此人或身份证号错误")
        End If
    Next
Next

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


加好友 发短信
等级:幼狐 帖子:49 积分:452 威望:0 精华:0 注册:2017/11/1 10:36:00
  发帖心情 Post By:2018/11/30 12:16:00 [只看该作者]

先前试着写代码,全局变量只保存最后一次循环,getError的值。
'For Each dr As Row In Tables("预览").Rows
'    For Each le As Col In Tables("预览").Cols
'        If dr.DataRow.GetError(le.Name) = ""  Then
'            vars(vv) = 0
'        else
            vars(vv) = 1
         End If
'     Next
'Next
想用Find来实现,但不知道怎么写代码。看了GetError说明,也没找到合适的例子。
[此贴子已经被作者于2018/11/30 12:21:59编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/30 12:31:00 [只看该作者]

代码改成

 

For Each dr As Row In Tables("预览").Rows
    For Each le As Col In Tables("预览").Cols
        If dr.DataRow.GetError(le.Name) > ""  Then
            msgbox("有错误")
            goto label1
        End If
    Next
Next

 

msgbox("保存")
Tables("预览").save

 

label1:

msgbox("不保存")


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


加好友 发短信
等级:幼狐 帖子:49 积分:452 威望:0 精华:0 注册:2017/11/1 10:36:00
  发帖心情 Post By:2018/12/3 10:22:00 [只看该作者]

上面这个代码,执行完Tables("预览").save,还是要执行label1:msgbox("不保存")

??

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/3 10:33:00 [只看该作者]

参考

 


msgbox(1)
goto label1

msgbox("保存")

 
label1:
msgbox("不保存")


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


加好友 发短信
等级:幼狐 帖子:49 积分:452 威望:0 精华:0 注册:2017/11/1 10:36:00
  发帖心情 Post By:2018/12/3 10:38:00 [只看该作者]

没看懂

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/3 11:21:00 [只看该作者]

执行6楼代码有没有问题?执行8楼测试是什么结果?

 回到顶部
总数 15 1 2 下一页