with CDS do begin
    First;
    while Not Eof do begin
      i := i + 1;
      if FieldbyName('ProdGoods').AsString = '' then Exit;  //没有货品
      if (FieldbyName('ProdQty').AsString = '') or (FieldbyName('ProdPrice').AsString = '') then Exit;
      if FieldbyName('ProdQty').AsFloat<=0 then begin
        Result:=0;
        ShowMsg('请输入大于0的数量!');
        Exit;
      end;
      if FieldbyName('ProdPrice').AsFloat<=0 then begin
        Result:=0;
        ShowMsg('请输入大于0的单价!');
        Exit;
      end;
      if FieldbyName('ProdLine').AsString='' then begin
       _Sql := 'Insert into VNO_PRO_DET(COMID,ProdProId,ProdLine,ProdGoods,ProdQty,ProdPrice,ProdrPrice'+
              ',ProdDisc,ProdAmt,ProdRe)'+
              ' Values(''' + p_comid + ''''+
              ','''+ FTableid + '''' +
              ',' + IntToStr(i) +
              ',''' + FieldbyName('ProdGoods').AsString + '''' +
              ',' + FieldbyName('ProdQty').AsString +
              ',' + FieldbyName('ProdPrice').AsString;
       if FieldbyName('ProdrPrice').AsString = '' then
            _Sql := _Sql + ',null'
          else _Sql := _Sql + ','+FieldbyName('ProdrPrice').AsString;
       if FieldbyName('ProdDisc').AsString = '' then
            _Sql := _Sql + ',null'
          else _Sql := _Sql + ',' + FieldbyName('ProdDisc').AsString;
          _Sql := _Sql + ',' + FieldbyName('ProdAmt').AsString+
              ',''' + FieldbyName('ProdRe').AsString+''''+
              ')';
        end
      else begin
        if FieldbyName('ProdLine').AsInteger=0 then begin
          _Sql := 'Insert into VNO_PRO_DET(COMID,ProdProId,ProdLine,ProdGoods,ProdQty,ProdPrice,ProdrPrice'+
              ',ProdDisc,ProdAmt,ProdRe)'+
              ' Values(''' + p_comid + ''''+
              ','''+ FTableid + '''' +
              ',' + IntToStr(i) +
              ',''' + FieldbyName('ProdGoods').AsString + '''' +
              ',' + FieldbyName('ProdQty').AsString +
              ',' + FieldbyName('ProdPrice').AsString;
          if FieldbyName('ProdrPrice').AsString = '' then
            _Sql := _Sql + ',null'
          else _Sql := _Sql + ','+FieldbyName('ProdrPrice').AsString;
          if FieldbyName('ProdDisc').AsString = '' then
            _Sql := _Sql + ',null'
          else _Sql := _Sql + ',' + FieldbyName('ProdDisc').AsString;
          _Sql := _Sql + ',' + FieldbyName('ProdAmt').AsString+
              ',''' + FieldbyName('ProdRe').AsString+''''+
              ')';
        end
        else begin
          i := FieldbyName('ProdLine').AsInteger;
          _Sql := 'update VNO_PRO_DET set ProdGoods = '''+FieldbyName('ProdGoods').AsString+''''+
              ',ProdQty = ' + FieldbyName('ProdQty').AsString+
              ',ProdPrice = ' + FieldbyName('ProdPrice').AsString;
          if FieldbyName('ProdrPrice').AsString = '' then
            _Sql := _Sql + ',ProdrPrice = null'
          else _Sql := _Sql + ',ProdrPrice = '+FieldbyName('ProdrPrice').AsString;
          if FieldbyName('ProdDisc').AsString = '' then
            _Sql := _Sql + ',ProdDisc = null'
          else _Sql := _Sql + ',ProdDisc = '+FieldbyName('ProdDisc').AsString;
          _Sql := _Sql + ',ProdAmt = '+FieldbyName('ProdAmt').AsString+
              ',ProdRe = ''' + FieldbyName('ProdRe').AsString + ''''+
              ' where COMID = '''+ p_comid + ''''+
              ' and ProdProId = ''' + FieldbyName('ProdProId').AsString + ''''+
              ' and ProdLine = ' + FieldbyName('ProdLine').AsString;
        end;
      end;  运行的时候提示个 错误~~~~~~~~~~~~~说插入重复字段
谁帮忙检查一下~~