下面的代码是通过RadioButton的click事件,然后把TABLE所查到的数据填写锦Combox的Items中: procedure Tfrm_main.RadioBtnClick(Sender: TObject); begin try with DM.ADODataSet do begin close; //FIELDNAME commandtext:='select '+ trim(RadioBtn.Caption)+' FROM TABLE'; open ; ComboBox.Items.Clear; end;//with while not (DM.ADODataSet.Eof) do begin ComboBox.Items.Add(DM.ADODataSet.Fields[0].AsString); DM.ADODataSet.Next; end;//while finally DM.ADODataSet.Close; end;//try end;
query.sql.add('select id from Table'); query.open; query.first; while not query.isempty do begin combobox.items.add(query.fields[0].value) query.next end;
搂主可以揭帖了,:) 或者用循环赋值也是可以的,原理都是一样的,或者用dbcombobox吧
我用了以下方法,第一个下拉列表中所有的值都显示出来了,第2个只显示了俩个数据值,为什么呢? procedure TRoom_Code.FormCreate(Sender: TObject); begin try with DataModule1.ADOR_State do begin close; //FIELDNAME commandtext:='select RS_State from R_State'; open ; CR_State.Items.Clear; end;//with while not (DataModule1.ADOR_State.Eof) do begin CR_State.Items.Add(DataModule1.ADOR_State.Fields[0].AsString); DataModule1.ADOR_State.Next; end;//while finally DataModule1.ADOR_State.Close; end;//trytry with DataModule1.ADOR_Type do begin close; //FIELDNAME commandtext:='select * from R_Standard'; open ; CR_Standard.Items.Clear; end;//with while not (DataModule1.ADOR_Type.Eof) do begin CR_Standard.Items.Add(DataModule1.ADOR_Type.Fields[1].AsString); DataModule1.ADOR_Type.Next; end;//while finally DataModule1.ADOR_Type.Close; end;//try end;
procedure Tfrm_main.RadioBtnClick(Sender: TObject);
begin
try
with DM.ADODataSet do
begin
close; //FIELDNAME
commandtext:='select '+ trim(RadioBtn.Caption)+' FROM TABLE';
open ;
ComboBox.Items.Clear;
end;//with
while not (DM.ADODataSet.Eof) do
begin
ComboBox.Items.Add(DM.ADODataSet.Fields[0].AsString);
DM.ADODataSet.Next;
end;//while
finally
DM.ADODataSet.Close;
end;//try
end;
query.open;
query.first;
while not query.isempty do
begin
combobox.items.add(query.fields[0].value)
query.next
end;
或者用循环赋值也是可以的,原理都是一样的,或者用dbcombobox吧
procedure TRoom_Code.FormCreate(Sender: TObject);
begin
try
with DataModule1.ADOR_State do
begin
close; //FIELDNAME
commandtext:='select RS_State from R_State';
open ;
CR_State.Items.Clear;
end;//with
while not (DataModule1.ADOR_State.Eof) do
begin
CR_State.Items.Add(DataModule1.ADOR_State.Fields[0].AsString);
DataModule1.ADOR_State.Next;
end;//while
finally
DataModule1.ADOR_State.Close;
end;//trytry
with DataModule1.ADOR_Type do
begin
close; //FIELDNAME
commandtext:='select * from R_Standard';
open ;
CR_Standard.Items.Clear;
end;//with
while not (DataModule1.ADOR_Type.Eof) do
begin
CR_Standard.Items.Add(DataModule1.ADOR_Type.Fields[1].AsString);
DataModule1.ADOR_Type.Next;
end;//while
finally
DataModule1.ADOR_Type.Close;
end;//try
end;
记录已到了最后一条了,那样显示不出问
题吗?
我想应该在while not (DataModule1.ADOR_Type.Eof) do
之前应该把记录指针定位到第条1条记录吧
不知道我说的是不是哦。
希望细心点