从一个表里读出不重复的记录,存到另一个表里:
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都只是看到一条数据。
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都只是看到一条数据。
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;
看明白这一句就行了。
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;
想用这个把以前存的记录删除,可是调试时提示,单一行不能返回多行记录,该怎么删除阿?请指示!
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;
往新表中插:
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