MSSQL数据库中的代码怎样显示为相应的名称(200分)

  • 主题发起人 主题发起人 耕耘者
  • 开始时间 开始时间

耕耘者

Unregistered / Unconfirmed
GUEST, unregistred user!
在MSSQL 数据库中一表中有一字段名为 民族 ,在另一表中保存相应的民族代码和名称:
表1: XM 姓名
MZ 民族
表2:MZDM 民族代码
MZMC 民族名称

在数据录入时怎么实现:
1、在同一控件中实现输入民族代码,数据库中保存民族代码,但显示出来的结果为汉字即民族名称,
编辑时变为代码;
2、在EHLIB中DBGRIDEH控件中怎样实现下拉式选择。
 
使用 TDBLookupComboBox,设置如下:
Datasource是表1对应的datasource
Datafiled为MZ

Listsource是保存民族代码和名称的那张表,即表2对应的datasource
KeyField为MZDM
ListField为MZMC(民族名称)

 
这种最好自己控制,
表2就叫代码库,比如你有一个combobox,
select 民族名称,民族代码 from 表2
民族名称装入combobox
民族代码装入到一个stringlist中去,与combobox一一对应
在插入库中的insert 语句中
存入stringlist[combobox.itemindex],而不是combobox的内容
 
to xluke :
对于很多代码字段时,就相应需要很多的Datasource,在自动处理方面是否欠缺?
TO TWOS :
在DNGRID 中如何实现?
 
TO TWOS :
在DbGRID 中如何实现?

哪位知道在EHLIB中DBGRIDEH 中的使用方法?
 
编码问题确实在MIS系统中很常见,编码表多了需要很多的Table和DataSource。
我们的系统有几十个编码表,效率很低,最好还是自己编程控制。
 
to lujuhe :
编程如何实现?
 
to 耕耘者
编码表一般数据量很小,而且很多地方会公用
我觉得这样方便了程序员,结构也很清晰,效率方面,相信Delphi会做优化的.
 

哪位知道在EHLIB中 DBGRIDEH 中的使用方法?
 
回答你第一个问题:
表2:MZDM 民族代码
MZMC 民族名称
数据源处理:
...
Query1.sql.add('select mzdm,mzmc from 表2');
...

对combobox追加items的处理:
var s1,s2:string;
i:integer;
begin
...
combobox1.Clear;
while not Query1.eof() do
begin
s1 := FieldByName('mzmc').AsString;
s2 := FieldByName('mzdm').AsString;
combobox1.Items.AddObject(s1,TObject(s2));
end;
...
end;

combobox的Change处理:
提取相应代码的方法:string(combobox1.Items.Objects[combobox1.ItemIndex])
以返回给editbox为例
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
edit1.Text := string(combobox1.Items.Objects[combobox1.ItemIndex]);
...
end;
答完.
 
顯示時可以這樣
select a.XM 姓名,b.MZMC 名族名稱 from 表1 as a,表2 as b where a.MZ=b.MZDM
 
后退
顶部