for i:=0 to Group-1 do
  begin
    l:=0;
    for j:= 0 to Item-1 do
    begin
      TmpStr:=TmpStr+IntToStr(Atom[i*item+j])+',';
      FreqArr[k] := Atom[i*item+j];
      SubArr[l] := Atom[i*item+j];   //得到组内成员
      inc(K);
      Inc(l);
    end;
  end;  DM1.TblNoOrder3.Insert;
  for i:= 0 to Group-1 do
  begin
    for j:= 0 to Item-1 do
    begin
      DM1.TblNoOrder3.FieldByName('Freq'+ IntToStr(j+1)).Value := SubArr[j];
    end;
    //DM1.TblNoOrder3.FieldByName('id').Value:=
    //DM1.TblNoOrder3.FieldByName('GroupNum').Value:=
    DM1.TblNoOrder3.FieldByName('Success').Value:= IntToStr(funcorder3(Item,SubArr));
    DM1.TblNoOrder3.FieldByName('Project').Value:= IntToStr(Count+1);
    //DM1.TblNoOrder3.Post;
  end;
  DM1.TblNoOrder3.Post;这应该怎么写呀?
数据库操作放在哪里?

解决方案 »

  1.   

    要给DM1.TblNoOrder3.FieldByName('id').Value赋一个不重复的键值,
    可以用一个QUERY取得当前最大的ID值,
    select max(id) from table1
    然后DM1.TblNoOrder3.Insert;
      for i:= 0 to Group-1 do
      begin
        for j:= 0 to Item-1 do
       begin
        DM1.TblNoOrder3.FieldByName('id').Value:=max+(j+1)*i;
      end;
      DM1.TblNoOrder3.Post当然了如果你把ID设为IDENTITY字段也可以
      

  2.   

    i made a mistake ,it should be:
    DM1.TblNoOrder3.FieldByName('id').Value:=max+i*item+j+1;
      
      

  3.   

    我想你这样的操作也是会出错的!Post在哪里?如果Post在循环的外面的话,还是会出现很多很多个id一起Post的!