我做了一个数据录入窗口,有一个数据是DateTime类型,当我在DBEdit中录入空的数据数据时,程序就报错,请问这是怎么回事?我的代码如下:
   FieldByName('BirthDate').AsDateTime:= StrToDate(DBEdit4.Text);

解决方案 »

  1.   

    不需要指定该字段的值啊。
    不要用数据感应控件DBEdit,用Edit。
    if Edit4.Text<>'' then FieldByName('BirthDate').AsDateTime:= StrToDate(Edit4.Text);
      

  2.   

    //空的当然报错了,不要用DBEdit用一般的Edit,或者用DateTimePicker
    try
      FieldByName('BirthDate').AsDateTime:= StrToDate(DBEdit4.Text);
    except
      
    end;
      

  3.   

    1.用dbedit 还要自己赋值语句干嘛?在里面填好时间然后一个post不就结了么?
    2.用edit就不同了:
      adoquery['BirthDate']:=StrToDate(Edit1.text);
      adoquery.post;
    这样就可以了.
      

  4.   

    为空当然会报错了在post前先验证一下用户的输入是否合法!
      

  5.   

    改成这样试试看
    if dbedit4.text<>'' then
    FieldByName('BirthDate').AsDateTime:= StrToDate(DBEdit4.Text)
    else
    FieldByName('BirthDate').value:= nil;
      

  6.   

    DBEdit在ONEXIT时会自动验证数据格式,如果此时DBEdit.text与数据表中的数据格式不一致,就会报错。在针对Datetime类型数据时最好不用DBEdit,而用EDIT或DateTimePicker。