我的结构是这样的:
try
   try
     //执行将记录插入库的语句
     parasmeter.parasbyname('Date').value:=strtodate(Dtp.Date);
     //其中有个参数是关于日期的
   except
     on e:exception do
       showmessage(e)
   end
finally
   shomwessage('数据保存成功!');
end;
   我的日期控件做成了,可以输入也可以选择的方式,但如果输入"2003-0-0",这时候就提示出错,说日期不正确,数据不会入库,但还是提示"数据保存成功!",请问我该怎么做?!
   我要实现插入成功后才提示"成功",请问该怎么做!?

解决方案 »

  1.   

    我想到是不是先查库中的数据条数,记录为A,等插入操作后,再查数据条数为B,
    if b>a then
       showmessage('成功!');
    但这样做不大合理吧..请问高手么怎么处理这样的问题..谢谢....up者也得分..
      

  2.   

    你的语句不会执行到except,因为在strtodate的地方就出错了.....可以在之前判断你输入的日期是否正确...但怎么判断一个日期是合法的日期呢??
      

  3.   

    你不要在finally语句后写showMessage()(而且你写成了shomwessage,呵呵),因为try后面不管你程序出不出错,finally后的语句是程序始终要执行的,一般用来释放资源,关闭文件这些的。建议你在入库之前对日期格式进行检查,看是否为数据库所要求的正确的日期格式。Email:[email protected]
      

  4.   

    在finally段的代码是肯定要执行的(不管是否出现异常,哪怕是中间有exit),这是DELPHI的一个重要的特点。   try
         //执行将记录插入库的语句
         parasmeter.parasbyname('Date').value:=strtodate(Dtp.Date);
         //其中有个参数是关于日期的     shomwessage('数据保存成功!');//挨着except
       except
         on e:exception do
           showmessage(e)
       end   
      

  5.   

    try
         //执行将记录插入库的语句
         parasmeter.parasbyname('Date').value:=strtodate(Dtp.Date);
         //其中有个参数是关于日期的
       except
         on e:exception do
           showmessage(e)
         exit;
       end
       shomwessage('数据保存成功!');
    end;finally是不管怎么样,一定回执行,那你的ShowMessage是一定执行的。strtodate(Dtp.Date);这句我不太明白,如果你用的是DateTimePicker,直接就是日期格式了。判断一个字符串是不是有效的日期有个很好的函数:function TryStrToDate(const S: string; out Value: TDateTime): Boolean; overload;
    function TryStrToDate(const S: string; out Value: TDateTime; const FormatSettings: TFormatSettings): Boolean; overload;
      

  6.   

    如果用b>a判断,不如用b=a+1来判断吧(如果是插入一条记录)
      

  7.   

    s_lim(玄鸟) ,楼上的,这样子做似乎感觉不合理啊....而且代码多了很多.   请问副乡长...对于插入记录,插入成功则弹出信息,"成功!",怎么做比较合适呢?!....对于b=a+1后者b>a这样怎么说法?!
      

  8.   

    我昏,我不是答了你了吗?不用Finally不就得了。
      

  9.   

    try
         //执行将记录插入库的语句
         parasmeter.parasbyname('Date').value:=strtodate(Dtp.Date);
         //其中有个参数是关于日期的如果出错跳到Except,ShowMessage不会执行
         //如果不出错,执行showmessage,except不会执行,     shomwessage('数据保存成功!');//挨着except
       except
         on e:exception do
           showmessage(e)
       end