以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 禁止输入重复值 (http://foxtable.net/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关联查询。 或者直接取数据库里的最大编号,在最大编号基础上新增编号,就不会重复了
|