我这个APPEND,POST只是插入一大段文字到后面一个字段里。却提示不能将NULL插入主键。如下XXID是主键,我只是修改NR的内容。POST处报错:不能将NULL插入GG_XX.XXID我的NR字段是clob,是不是不能用TBlobField?那应该用什么?
with query1 do
      begin
        close;
        sql.Clear;
        sql.Add('insert into GG_XX (XXID,BT,FSR,FSRDW,FSDX,JSDW,YXJ) VALUES ('''+bfid+''','''+BT+''','''+inttostr(YHID)+''','''+inttostr(YHDW)+''','''+fsdx[i]+''','''+fsdw[i]+''',''5'')');
        ExecSQL;
        close;
        sql.Clear;
        sql.Add('select NR from GG_XX where XXID = '''+bfid+'''');
        open;
        Append;
        TBlobField(FieldByName('NR')).LoadFromStream(vstream);
        Post;
        close;
        sql.Clear;
        sql.Add('insert into GG_XXYD (XXID) VALUES ('''+bfid+''')'); // SEQ_GG_XX.CurrVal
        ExecSQL;
      end;

解决方案 »

  1.   

    1.你的字段如果是以2进制的形式在数据库中存储的,例如ORACAL是BLOB字段,就是可以用TBLOBFIELD进行插入或更新。
    2.你使用Append,作用是 在数据集底部打开一个新的空白数据记录,并且将当前记录指向这个空白的新数据。你在选择出来NR字段后,使用Append,新打开了一条空白记录,各个数据均是空白,然后你修改NR,之后POST提交,如此当然是不可能提交到数据库的,提示你ID错误。
    如果你想在原有数据库的基础上另加新的数据记录,此时你需要将所有非空字段进行填写后才能POST。
    如果你只是想修改原有的记录,你可以使用EDIT,然后在更新NR后,再POST.