Adoquery中如何控制某个字段不录入重复值? 现在我用了Adoquery的updatebatch模式来录入数据,当某个字段录入了已存在的值时 ,就给予提示。注意:是即时提示,不是最后提示,即光标离开该行时就提示。我在beforepost()中写了校验代码,但是需要判断该值是否存在时,还是要遍历其他记录,这就导致循环触发beforepost()。现在效果很不好。有什么好办法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很简单,你另外用一个StringList,在每次Post后,都用该字段全部内容更新StringList值。这样,每次beforepost前,比对该字段与stringlist值是否相同,如此即可。 frank_lee_cn:在每次Post后,都用该字段全部内容更新StringList值。-------------这不是要读取数据集的所有记录吗?这样会再触发beforepost()的。麻烦就在这点。 “某个字段录入了已存在的值时 ,就给予提示” 就必须遍历全表的该字段。关键问题是查询的时间会越来越差 用StringList记录所有值,再从中查找是否重复,可以一定程度减小查询的开销,但多客户端时,该方法有时失效,比如几个客户端同时录入相同值。个人觉得应该从数据库查询开始优化,比如改字段的索引建了没?这样会快很多。或者其他方式尽量减少查询。 lzg827:现在不是开销的问题,现在不用遍历全表,而只是数据集中的录入记录。现在的问题是,如果遍历,就会触发beforepost(),而我的校验代码正是在beforepost()中写的。这样,不等于循环了吗 我一般把校验的事情,放在插入之前的代码。没有放在beforepost()中,其实效果的差别不是很大,但省事,呵呵。 post到临时表去,就不会有并发问题了 kaikai_kk:post到临时表中,还是会触发beforepost()啊,现在不是并发的问题。 这种情况,建议楼主用单条录入。不要用dbedit等控件,先用edit等接收输入,然后在按下提交或保存时,用SQL语句校验是否有重复的记录,有则让用户修改,没有则用sql语句或操作ado,保存至数据库。推荐用SQL语句,这样可避免由多用户同时操作引起的一些问题。 造句大赛:不写程序,我能................................. 最快的树形结构生成算法 if 简单语句问题编译出错! exept on e:ereaderror do是什么意思呀 请问如何在Combobox中列出指定表的所有字段名? 最近写的2的数据库软件,大伙交流学习一下 怎样保存记录集! 窗体句柄的问题 请教ADOTable中几个Field相关属性 有个用时间查询的问题解决不了,请教各位,望多多指教!!! 先谢谢了 画TCHART XE2下报表控件的问题
这样,每次beforepost前,比对该字段与stringlist值是否相同,如此即可。
“某个字段录入了已存在的值时 ,就给予提示”
就必须遍历全表的该字段。关键问题是查询的时间会越来越差
用StringList记录所有值,再从中查找是否重复,可以一定程度减小查询的开销,但多客户端时,该方法有时失效,比如几个客户端同时录入相同值。个人觉得应该从数据库查询开始优化,比如改字段的索引建了没?这样会快很多。或者其他方式尽量减少查询。
post到临时表去,就不会有并发问题了