将重复记录提取出来(不能用SQL语句)(100分)

  • 主题发起人 主题发起人 fullstrong
  • 开始时间 开始时间
F

fullstrong

Unregistered / Unconfirmed
GUEST, unregistred user!
比如:我有一数据库,其中有数据记录如下:

ABCDEDF
DABEGSE
CDSEDFS
ABCDEDF
DAGSEGD
CDSEDFS
......
......
等等...

我想查找数据库中的每一条记录如果在库中有完全相同的两条重复记录的话,
就将它相同的记录全部提取出来,添充到ListView中,该如何做啊?

如上面的查找提取结果为:
ABCDEDF
ABCDEDF
CDSEDFS
CDSEDFS


(不能用SQL语句,因为我的数据库不支持)
 
不用SQL的话就只能用多重循环语句判断有无重复,在数据量大的时候速度会很慢
 
数据库 不支持SQL???
那么就应该让它淘汰了!!!
 
1、对取出的数据集进行排序,很多书上有介绍。
2、从第一条开始循环,如本条与上一条相等,则为重复。
 
这样吧,你建立一个新表,字段结构和需处理的表一样,再把需判断重复值的字段设为主键,
然后,以下table1为旧表,table2为新建表,table1进行遍历:
...
try
table2.insert;
table2.field1.value:=table1.field1.value;
table2.field2.value:=table1.field2.value;
......
table2.post;
except
//出错说明有已有重复记录
//在这里写代码,添充到ListView中(不用我写了吧?)
end;
 
to iwalk: 你讲的好象是字段,我要的是记录,你偏题了。

to TYZhang: 能讲一讲具体做法吗?

 
用 两个 table 同时连接你的表
table1.first;
while not table1.eof do begin
table2.first;
while not table2.eof do begin
if table1['field1']=table2['field1'] then listbox1.items.add(table1['field']);
table2.next;
end;
table1.next;
end;
 
你用的究竟是什么数据库?
 
不知哪位能有好的解决方法?我很急啊!
 
如果你不能用sql我觉得TYZhang的方法就很好了
 
先快速排序,
再用循环把相同的记录添加到你的ListView中.
 
to dongberlin: 排序我已经做了,我就是不知道如何用循环把重复的记录提取出来
添加到ListView中,你能帮我吗?
 
你是不是使用的文件啊???
 
to fullstrong:
假设你已经排好序且把结果保存到TempString: StringList中.
var
i: Integer;
TempS: String;
begin
TempS:='';
for i:=0 to TempStrings.Count-1 do
Begin
if TempS<>TempStrings.Strings then
Begin
//Add TempS to ListView;
TempS:=TempStrings;
End;
End;
end;
 
接受答案了.
 
后退
顶部