Delphi中如何加判断语句判断刚刚输入的记录是重复的信息 ( 积分: 100 )

  • 主题发起人 主题发起人 cys805
  • 开始时间 开始时间
C

cys805

Unregistered / Unconfirmed
GUEST, unregistred user!
问一下:情况:在调价单中输入一条记录(商品编号、商品名称、新进价、供应商信息等等),在调进价单模块输入相同的商品时请增加提示功能。目前在调进价单中输入了相同的商品系统没有提示,到单据保存时出现单据不能保存。
我现在的想法是:在Query1.NewRecord事件中添加代码,先在数据库中判断一下,看有没有这条记录,如果有相同的商品编码就MessageDlg()提示一下。这个要怎么写代码?
一种是在‘保存’按钮事件中写;一种是在 Query1.NewRecord中加判断?
我现在想用Query1GoodsID.NewValue= Query1GoodsID.OldValue作判断,怎么作?
急!!!!!!!!!!
 
问一下:情况:在调价单中输入一条记录(商品编号、商品名称、新进价、供应商信息等等),在调进价单模块输入相同的商品时请增加提示功能。目前在调进价单中输入了相同的商品系统没有提示,到单据保存时出现单据不能保存。
我现在的想法是:在Query1.NewRecord事件中添加代码,先在数据库中判断一下,看有没有这条记录,如果有相同的商品编码就MessageDlg()提示一下。这个要怎么写代码?
一种是在‘保存’按钮事件中写;一种是在 Query1.NewRecord中加判断?
我现在想用Query1GoodsID.NewValue= Query1GoodsID.OldValue作判断,怎么作?
急!!!!!!!!!!
 
在'保存'按钮事件中写个check函数,返回boolean;就可以了。
procedure BtnSaveClick(Sender : TObject);
var
cur_ware_id : string
begin
cur_ware_id := 'xxx';
if IsWareExist(cur_ware_id) then
begin
messagebox(...);
exit;
end;
执行插入;
end;

function IsWareExist(a_ware_id : string) : Boolean;
var
sqlstr : string;
begin
result := false;
sqlstr := ' select ware_id from ware where ware_id = ''' + a_ware_id + ''' '
query.close;
query.sql.clear;
query.sql.add(sqlstr);
query.open;
if query.recordcount > 0 then
result := ture;
query.close;
end;
 
在数据库设主键
 
能不能不在‘保存’按钮写?
 
楼上的方法:
procedure BtnSaveClick(Sender : TObject);
begin
try
执行插入;
except
messagebox(...);
exit;
end;
end;
 
在‘保存’按钮写是比较好的方法,在保存之前都有可能变动数据的;
 
现在‘保存’按钮已经写好了,用户要求在输入的时候加多一个提示的。
 
你的输入框是什么?Edit?
那可以写到change事件里,或者其他控件的keypress
 
在保存的时候判断是比较好的,因为不只一个客户端在录入商品信息,你如果在输入的过程中就判断,那么在输入的时候可能是不重复的,之后其它客户端可能又占用了这个号,所以在保存的时候就重复了,让用户很难理解的。

我的做法是:加唯一约束,然后在提交之前截获这个约束错误,换成比较人性化的提示。
 
你是直接用在grid里录入的吗?那将判断写到beforepost里比较合适了,如果重复就abort掉。
 
二楼的方法不是挺好的吗?
对你 保存 按钮也不需要改动内容,只是在之前进行一个检查而已,而且也有你要的 提示
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
871
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部