为了界面美观,简约,我要用combobox和listbox.
我用两个adoquery两个datasource
adoquery1设置:1.connection string:access数据库(有2个数据表)
2.sql属性:select * from a1
3.active:true
datasource1:
dataset: adoquery1
adoquery2设置:1.connection string:access数据库(有2个数据表)
2.sql属性:select * from a2 where 材料类别=:材料类别
3.active:true
4.datasource:datasource1
datasource2:
dataset: adoquery2
部分代码:
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
with ADOquery1do
begin
close;
SQL.Clear;
SQL.Add('select * from a2');
open;
end;
for i:=1 to ADOquery1.FieldCount-1do
begin
combobox1.Items.add(ADOquery1.Fields.FieldName);
ADOquery1.Next;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
str1:string;
begin
try
with ADOquery2do
begin
close;
SQL.clear;
SQL.Add('select * from a1');
open;
end;
repeat
str1:=ADOquery2.fieldbyname('材料名称').AsString;
listbox1.Items.Add(str1);
ADOquery2.next;
until
ADOquery2.Eof;
except
showmessage('读取数据失败!');
end;
end;
a1和a2通过字段"材料类别"建立联系。
combobox中选择一种材料类别后
listbox 中就出现对应的材料
点击某种材料后在edit中显示相应的数据,可以对combobxo、listbox、edit中的内容进行修改,保存在数据库中。
通过上述的方法运行结果不能让人满意。不知错误在哪?或许有更好的办法做到。
我刚学delphi 不久
学习delph数据库才一个星期,不明白的东西太多了。
希望高人不吝赐教!
拜谢!