select 语句活用(50分)

  • 主题发起人 主题发起人 tinawxm
  • 开始时间 开始时间
T

tinawxm

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁们,如果你想更富一点,请花点时间帮我想想这个问题,如何把一个字段的值作为
combobox下拉菜单中的选项,我考虑利用savetofile和loadtofile,但用select语句查出的结果
是select类型如何与combobox.item的类型匹配
 
不用這麼麻煩,Delphi自身就提供有這樣一個控件!
Data Controls控件組中的DBLookupComboBox就可以實現了
 
说清楚些好不好?
 
DBLookupComboBox的屬性應如下設置
datasource為數據表名
datafield為字段名
listsource為數據源表名,及可選資料之源數據表名,從何而來可選資料之表名
listField為顯示字段名,及當用戶按下下垃鈕之后所顯示出來的數據字段,多字段用分號分開
KeyField為結果字段,及當用戶選中某項資料后,返回資料表(datasource的Datafield的結果)的數據字段資料!
 
这是我程序中的一个自定函数,和你的要求完全吻合:
procedure Tform1.dropdown_query(comboboxname:TComboBox;fieldname,tablename:String);
begin
comboboxname.Clear;
dm.query.Close;
dm.query.SQL.Clear;
dm.query.SQL.Add('select distinct '+fieldname+' from '+tablename+'');
dm.query.Open;

while not dm.query.Eof do
begin
if dm.query.FieldByName(fieldname).AsString<>'' then
comboboxname.Items.Add(trim(dm.query.fieldbyname(fieldname).asstring));
dm.query.Next;
end;
end;
//在需要的地方调用
procedure Tform1.ComboBox1DropDown(Sender: TObject);
begin
form1.dropdown_query(combobox1,'fieldbyname','tablename');
end;
 
其实,这问题很简单。不就是在combobox显示字段值吗?
在adoquery1查出结果--->
combobox.items.clear;
while not adoquery1.eof do
begin
combobox1.items.add(adoquery1.fields[0].asstring);
adoquery1.next;
end;

it's ok
 
真的不难,有好多办法都行,想怎么办都行的呀,给你一个过程把
addcontent(Ado:TAdoquery;cbbox:TcomboBox;parent,flag:integer;ss,fieldname:string);
begin
try
with Ado do
try
close;
sql.clear;
sql.add(ss);
parameters[0].value:=parent;
parameters[1].value:=flag;
prepared:=true;
open;
first;
cbbox.Items.Clear ;
while not eof do
begin
cbbox.Items.Add(fieldbyname(fieldname).AsString);
next;
end;
finally
close;
end;
except
showmessage('出现了错误!');
exit
end;
end;
 
是阿,用空间或自己编码都很简单阿
 

Similar threads

后退
顶部