分享

如何在TwwDBGrid使显示和存储分离

 quasiceo 2017-07-06



有一张代码对照表,如
No   Name
1    A
2    B
3    C
在其它表中以代码存储,但在显示的时候却是名称,并且可以进行修改,就像在
PowerBuilder中那样方便,能否实现,请高手指点

 
 
 

如何在TwwDBGrid使显示和存储分离

帖子Jams ? 星期五, 2001年1月12日 22:54


>>

 
 
 

如何在TwwDBGrid使显示和存储分离

帖子woodmud ? 星期日, 2001年1月14日 22:06


我的意思是这样的,有一张代码对照表t_code,比如说:
No   Name
1    西红柿
2    黄瓜
3    白菜
4    青菜
5    土豆
6    萝卜
现有几个商店甲、乙、丙出售蔬菜,信息存入另一张表t_shop中,内容为:
Shop     No
甲       3
甲       6
乙       1
则表示甲商店有白菜、萝卜出售,乙商店有西红柿出售,而丙商店则无蔬菜出售,也就是
说信息在其它表中以代码存储,但在显示、修改的时候应该是代码相对应名称,也就是说
数据库中存储的代码对操作用户是不可见的,我想这应该使用DBLookupComboBox来实现,
但不知具体应该修改哪些属性,请高手指点。(注:我以前在PowerBuilder下编程时,实
现这样的功能只需修改几个属性即可实现数据库中实际存储数据和显示数据的对应,不知
在Delphi中是否有类似的功能)

 
 
 

如何在TwwDBGrid使显示和存储分离

帖子honghs ? 星期一, 2001年1月15日 10:30


为什么要用twwdbgrid呢,infopower中的wwdblookupcombox有个缺点是不像dblookupcombox中那样可
以有listfield和keyfiels属性可以用来显示编码内容而保存编码。
dbgrid的解决办法
假设你已放了2个table控件到form上,再放2个datasource指向t_code,t_shop

table1.tablename:='t_shop'
table2.tablename:='t_code'
datasource1.datasource:=tbale1;
datasource2.datasource:=table2;
在table1上双击进入字段编辑,右击菜单选新建字段
属性就自己填了,字段类型要选为lookup
然后key fiels为no,数据集设成table2
Key Fields设成no Lookup Keys 设成name
在dbgrid上双击进入column编辑,把刚才新建的lookup字段加入

wwdbgrid的解决办法
也是要增加一个lookp字段,然后再放一个wwdblookpcombox到form上,先设wwdblookupcombox的
wwdblookupcombo1.datasource:=table1;
wwdblookupcombo1.datafield:=新建立的lookup字段;
lookuptable:=table2;
lookupfield:=no;

在wwdbgrid上双击,把lookup字段加入到到字段列表中,选中新建立的lookup字段,选中右边显示的
edit control 页面,control type设为customedit ,controlname设为wwdblookupcombo1,就可以了。





 
 
 

如何在TwwDBGrid使显示和存储分离

帖子woodmud ? 星期六, 2001年2月3日 15:50


但是,这样子在下拉式列表中显示的是编码,而非名称,如何解决???

 
 
 

如何在TwwDBGrid使显示和存储分离

帖子yangkee ? 星期日, 2001年2月4日 11:02


你运行过ip2000的demo吗?上面就有你说的那种效果,
具体做法是设置wwdbgrid中的某一列,设置它的editcontrol为某一个wwdblookupcombox
要显示编码和名称在wwdblookupcombox进行设置就是了,可参见demo的源代码。

 
 
 

如何在TwwDBGrid使显示和存储分离

帖子woodmud ? 星期日, 2001年2月4日 15:01


   多谢honghs、yangkee两位仁兄的慷慨相助,不胜感激,问题已基本得到解决,但是还
有一种情况,假如现在没有代码对照表,而是存在一种固定的对应关系,比如说:
   Code       Weekday
   0          星期日
   1          星期一
   2          星期二
   3          星期三
   4          星期四
   5          星期五
   6          星期六
现在在前台,即TwwDBGrid某列下拉式列表中显示的是汉字,而在后台数据库中存储的却是
代码,这又如何实现,希望各位大虾不吝赐教。

 
 
 

如何在TwwDBGrid使显示和存储分离

帖子honghs ? 星期一, 2001年2月5日 08:55


woodmud,分数拿来吧,放个wwdbcombobox,把maplist属性设成true
TwwDBComboBox.MapList:=true的话,就可以这样子做了,这样你可以输入2列的值
If your application involves the storage of payment type information, you can save disk storage space by assigning a series of integer values, or other single character codes, to each of the allowable payment types you accept. You would first set the MapList property to true. Then, via the Edit Combo List dialog box (Items property editor), you would enter the Displayed Value and Stored Value assignments to look something like the following:

Displayed Value Stored Value
MasterCard       1
Visa              2
American Express 3
Check              4
Purchase Order 5

 
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多