以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]ValidateEdit 中的判断  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71073)

--  作者:blsu33
--  发布时间:2015/7/4 11:59:00
--  [求助]ValidateEdit 中的判断
老师,
   想要在ValidateEdit 判断是否符合正则,这块怎么写?

Dim r1 As Row
Dim fdr As Integer = Tables("分类编码方案").Findrow("基础档案名称 = \'部门档案\'")
If e.Col.Name = "编码名称"  OrElse e.Col.Name = "编码规则"  Then
    If e.Text = "" OrElse e.text.Contains(" ") Then \'如果已经输入内容
        e.Cancel = True \'则禁止退出编辑模式
    Else
        If fdr>0 Then
            Dim r As Row=Tables("部门档案").Current
            MessageBox.Show(r1("正则"))
            Dim reg As new System.Text.RegularExpressions.Regex(r1("正则"))
            If reg.Ismatch(e.Text) = False Then
                e.Cancel = True
                
            End If
        End If
    End If
End If
[此贴子已经被作者于2015/7/4 12:08:29编辑过]

--  作者:blsu33
--  发布时间:2015/7/4 12:09:00
--  
.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2014.11.11.1
错误所在事件:部门档案,ValidateEdit
详细错误信息:
未将对象引用设置到对象的实例。


--  作者:狐狸爸爸
--  发布时间:2015/7/4 14:06:00
--  
先用这个分析一下,看看那一行代码出错:

http://www.foxtable.com/help/topics/1485.htm


另:

Dim r As Row=Tables("部门档案").Current

事件中最好不要用Current,用e参数,例如e.DataRow 、e.Row表示触发时间的行,所以应该这样写:

Dim r As Row=e.Row.Current

看看:
http://www.foxtable.com/help/topics/0604.htm


--  作者:blsu33
--  发布时间:2015/7/5 18:07:00
--  
红袍老师,
   这个应该怎么写向您学习下?

--  作者:大红袍
--  发布时间:2015/7/6 9:57:00
--  

Dim r1 As Row

 

其中r1就没有被赋值,肯定报错