求一种好的与数据库相联的解决lookuplist的方法或思路!回贴前请认真看问题要求! (200分)

  • 主题发起人 主题发起人 delphi1234
  • 开始时间 开始时间
D

delphi1234

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有两个表:
A表有字段 AID
B表有字段 BID, BNAME
其中AID=BID
一个下拉列表框显示BNAME字段中的内容.但它保存的内容为AID,它是关联A表中AID字段.
要达到的效果:当点击一个下拉列表框时,列表框显示的是BNAME字段中的内容.当A表 的数据记录发生改变时.列表框也依据AID=BID会显示不同的BNAME内容.
要求:1.只能使用一个datasource和adodataset,而且这datasource只是用来使列表框关联字段AID,运行时.效果应该是和使用dblookupcombobox(其中使用两个datasoure和adodataset设置Listsource和listfield)时的效果一样.
另外,不能再次使用别的数据组件来关联它,也就是说它所有的操作都是要通过可公用的函数或过程来实现,这样达到的效果是当一个工程中如果类似的下拉列表
很多的话,就不必放4倍于列表框的数据组件,而只需要2倍于它的数据组件.
2.当浏览记录或编辑时,列表框不会出现空白的BUG.
3.具体使用什么控件没有限制,关键是能实现以上要求;但是一定要是下拉列表框类型的;
附:我以前做过这样的.但是效果不是很理想.我是写了一个过程和一个函数来实现在下拉表中数据的动态填充和数据浏览时BNAME的显示.但是有BUG,就是当处于编辑状态时,它会清空TEXT.当记录改变时,不会相应改变BNAME值.所以我在此提出来,请各位高手关注与支持!!
 
首先获取B表的内容存入二维数组,在ComboBox中显示Bname。
再做它的Dataware属性,在A的OnScroll中查找并改变Combobox的值。
 
这问题挂了一天都没有人能正确解答,失落!!!!
 
dblookupcombobox就可以实现,
query为select BNAME,AID from a,b where a.AID=b.BID ...,
Listsource:query,
listfield:BNAME;AID,记得必须把BNAME放在前面,中间用分号,
keyfield:AID,
就可以实现待选项为BNAME,选中值为AID,
还可以调整控件宽度使AID在下拉表中看不到,
 
datafield : aid
 
同意ckzn!
 
唉,没有人能帮我解决这个简单问题,算了,一朝识其真面目,十年后悔瞻真容!结账,唉,失望!
 
多人接受答案了。
 
后退
顶部