首先有一张表,保存的是基本信息Basic(区域,计量单位,客户类型等)结构如下:
ID NAME TYPE
01 A区 AREA
02 个 UNIT
03 B区 AREA
04 大客 CUSTOMER
05 张 UNIT
06 小客 CUSTOMER
那么在"客户信息"的编辑窗体时有一个COMBOBOX的控件,用于选择客户类型.
保存在数据库"客户信息"表里的客户类型的字段为Basic的ID字段.
求教在窗体页面初始化控件的时候,怎么把客户类型的信息读入COMBOBOX里,然后在保存的时候又怎么操作.
注意:COMBOBOX不是数据感知控件!
ID NAME TYPE
01 A区 AREA
02 个 UNIT
03 B区 AREA
04 大客 CUSTOMER
05 张 UNIT
06 小客 CUSTOMER
那么在"客户信息"的编辑窗体时有一个COMBOBOX的控件,用于选择客户类型.
保存在数据库"客户信息"表里的客户类型的字段为Basic的ID字段.
求教在窗体页面初始化控件的时候,怎么把客户类型的信息读入COMBOBOX里,然后在保存的时候又怎么操作.
注意:COMBOBOX不是数据感知控件!
解决方案 »
- 这样的存储过程如何调用?
- 上海某博士生找兼职工作
- 请问在DELPHI中如何把extended类型转化为string类型
- SQL语句:怎么样删除两个表中的记录呢?两个表有相同的字段。
- toolbar、imagelist,怎么在speedbotton控件中显示出图片
- 大家来看看这是什么原因?我也不知怎么说清楚,呵呵,进来看看>>
- [求助]一个小问题
- 用visual foxpro,如果时间记录为空,就会默认为1/1/1899,如何解决?(分30)
- 请问哪里有关于Delphi的网站?
- 在SqlServer 7.0中,关于raiserror的问题
- 散分!!!!!
- 急急,这是怎么回事???复制过来的为什么不行
这样看起来比较明确。
读入:
ComboBox1.Items.Clear;
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from Basic');
Open;
First;
while not Eof do
begin
ComboBox1.Items.Add(FieldByName('ID').AsString+'|'+FieldByName('Name').AsString);
Next;
end;
end;保存:
ADOQuery2.FieldByName('').AsString := Copy(1,Pos('|',ComboBox1.Text),ComboBox1.Text);
type
Tcomboboxinfo=class(tobject)
public
idstr,namestr,...,typestr:string;
comid:integer;
end;
在"客户信息"的编辑窗体的单元里定义一个动态数组
obje:array of Tcomboboxinfo;
在此窗体的Show事件中,代码如下:adoquery1.close; //把基本信息表中需要的字段查出来,必须有combobox的显示字段和ID 字段
adoquery1.sql.clear;
adoquery1.sql.add(select * from 基本信息Basic表);
adoquery1.prepared;
adoquery1.open;if adoquery1.isempty then
exit;
adoquery1.first; //移到首记录
while not adoquery1.eof do
begin
setlength(obje,length(obje)+1); //将当前记录的值放到OBJE数组元素中
obje:=Tcomboboxinfo.Creat;
obje[high(obje)].idstr:=adoquery1.fieldname['id'].value;
obje[high(obje)].namestr:=adoquery1.fieldname['name'].value;
obje[high(obje)].typestr:=adoquery1.fieldname['type'].value;
combobox1.additem(adoquery1.fieldname['type'].value,obje[high(obje)]); //第一个参数为显示字段
adoquery1.next;
end;当保存时,根据选择的TYPE,得到ID
var
str:string;
str:=Tcomboboxinfo(combobox1.items.objects[combobox1.itemindex]).idstr;
然后将得到的ID 保存就行了!