我这个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;
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;
2.你使用Append,作用是 在数据集底部打开一个新的空白数据记录,并且将当前记录指向这个空白的新数据。你在选择出来NR字段后,使用Append,新打开了一条空白记录,各个数据均是空白,然后你修改NR,之后POST提交,如此当然是不可能提交到数据库的,提示你ID错误。
如果你想在原有数据库的基础上另加新的数据记录,此时你需要将所有非空字段进行填写后才能POST。
如果你只是想修改原有的记录,你可以使用EDIT,然后在更新NR后,再POST.