case RadioGroup1.ItemIndex of
    0:begin
        if not locate('fangan',1,[]) then
        begin
          FieldByName('fangan').AsInteger:=1;
          for i:=0 to checklistbox1.Count-1 do
          begin
            FieldByName('red'+inttostr(idx+1)).AsBoolean:=checklistbox1.Checked[i];
            inc(idx);
          end;
        end
        else
          begin
            showmessage('该项目已存在!');
            exit;
          end;
      end;
执行以上代码,当if之后如果为then则会出错(dataset not in edit or insert mode)  ,else则不会
如果去掉if,只留以下代码则可以正常运行,请各位朋友帮忙看看是什么原因,谢谢
        begin
          FieldByName('fangan').AsInteger:=1;
          for i:=0 to checklistbox1.Count-1 do
          begin
            FieldByName('red'+inttostr(idx+1)).AsBoolean:=checklistbox1.Checked[i];
            inc(idx);
          end;
      end;