我在插入日期型的数据时出的问题!!!
表a中有一个日期型的字段,定义可以为空
我在插入的时候出现问题:
  insert into a values(:srh1,:srh2,:srh3);
  parameters.parambyname('srh1').value:=edit1.text;
  parameters.parambyname('srh2').value:=strtodatetime(edit2.text);
  parameters.parambyname('srh3').value:=edit3.text;
如果三个edit都添上正确的值(比如在edit2中填1979-1-1),就没什么问题,但要是edit2中要是不填任何值,就出问题,请问我要是想让这个日期字段为空,应该怎么做?

解决方案 »

  1.   

    判断,若edit2为空,则赋值为1900-1-1
      

  2.   

    if trim(edit2.text)='' then
     parameters.parambyname('srh2').value:=nil;
    不知道可不可以?
      

  3.   

    你的表结构看看,可以为空吧,strtodatetime函数要有数据
      

  4.   

    strtodatetime(edit2.text)
    这句话转换出错,判断一下吧
      

  5.   

    顺便说一下,跟上面的错误无关。
    最好把数据库日期的默认值设定一下,否则很多时候Null值取的时候会出现的日期不一样(视DBMS的不同)
      

  6.   

    var v_1:variant;
    begin
      try
        v_1:=strtodatetime(edit2.text);
      except
        v_1:=null;
      parameters.parambyname('srh1').value:=edit1.text;
      parameters.parambyname('srh2').value:=v_1;
      parameters.parambyname('srh3').value:=edit3.text;end;
      

  7.   

    ......但要是edit2中要是不填任何值....
    if trim(edit2.text) <> '' then
    parameters.parambyname('srh2').value:=strtodatetime(edit2.text);//如果为空,则不给'srh2'赋值不就行了……