以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于保存时遇到重复值或空值的判断  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83115)

--  作者:amao47kiki2
--  发布时间:2016/3/31 18:26:00
--  关于保存时遇到重复值或空值的判断

我在BeforeSaveDataRow中设置以下代码

Dim dr As DataRow 
dr = e.DataTable.Find("档案索引号= \'" & e.DataRow("档案索引号")& "\'")
If dr IsNot Nothing Then
     MessageBox.Show("此档案索引号已经存在!")
     e.Cancel = True
End If
If e.DataRow.IsNull("档案索引号")Then
     MessageBox.Show("档案索引号不允许为空!")
     e.Cancel = True
End If

保存的时候确实也成功了。但是,我发现判断重复值的时候,判断范围过大。例如我上传的图中,所有的档案索引号都是7个字符的(如“DA00279”),我录入的是(如“DA0027”),代码居然也判断有重复。我上面的代码find用的是“=”,也没有用“like”和通配符,为什么也会认为重复呢?要怎么写才对?




另外,论坛怎么插入图片?原来要用IE浏览器



此主题相关图片如下:11.png
按此在新窗口浏览图片
[此贴子已经被作者于2016/3/31 18:32:04编辑过]

--  作者:amao47kiki2
--  发布时间:2016/3/31 18:55:00
--  

搞清楚了,dr = e.DataTable.Find("档案索引号= \'" & e.DataRow("档案索引号")& "\'")应该改为

 

dr = e.DataTable.Find("档案索引号= \'" & e.DataRow("档案索引号")& "\'",,1) 意思是要搜索第二条记录。

 

按我原来的,只是存在一条记录。


--  作者:大红袍
--  发布时间:2016/3/31 19:19:00
--  

 


dr = e.DataTable.Find("档案索引号= \'" & e.DataRow("档案索引号")& "\' and _Identify <> " & e.DataRow("_Identify"))

[此贴子已经被作者于2016/3/31 19:19:19编辑过]