数据库的问题!急。。(50分)

  • 主题发起人 主题发起人 godai01
  • 开始时间 开始时间
G

godai01

Unregistered / Unconfirmed
GUEST, unregistred user!
我软件里只有一个ADOCONNECTION和ADODATASET两个控件,数据库
里有NAME和ID两个数据字段,如何才能用COMBOBOX控件显示NAME字
段里的全部数据?
 
用DBComboBox,将datasource设为ADODATASET,datafield设为NAME.
 
首先要有一个ADOQuery组件 sql string: Select Name form TableName
在Form OnActive事件中撰写程序While Not ADOQuery.Eof do 将ComBoxList的Item的值补进去即可
 
遍历数据集。
combobox.item.add(dataset[fieldname])
 
while not adodataset.eof do
begin
combobox1.items.add(adodataset.fieldbyname('Name').asstring);
adodataset.next;
end;
 
对于godai01的说法
首先用下面Code可以解决:
AdoDataset.close;
AdoDataset.CommandText:='Select Name form TableName';
AdoDataset.Open;
if not AdoDataset.IsEmpty then
begin
while not AdoDataset.Eof do
begin
Combobox.Items.Add(ADoDataset.FieldByName('Name').Asstring);
AdoDataset.Next;
end;
end;
AdoDataset.close;
但是
jammi说的不对
因为:
用dbcombobox不行
因为不是列出所有Name字段的值,而是显示name字段当前记录的值,你可以通过选择dbcombobox
的items(你提前设定的值)来改变当前记录name的值。
应该用dblookupcombobox
ListSource
ListField
keyField
是数据源,要显示的name
Datasouce
DataField
目的数据。
 
想速度快一点吗 ? 试试这个 :
if not AdoDataset.recordset.IsEmpty then
begin
while not AdoDataset.recordset.Eof do
begin
Combobox.Items.Add(ADoDataset.recordset.Field['Name'].Asstring);
AdoDataset.recordset.MoveNext;
end;
end;
AdoDataset.close;



 
用dblookupcombobox,这是正确的做法,而且没有风险,速度也快
 
多人接受答案了。
 
后退
顶部