小问题?大问题?Delphi主从表中,如何判断明细表中资料重复?

h_q_p 2002-09-05 05:22:43
在Delphi中,Table1为请购单主表与Table2请购单明细表,通过
单号关联成主从表结构,实现时,主表(Table1)用DBEdit控件,从
表Table2用DBGrid控件,如何在DBGrid中输入一货品编码后,判
断此编码在本单中是否重复?
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_q_p 2002-09-07
  • 打赏
  • 举报
回复
to songandlan(小松一夜听春雨) :
新增与修改本无实大区别,事实上是在字段SetText时作处理,若修改则查找oldvalue,改为newvalue即可....
songandlan 2002-09-06
  • 打赏
  • 举报
回复
那修改的时候呢?
循环判断也不慢啊!
h_q_p 2002-09-05
  • 打赏
  • 举报
回复
非常感谢各位。
用主键(或唯一索引)时,因从表用了缓冲,故保存之前不能起作用。
用循环判断效率不高。现有用一笨办法,那是将新增的将货品编号
置一数组中,每次到本数组中查找。

不知大家还有什么好建议?
b51 2002-09-05
  • 打赏
  • 举报
回复
在DBGRID 的AFTERPOST加入下面代码:
WITH ADOQUERY1 DO
BEGIN
SQL。CLOSE;
SQL。CLEAR;
SQL。ADD(‘SELECT 编号 FROM TABLE GROUP BY 编号 HAVING COUNT(编号)>1');
open;
while recordcount>1 do
MessageBox(‘编号重复', '提示', MB_OK);



END;
b51 2002-09-05
  • 打赏
  • 举报
回复
在DBGRID 的AFTERPOST加入下面代码:
WITH ADOQUERY1 DO
BEGIN
SQL。CLOSE;
SQL。CLEAR;
SQL。ADD(‘SELECT 编号 FROM TABLE GROUP BY 编号 HAVING COUNT(编号)>1');
open;
while recordcount>1 then
MessageBox(‘编号重复', '提示', MB_OK);



END;
yxg20803 2002-09-05
  • 打赏
  • 举报
回复
主键最好了!!!
blazingfire 2002-09-05
  • 打赏
  • 举报
回复
用循环来判断吧
madyak 2002-09-05
  • 打赏
  • 举报
回复
建议利用主键,让系统自己来处理重复问题!
jyqkr 2002-09-05
  • 打赏
  • 举报
回复
那你把表id和货品编码设为主键,让数据库来维护数据正确性
ccnh 2002-09-05
  • 打赏
  • 举报
回复
保存时判断直接在明细表上建唯一索引就可以了。
输入时判断,先取当前输入的货品编码的值,然后用BOOKMARK记录当前记录的位置,然后LOCATE或循环找是否有其他编码相同的记录,最后用BOOKMARK回到当前记录。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧