我在用Insert into语句向数据表插入数据,其中数据表时在定义时有很多字段是允许空的,但是我在插入数据时values里的值却说不能为空,假设我有个edit1,现在对应数据表中的'名字'字段是允许空的,当edit1为空时不给字段值,当edit1不为空时'名字'字段的值就为edit1.text,请问用insert语句怎么实现,如果光考虑插入一个值在当edit1为空时给'名字'字段一个空格就行了,可以还要方便以后查询及更新数据,用空格代替以后计算字段值时是不是会不方便?

解决方案 »

  1.   

    sqlstr:='insert into 表名(字段名) values('+quotedstr(trim(edit1.text))+')';
    query1.close;
    query1.sql.clear;
    query1.sql.add(sqlstr);
    query1.execSQL;
      

  2.   

    有几种方案你可以试一下,。一。直接给trim(edit1.text)二。给它附null,
    query1.sql.add('insert into 表名 字段名 values :AA')
    if(trim(edit1.text)='')then
    parameterbyname('aa'):=null
    else
    parameterbyname('aa'):=trim(edit1.text);
      

  3.   

    如果字段类型不是char型 的而是int或money型 的呢?用什么方法解决????
      

  4.   

    如果是空的就这样isnull(字段, '') 字符型
    isnull(字段, 0) 数值型
      

  5.   

    'insert into 表名(字段名) values('+isnull(quotedstr(trim(edit1.text)), '')+')'
      

  6.   

    假设edit1输入string型字段值,字段名F1
        edit2输入int字段值,字段名F2一般可以这样做
    var
      sf1,sf2,sqlstr: string;
    begin
      sf1:= trim(edit1.text);
      if trim(edit2.text)='' then
        sf2:='null'
      else
        sf2:=trim(edit2.text); //假设edit2中输入的是合法的数字  sqlstr:= 'insert into tabname(f1,f2) values('+quotedstr(sf1)+','+sf2+')';
      
      query1.close;
      query1.sql.clear;
      query1.sql.add(sqlstr);
      query1.execSQL;
    end;