删除ComboBox重复部分?(50分)

  • 主题发起人 主题发起人 laoli
  • 开始时间 开始时间
L

laoli

Unregistered / Unconfirmed
GUEST, unregistred user!
我用循环的方法,把表中的一个人列读入ComboBox,方便运行是添加数据时进行选择
但是,但是有些记录字段是重复的,他也会重复读入,怎么才能是他读入时不重复读入
相同的字段呢??????????????????
 
能不能在读出数据就是不重复的?
 
select时是不要重复的,
不然,每次添加之间,先循环查找一个是否存在
 
to WilliamGui
请提供源代码。。。。。。谢谢
我很笨的!^_^
 
再用一个循环嘛,把原来的
combobox.items.add(aa)
改成
for i:=0 to combobox.count-1 do
if combobox.item=aa then break;
if i<combobox.count-1 then 已存在
else combobox.items.add(aa)

语法上可能有写错,意思应该是清楚了。
因为比较是在内存中进行的,速度不会有影响
 
或者在select语句后加入group by
例如:
select 姓名 from user group by 姓名
 
select distinct fieldname
 
读入的时候用
select distinct * from table1
加入distinct 就是除去重复的
 
有更好的解决方法吗?


我很笨的!^_^
 
两种方法
数据库端,如果只需要你所要的字段,而没有其他字段返回,用ugvanxk的方法:
select distinct 你要的字段名 ......返回的数据就不重复了

如果数据库查询语句不方便,可以在代码中控制
if ComboBox1.Items.IndexOf(读出的值) = -1 then //没有重复
ComboBox1.Items.Add(读出的值);
 
同意wwolf的方法!!!
通过查询将不同姓名放在一数据集中,然后通过一个简单的循环就能实现!!!
combobox1.text:='';
with ADOQuery1 do
begin
close;
SQL.clear;
SQL.Add('select 姓名 from 表 gropy by 姓名');
open;
first;
while not eof() do
begin
combobox1.items.add(值);
next;
end;
end;
 
能否用ADOtabel实现


基于某种原因不能用ADOQuery

你很牛,所以
我很笨的!^_^

 
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
begin
comboBox1.Clear ;
with AdoTable1 do
begin
First ;
while not(eof) do
begin
s:=FieldByName('FieldName').asString;
if combobox1.Items.IndexOf(s) <0
then combobox1.Items.Add(s);
next;
end;
end;
end;
 
终于OK了,谢谢jsxjd
也谢谢其他各位高手的支持,
无奈,这个帖子只有50分,只有他的答案最合适我
以后,有机会我会多给分的----(我不想变成恶意送分)

^_^
 

Similar threads

回复
0
查看
804
不得闲
回复
0
查看
848
不得闲
回复
0
查看
1K
不得闲
D
回复
0
查看
802
DelphiTeacher的专栏
D
后退
顶部