Foxtable(狐表)用户栏目专家坐堂 → 关于验证数据问题


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

主题:关于验证数据问题

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
关于验证数据问题  发帖心情 Post By:2020/9/7 18:18:00 [只看该作者]

怎样在DataColChanged事件中验证数据不通过时将数据恢复到未修改前的数据呢?


         If d1 < d2 Then

            MessageBox.Show("起始日期必须大于等于终止日期,请核实!","提示")

                e.Cancel=True  这句代码不管用呢?

                Return

            End If



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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/7 20:18:00 [只看该作者]

DataColChanged没有e.Cancel用法,放到DataColChanging事件

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2020/9/7 20:31:00 [只看该作者]

在 DataColChanging 事件中写了如下代码

Dim s1 As String = e.DataRow("终止号")
Dim s2 As String = e.DataRow("起始号")
If s1.length > 3 AndAlso s2.length > 3   Then
    Dim d1 As Integer = CLng(s1.substring(s1.length - 3))
    Dim d2 As Integer = CLng(s2.substring(s2.length - 3))
    If d1 > d2 Then
        MessageBox.Show("起始日期必须大于等于转账日期,请核实!","提示")
        e.Cancel=True
        Return
    End If
End  If

如果验证错误还是回复不了输入前的数据

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/7 20:33:00 [只看该作者]

先看看:http://www.foxtable.com/webhelp/topics/1522.htm

如果符合条件肯定可以

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2020/9/7 20:52:00 [只看该作者]

Dim s1 As String=""
Dim s2 As String =""
Select Case e.DataCol.Name
    Case "起始号"
        s1= e.NewValue
        s2  = e.DataRow("终止号")
        If s1.length > 3 AndAlso s2.length > 3   Then
            Dim d1 As Integer = CLng(s1.substring(s1.length - 3))
            Dim d2 As Integer = CLng(s2.substring(s2.length - 3))
            If d1 >d2 Then
                MessageBox.Show("起始号必须大于等于终止号,请核实!","提示")
                e.Cancel=True
                Return
            End If
        End  If
    Case "终止号"
        s1 = e.DataRow("终止号")
        s2 = e.NewValue
        If s1.length > 3 AndAlso s2.length > 3   Then
            Dim d1 As Integer = CLng(s1.substring(s1.length - 3))
            Dim d2 As Integer = CLng(s2.substring(s2.length - 3))
            If d1 >d2 Then
                MessageBox.Show("起始号必须大于等于终止号,请核实!","提示")
                e.Cancel=True
                Return
            End If
        End  If
End Select
经过测试修改成这样代码能实现,不过看上去代码太繁琐,怎么简化一下呢?



[此贴子已经被作者于2020/9/7 21:27:39编辑过]

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


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

Dim s1 As String=""
Dim s2 As String =""
Select Case e.DataCol.Name
    Case "起始号","终止号"
        If e.DataCol.Name = "起始号"
            s1= e.NewValue
            s2  = e.DataRow("终止号")
        Else
            s1 = e.DataRow("起始号")
            s2 = e.NewValue
        End If
        If s1.length > 3 AndAlso s2.length > 3   Then
            Dim d1 As Integer = CLng(s1.substring(s1.length - 3))
            Dim d2 As Integer = CLng(s2.substring(s2.length - 3))
            If d1 >d2 Then
                MessageBox.Show("起始号必须大于等于终止号,请核实!","提示")
                e.Cancel=True
            End If
        End  If
End Select

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2020/9/7 22:06:00 [只看该作者]


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


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

如果删除删除数据(也就是空值)时弹出错误框



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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/7 22:13:00 [只看该作者]

既然知道空值有问题,就加上判断咯:http://www.foxtable.com/webhelp/topics/1470.htm

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2020/9/7 22:55:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Dim s1 As String=""上传附件
Dim s2 As String =""
Select Case e.DataCol.Name
    Case "起始号","终止号"
 If dr.IsNull("起始号") OrElse dr.IsNull("终止号") Then '如果数量或单价为空
            dr("充值张数") = Nothing
        Return
        End If                                                          是不是的判断新值呢?新值空值怎么判断呢?
        If e.DataCol.Name = "起始号"
            s1= e.NewValue
            s2  = e.DataRow("终止号")
        Else
            s1 = e.DataRow("起始号")
            s2 = e.NewValue
        End If
        If s1.length > 3 AndAlso s2.length > 3   Then
            Dim d1 As Integer = CLng(s1.substring(s1.length - 3))
            Dim d2 As Integer = CLng(s2.substring(s2.length - 3))
            If d1 >d2 Then
                MessageBox.Show("起始号必须大于等于终止号,请核实!","提示")
                e.Cancel=True
            End If
        End  If
End Select

蓝老师加了判断怎么还是弹出错误呢?

[此贴子已经被作者于2020/9/7 22:56:39编辑过]

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/7 23:07:00 [只看该作者]

If s1 > "" andalso s2 > "" andalso s1.length > 3 AndAlso s2.length > 3   Then

 回到顶部