以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于验证数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154196) |
-- 作者:裴保民 -- 发布时间:2020/9/7 18:18:00 -- 关于验证数据问题 怎样在DataColChanged事件中验证数据不通过时将数据恢复到未修改前的数据呢? If d1 < d2 Then MessageBox.Show("起始日期必须大于等于终止日期,请核实!","提示") e.Cancel=True 这句代码不管用呢? Return End If |
-- 作者:有点蓝 -- 发布时间:2020/9/7 20:18:00 -- DataColChanged没有e.Cancel用法,放到DataColChanging事件 |
-- 作者:裴保民 -- 发布时间: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 如果验证错误还是回复不了输入前的数据
|
-- 作者:有点蓝 -- 发布时间:2020/9/7 20:33:00 -- 先看看:http://www.foxtable.com/webhelp/topics/1522.htm 如果符合条件肯定可以
|
-- 作者:裴保民 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间: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
|
-- 作者:裴保民 -- 发布时间:2020/9/7 22:06:00 -- 此主题相关图片如下:截图06.jpg 如果删除删除数据(也就是空值)时弹出错误框 |
-- 作者:有点蓝 -- 发布时间:2020/9/7 22:13:00 -- 既然知道空值有问题,就加上判断咯:http://www.foxtable.com/webhelp/topics/1470.htm |
-- 作者:裴保民 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/9/7 23:07:00 -- If s1 > "" andalso s2 > "" andalso s1.length > 3 AndAlso s2.length > 3 Then |