初级问题,等待中。。。。。。(10分)

  • 主题发起人 woyeah2000
  • 开始时间
W

woyeah2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个程序,在ACCESS中设成了DBECONTRACT中输入的项设成了主键,但输入时如重复
会提示错误,在这里看到了许多方法,如用try except等,我试过后,还是有问题,出错
信息是一样的,说什么主键重复什么的,应该怎么办?很急,谢谢(代码如下)
procedure TFrmCarManage.BtnSaveClick(Sender: TObject);
begin
if (DBEcz.Text='') or (DBEczNo.Text='') or (DBEName.Text='') or (DBEMoney.Text='') or (DBEContract.Text='') then
begin
Application.MessageBox('输入数据不能为空','系统提示');
exit;
end;
TblCar.Refresh;
EdtSum.Text:=IntToStr(TblCar.RecordCount);
DBEcz.ReadOnly:=True;
DBEczNo.ReadOnly:=True;
DBEName.ReadOnly:=True;
DBEMoney.ReadOnly:=True;
DBEContract.ReadOnly:=True;
 
try以后,在delphi环境中还是要显示错误信息的,但执行编译后的exe文件就不会了.
 
用F9运行时也出差,也没关系吗?那做成程序安装文件后,会不会有问题啊?
 
就测试环境有问题,如果使用try机制处理好错误,做成程序安装文件后,就不会弹出小窗口了
 
在提交数据时用
try
adoquery.post;
except
Application.MessageBox('输入数据不能为空','系统提示');
adoquery.cancel;
end;
 
能否告诉我应该怎么样写?

try加在哪?

except加在哪?
 
哥哥啊,能不能加到我的代码中啊,是不是用BDE也一样啊
 
我的理解是:你上面写的检测语句可能不会完成全部检测而造成部分数据没有录入,
因为 or 在检测时只要第一个或第二个不为空就不会检测后面的值。因此我建议用
and 来检测比较全面,例:
if Not ((DBEcz.Text<>'') and (DBEczNo.Text<>'') and (DBEName.Text<>'') and (DBEMoney.Text<>'') and (DBEContract.Text<>'')) then
begin
Application.MessageBox('输入数据不能为空','系统提示');
exit;
end;
try
TblCar.Post;
except
Application.MessageBox('输入数据不能为空','系统提示');
TblCar.Cancel;
DBEcz.SetFocus;
Exit;
end;
TblCar.Refresh;
EdtSum.Text:=IntToStr(TblCar.RecordCount);
DBEcz.ReadOnly:=True;
DBEczNo.ReadOnly:=True;
DBEName.ReadOnly:=True;
DBEMoney.ReadOnly:=True;
DBEContract.ReadOnly:=True;
上面你写的检测语句如果每一项内容分开来检测则不会出现问题。
 
捕捉BDE异常。
在IDE中运行程序,遇到异常时Delphi会先给出提示,程序脱离IDE时,就正常了。
如果想在IDE里不要Delphi的出错提示,可以选择菜单中的[Tools],再选[Debugger Options],
去掉Integrated debugging前面的勾,就好啦。
 
谢谢,楼上的几位兄弟,分已送上,少点,不好意思!
 
多人接受答案了。
 
顶部