//------------------------------已知一个TStringlist,存放一些string,例如:
100000056,
100000034,
100000012,而每个string在FHXXB 中队应一个SBBM,最后要按该SBBM的第二第三位的大小来从小到大排序。
100000056, 对应 1040003
100000034, 1060002
100000012, 1030005
结果应为:100000012,100000056,100000034,构成的Tstringlist;
我用下面的程序写的,为什么效率很低?
procedure SortFh(var SourceList: TStringList);
var
i,j,cntsb1,cntsb2:integer;
tempstr,temp,sb,sb1,sb2:string;
begin
for i:=0 to sourcelist.Count -1 do
begin
tempstr:='select SBBM from "FHXXB" where FHBM='''+SourceList[i]+'''';
openquery(mado,tempstr,true);
if not mado.Eof then
sb:=mado.FieldByname('SBBM').asstring;
sourcelist.Strings[i]:= sourcelist.Strings[i]+copy(sb,2,2);
end;
for i:=0 to SourceList.Count -2 do
begin
for j:=i+1 to SourceList.Count -1 do
begin
if rightstr(sourcelist.Strings[i],2)> rightstr(sourcelist.Strings[j],2) then
begin
temp:= SourceList[i];
SourceList[i]:=SourceList[j];
SourceList[j]:=temp;
end;
end;
end;
for i:=0 to sourcelist.count-1 do
begin
SourceList[i]:= leftstr(SourceList[i],9);
end;
100000056,
100000034,
100000012,而每个string在FHXXB 中队应一个SBBM,最后要按该SBBM的第二第三位的大小来从小到大排序。
100000056, 对应 1040003
100000034, 1060002
100000012, 1030005
结果应为:100000012,100000056,100000034,构成的Tstringlist;
我用下面的程序写的,为什么效率很低?
procedure SortFh(var SourceList: TStringList);
var
i,j,cntsb1,cntsb2:integer;
tempstr,temp,sb,sb1,sb2:string;
begin
for i:=0 to sourcelist.Count -1 do
begin
tempstr:='select SBBM from "FHXXB" where FHBM='''+SourceList[i]+'''';
openquery(mado,tempstr,true);
if not mado.Eof then
sb:=mado.FieldByname('SBBM').asstring;
sourcelist.Strings[i]:= sourcelist.Strings[i]+copy(sb,2,2);
end;
for i:=0 to SourceList.Count -2 do
begin
for j:=i+1 to SourceList.Count -1 do
begin
if rightstr(sourcelist.Strings[i],2)> rightstr(sourcelist.Strings[j],2) then
begin
temp:= SourceList[i];
SourceList[i]:=SourceList[j];
SourceList[j]:=temp;
end;
end;
end;
for i:=0 to sourcelist.count-1 do
begin
SourceList[i]:= leftstr(SourceList[i],9);
end;
现在只要写一个函数,把数据写进去,然后按照SBBM的顺序取出来,就可以了
最后在退出函数时把数据库清空
from FHXXB
order by SubString(SBBM, 2, 2)先写一个查询,把值全部取出来~~
没在列表中的就删除~~