以文本方式查看主题

-  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=148720)

--  作者:季朝龙
--  发布时间:2020/4/14 10:57:00
--  禁止输入重复值
使用的是外部数据源,后台储存有非常多的序列号,如果用代码一次性输入一万个序列号,并且用以下代码和后台进行比对数据需要非常久才能比对完成,
问题1:是否有什么方法极大减少比对时间?
问题2:如果发现有重复序列号如何实现取消这一万个序列号的输入?
        Dim dr As DataRow
        dr = e.DataTable.SQLFind("序列号 = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then
            MessageBox.Show("序列号:" & "\'" & e.NewValue & "\'" & "已经存在!")
            e.Cancel = True
        End If

--  作者:有点蓝
--  发布时间:2020/4/14 11:17:00
--  
一万个序列号,加上第一个是100001,最后一个是110000,那么到数据库里查询是否有中间区间的号码

dim dr as datarow = datatables("A").sqlfind("序号 >= 100001 and 序号 <= 110000")
if dr isnot nothing then
msgbox(“有重复序列号”)
else
‘添加序列号’
end if

--  作者:季朝龙
--  发布时间:2020/4/14 11:34:00
--  
但是产品序列号不是纯数字的,格式如下:
FR40CAD0099

--  作者:有点蓝
--  发布时间:2020/4/14 11:55:00
--  
文字一样可以比较,前提是序号是连续的。如果序号没有规律那就没有办法。建议到存储过程里使用sql处理:添加一个临时表,把序号先生成出来,然后使用sql关联查询。

或者直接取数据库里的最大编号,在最大编号基础上新增编号,就不会重复了