怎样很简便的将数据库某一字段的所有值都读入 ComboBox中

Luckyfeeling 2001-06-22 08:50:00
当我们使用 数据控件(adodataset,adoquery),我们能不能很简便的将某一
字段的值都读入 combobox中,最好是 combobox.items=??
如果这个思路不行,有没有别的解决办法。
如果每次我都要编写一个循环来将某子段的数据装入 combobox ,那样太麻烦了!
...全文
129 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruizi 2001-06-22
  • 打赏
  • 举报
回复
to dearmyfriend(Dearmyfriend):为了防止数据重复应该改一下sql语句
with adoquery do
begin
close;
SQL.Clear;
SQL.Add('select distinct 某字段 from tablename');
Open;
end;
if adoquery.recordcount=0 then exit;
Commbobox1.items.clear;
doQuery.first;
for i:=0 to adoquery.recordcount-1 do
begin
Commbobox1.items.add(adoquery.fieldbyname('fieldbyname').asstring);
adoquery.next;
end;

Luckyfeeling 2001-06-22
  • 打赏
  • 举报
回复
skimwater 2001-06-22
  • 打赏
  • 举报
回复
最好的办法就是使用DBLookupComboBox.只要指定它的DataSource和KeyField就可以了。
当数据集打开时,它自动地装载所有的值。
Luckyfeeling 2001-06-22
  • 打赏
  • 举报
回复
忠心感谢 阿明--平均睡眠时间<6h/d的超人) 兄的热情帮助。
我是从 vb 转过来的,这个在 问题在vb 里比较简单好解决。
我一直以为 dephi 里面是不是有好的解决办法,而我却没有发觉,
因此才这样问。
好了,问题到次,基本上可以了段了。分份吧,哥们!
谢谢!!
enlightenment 2001-06-22
  • 打赏
  • 举报
回复

拜托!拜托!

你开始不是要求简便的么? 我的办法不简便么?

早知道你还动这脑筋,那开始就叫你直接做控件了。

从TCustomComboBox类开始扩展,按你说的添加属性:

Connectstring
TableName
FieldName

方法:

Load

不用FieldValueList了,有现成的Items可用。

但这样的控件基本上仍属于定制的控件,你认为是简单么?

dearmyfriend 2001-06-22
  • 打赏
  • 举报
回复
with adoquery do
begin
close;
SQL.Clear;
SQL.Add('Select * from table');
Open;
end;
if adoquery.recordcount=0 then exit;
Commbobox1.items.clear;
doQuery.first;
for i:=0 to adoquery.recordcount-1 do
begin
Commbobox1.items.add(adoquery.fieldbyname('fieldbyname').asstring);
adoquery.next;
end;

//OK!!!
Luckyfeeling 2001-06-22
  • 打赏
  • 举报
回复
谢谢 enlightenment 老兄,我发现每次我提问都有老兄来捧场
哥俩有缘!
Luckyfeeling 2001-06-22
  • 打赏
  • 举报
回复
看来,dephi 里确实没有很好的解决办法,各位的方法我都知道。
我认为应当提供一个类来解决,该类主要属性方法有:
connectstring: 数据库链接字符串
TableName:表名
FieldName:字段名
FieldValueList: Tstrings 字段值列
LoadData:运行
这样,在不需要绑定时,更灵活,更高效。

enlightenment 2001-06-22
  • 打赏
  • 举报
回复

不绑定?很简单,再放一个TComboBox上去,原来那个设置Visible:=False。

然后,

ComboBox1.Items.Assign(DBComboBox1.Items);


O K ? 这——回——大——家——满——意——了——吧——?

:)

Apollo47 2001-06-22
  • 打赏
  • 举报
回复
你编写一个过程或函数,以后调用这个过程或函数就行了。

procedure AssignToItems(AStrs :TStrings;AQry :TAdoQuery);
begin
.....
end;
Luckyfeeling 2001-06-22
  • 打赏
  • 举报
回复
谢谢,这个我知道,我不想用 Tdbcombobox ,因为它和字段是绑定的
我需要的是不使用绑定来编程。
enlightenment 2001-06-22
  • 打赏
  • 举报
回复
用TDBComboBox

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧