以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  帮助中"动态错误提示"的代码改编,请教老师们  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=27267)

--  作者:mamuaiqing
--  发布时间:2012/12/26 22:40:00
--  帮助中"动态错误提示"的代码改编,请教老师们

If e.Sender.Text.Length >= 6 Then
    Dim dr As DataRow
    Dim cpmc As String = e.Sender.Text
    DataTables("商品资料").LoadFilter=" [商品编号] = \'" & cpmc & "\'"
    DataTables("商品资料").Load
    dr = DataTables("商品资料").Find("[商品编号] = \'" & cpmc & "\' ")
    If dr IsNot Nothing Then

    e.Sender.Error = "系统中存在相同的编号!"  
   Else
    e.Sender.Error =
""

   End
If

Else

    MessageBox.Show("商品编号不能少于6位数!","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Cancel = True

End If

 

在窗口文本控件"Validating"属性输入上面的代码进行判断商品资料中是否存在相同的编号跟商品编号输入的长度,以上代码还没实验过,不知道对否,根据帮助文件中的"动态错误提示"进行改编的,先请教下老师代码错误与否


--  作者:mamuaiqing
--  发布时间:2012/12/26 22:52:00
--  

上面的代码执行后如果存在相同的编号的话就会像帮助中的那样,文本框边上会出现一个"感叹号"状态,

 

然后再利用"感叹号"状态在"按妞"中用代码进行判断文本控件中是否存在"感叹号"状态的话代码是下面这样吗?一头雾水还没去验证代码是否成功,

Dim HasError AS Boolean

If e.Form.Controls("TextBox1").HasError = True  Then

 

之所以判断状态只是为后面的代码铺路,根据文本状态进行控件内容相关操作

 

 



此主题相关图片如下:错误提示.png
按此在新窗口浏览图片

--  作者:狐狸爸爸
--  发布时间:2012/12/27 8:23:00
--  
实践出真知,自行试验摸索,是最好的办法。
--  作者:mamuaiqing
--  发布时间:2012/12/27 12:03:00
--  
图片点击可在新窗口打开查看难得发现老爹的踪影,老爹提示下嘛,主要是代码中"HasError = True"是不是代表提示状态开的?其它判断自己能解决,希望老爹稍微提示下,非常的感谢!
--  作者:lin_hailun
--  发布时间:2012/12/27 12:12:00
--  
以下是引用mamuaiqing在2012-12-27 12:03:00的发言:
图片点击可在新窗口打开查看难得发现老爹的踪影,老爹提示下嘛,主要是代码中"HasError = True"是不是代表提示状态开的?其它判断自己能解决,希望老爹稍微提示下,非常的感谢!


没有hasError这个属性。你用Error是否为空判断吧。

--  作者:mamuaiqing
--  发布时间:2012/12/27 12:20:00
--  

回林总,我也纠结HasError这个属性,不知道这个属性的概念所以才纠结了,但在帮助文件中的下面代码中出现了这个属性,摸不清到底这个是代表什么

 

如果想在保存的时候统一验证,可以将“保存”按钮的代码设置为:

Dim HasError As Boolean
Dim
r As Row = Tables("客户").Current
If
r.IsNull("邮编") OrElse r("邮编").Length <> 6 Then
    e.Form.Controls("TextBox1").Error = "邮政编码应该是六位数!"
   
HasError = True
Else

    e.Form.Controls("TextBox1").Error""

End
If
If
r.IsNull("分组") Then
    e.Form.Controls("TextBox2").Error = "
必须输入用户分组!"
    HasError = True

Else

    e.Form.Controls("TextBox2").Error = ""

End
If
If
HasError = False Then \'如果没有输入错误,则保存
   r.Save()

End
If


--  作者:lin_hailun
--  发布时间:2012/12/27 14:02:00
--  
 看看帮助的第一句。

 Dim HasError As Boolean

 这是一个变量。

--  作者:mamuaiqing
--  发布时间:2012/12/27 16:44:00
--  
原来是这个,认真研究,感谢林总提醒