从一个表里读出不重复的记录,存到另一个表里:
 
ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     s:='select portcode,portname,re,callsign,voy,port,ld  from a07  Group by portcode,portname,re,callsign,voy,port,ld';
     ADOQuery1.SQL.Add(s);
     ADOQuery1.Open;
     if ADOQuery1.RecordCount>=0 then
     begin
     while not ADOQuery1.Eof do
     begin
     adotable6.Active:=true;
     adotable6.Edit;
     ADOTable6.Fields[0].AsString:='07';
     ADOTable6.Fields[1].AsString:=ADOQuery1.Fields[0].AsString;
     ADOTable6.Fields[2].AsString:=ADOQuery1.Fields[1].AsString;
     ADOTable6.Fields[3].AsString:=ADOQuery1.Fields[2].AsString;
     ADOTable6.Fields[4].AsString:=ADOQuery1.Fields[3].AsString;
     ADOTable6.Fields[5].AsString:=ADOQuery1.Fields[4].AsString;
     ADOTable6.Fields[6].AsString:=ADOQuery1.Fields[5].AsString;
     ADOTable6.Fields[7].AsString:=ADOQuery1.Fields[6].AsString;
     ADOTable6.Post;
     ADOTable6.Next;
     ADOQuery1.Next;
    // ADOTable6.Post;
     end;
     end;
调试时发现recordcount=8,可是打开adotable6连的表一看,只是保存了一条记录,请各位高手帮忙看看。谢谢了!
注:加不加ADOTable6.Next都只是看到一条数据。

解决方案 »

  1.   

    while not ADOQuery1.Eof do
    begin
    ADPTable6.Append;
    ADOTable6.Fields[0].AsString:='07';
    ADOTable6.Fields[1].AsString:=ADOQuery1.Fields[0].AsString;
    ADOTable6.Fields[2].AsString:=ADOQuery1.Fields[1].AsString;
    ADOTable6.Fields[3].AsString:=ADOQuery1.Fields[2].AsString;
    ADOTable6.Fields[4].AsString:=ADOQuery1.Fields[3].AsString;
    ADOTable6.Fields[5].AsString:=ADOQuery1.Fields[4].AsString;
    ADOTable6.Fields[6].AsString:=ADOQuery1.Fields[5].AsString;
    ADOTable6.Fields[7].AsString:=ADOQuery1.Fields[6].AsString;
    ADOTable6.Post;
    ADOQuery1.Next;
    end;
      

  2.   

    ADOTable6.Append;
    看明白这一句就行了。
      

  3.   

    是看明白了,但是还有一点,如果用append的话,我要是对录入的数据进行修改,比如录入了30条(有重复的并且已经保存到临时表),要对其中的一条进行修改,那么在保存的时候另外29条还要被存一遍,导致另一个表中的记录又重复了。
      

  4.   

    ADOQuery1.Close;        
         ADOQuery1.SQL.Clear;
         s:='delete from a07 where callsign='+''''+DBComboBox2.Text+'''' +'and voy='+''''+DBComboBox4.Text+'''' +'and port='+''''+DBComboBox3.Text+'''';
         ADOQuery1.SQL.Add(s);
         ADOQuery1.Open;
    想用这个把以前存的记录删除,可是调试时提示,单一行不能返回多行记录,该怎么删除阿?请指示!
      

  5.   

    ADOQuery1.Close;        
    ADOQuery1.SQL.Clear;
      s:='delete from a07 where callsign='+''''+DBComboBox2.Text+'''' +'and voy='+''''+DBComboBox4.Text+'''' +'and port='+''''+DBComboBox3.Text+'''';
    ADOQuery1.SQL.Add(s);
    ADOQuery1.ExecSQL;
      

  6.   

    你用什么数据库啊,这个用一条SQL就可以了(以下是sqlserver的,其它的数据库类同)
    往新表中插:
    select  portcode,portname,re,callsign,voy,port,ld into newtable  from a07  Group by portcode,portname,re,callsign,voy,port,ld
    住旧表中添:
    insert into oldtable  select  portcode,portname,re,callsign,voy,port,ld   from a07  Group by portcode,portname,re,callsign,voy,port,ld