注册 登录
编程论坛 Delphi论坛

新问题 怎么用combobox控件读取数据库里的内容?

guang2356447 发布于 2007-10-10 23:57, 4531 次点击

我在做一个下拉菜单使用combobox控件
里面内容我想从数据库里读取
做过的 指点指点
感谢呵呵

7 回复
#2
guang23564472007-10-11 09:21
也没个帮忙的
还好我找到拉
发来公享
combobox1.Clear;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='select * from dgyw';
adoquery1.Open;
combobox1.Items.Clear;
while not adoquery1.Eof do
begin
combobox1.Items.Add(adoquery1.FieldValues['name']);
adoquery1.Next;
end;

现在问下在一个页面用多个adoquery打开多个表影响速度吗
#3
sky_yang_sky2007-10-11 09:46

那肯定會了。只要你的數據不是太大影響不會很明顯

#4
volte2007-10-11 12:39

你为什么要用adoquery打开多个表。
不能一次取完吗?
而且你这个完全是一种数据显示,
对于做软件来说意义不大,

怎么不考虑用面向对象去封装一下数据集,。

#5
guang23564472007-10-11 13:24
回复:(volte)你为什么要用adoquery打开多个表。不能...
面向对象去封装一下数据集
怎么实现啊


我面向对象理解的不够

有什么资料?
#6
缘吇弹2007-10-11 22:16

SOSO就有很多资料.

#7
guang23564472007-10-11 22:22

感谢大家
下面是个3级下拉菜单 都是从数据库读取内容的
我已经有代码拉 不过别人帮忙做的
那位高手能帮忙注释下什么意思
我的表ywzl 字段有yjl ejl sjl
业务种类 一级类 2级类 3级类
我注释了一部分 还有的不知道
procedure Tts.LoadDataToCombox(Target:TComboBox;DataColumn:String;Condition:String='');
begin
if Target=nil then Exit;
if DataColumn<='' then Exit; //不知道什么意思
with ADOQuery1 do
begin
Close; //distinct 表示无重复显示字段内容
SQL.Text:='SELECT DISTINCT '+DataColumn+' FROM ywzl WHERE '+DataColumn+' IS NOT NULL '+IfThen((Condition<=''),'',' AND '+Condition); // 不知道什么意思
Open;
Target.Items.Clear;
while not Eof do
begin
Target.Items.Add(Fields.Fields[0].AsString);//不知道什么意思
Next;
end;
Close;
end;
Target.Visible:=(Target.Items.Count>0); //透明取决于combobox里面的内容大于0则返回true
end;


procedure Tts.FormCreate(Sender: TObject);
begin
LoadDataToCombox(ComboBox4,'yjl'); //combobox4中的内容显示 字段为yjl的内容 1级类
end;

procedure Tts.ComboBox4Change(Sender: TObject);
begin
LoadDataToCombox(ComboBox5,'ejl','yjl='''+ComboBox4.Text+''''); //combobox5中的内容显示 字段为ejl的内容 2级类 条件是 // 条件不知道是什么
ComboBox6.Visible:=False;
end;

procedure Tts.ComboBox5Change(Sender: TObject);
begin
LoadDataToCombox(ComboBox6,'sjl','yjl='''+ComboBox4.Text+''' AND ejl='''+ComboBox5.Text+'''');
end;

#8
月影雕零2017-04-28 11:05
回复 2楼 guang2356447
学习了,不过还没有成功
1