1.我用一个TDBEdit的控件连接数据库的某表的日期字段
当调用ADOQuery1.insert或ADOQuery1.edit函数后,只要在该TDBEdit控件输入非法日期然后切换到其它TDBEdit控件时就会出错
是不是输入焦点一切换到其它TDBEdit控件该非法日期就会提交并触发错误?
能否在切换焦点之前验证该日期字符串的合法性?用什么函数判断?在该控件的什么事件里处理?
2.随便问一下,对于数据库操作引起的异常该如何处理呢?譬如插入的新记录的主键与原有的重复等,一定要在提交这个SQL操作之前先检查语句的合法性吗?可不可以在出错之后处理(我不想程序终止,只要提示一下用户操作失败即可)?我试过try...except...end,好像没什么作用因为赶做一个作业,才学了Delphi两个多星期,所以希望大家能说清楚一点,非常感谢

解决方案 »

  1.   

    第三方控件有TDBDateTimePicker,如LMD,如果不想用第三方控件,用TDateTimePicker,比较好一些
      

  2.   

    可以有通过指定tdbedit的格式啊,在转到这个控件之间对日期格式进行检查或者在输入时进行检查
      

  3.   

    1.我一般在字段的OnSetText事件中检测;
    2.把adoquery的LockType属性值设为ltBatchOptimistic,这样只有执行adoquery.updatebatch后修改的数据才提交给数据库,这样用
    try
      adoquery.updatebatch;
    except
    end;
    可以达到目的。