想做三级分类连动的下拉列表选项来维护数据,可是有时好用有时不好用,不知什么原因,详细情况如下:1、三张表做三级层次分类,一张表做基本数据class1(一级分类表)
字段:id,nameclass2(二级分类表)
字段:id,class1_id,nameclass3(三级分类表)
字段:id,class2_id,namemain   (主表)
字段:id,class1_id,class2_id,class3_id,name
2、窗体中加入4个DataSource1和4个ADOTable1绑定四个表,设置class1,class2,class3之间主从关系。DataSource1 DataSet:ADOTable1
ADOTable1 TableName:class1DataSource2 DataSet:ADOTable2
ADOTable2 TableName:class2;MasterSource:DataSource1;MasterFields:class2.class1_id=class1.idDataSource3 DataSet:ADOTable3
ADOTable3 TableName:class3;MasterSource:DataSource1;MasterFields:class2.class1_id=class1.idDataSource4 DataSet:ADOTable4
ADOTable4 TableName:main3、做main表的的三级层次联动。class1_id 使用 DBLookupComboBox1 ListSource:DataSource1;ListField:name;KeyField:id
class2_id 使用 DBLookupComboBox2 ListSource:DataSource2;ListField:name;KeyField:id
class3_id 使用 DBLookupComboBox3 ListSource:DataSource3;ListField:name;KeyField:id说明:
本来想实现,
选一级分类class1时,二级分类下拉框显示所有当前一级分类中相应二级分类列表,
选二级分类class2时,三级分类下拉框显示所有当前二级分类中相应三级分类列表。结果有时好用有时不好用,
在添加记录时一切正常,
只在在显示时,二级分类及三级分类列表内容正常,class1_id,class2_id,class3_id数据也完全正确,只是记录中的当前值就是带不过来,class2_id和class3_id都是空的,前滚或后滚记录后回来再看,有时正常有时不正常,不知是什么原因,还请高手指典。先谢了!在线等。

解决方案 »

  1.   

    你是怎么添加数据(流程)
    先在class1(一级分类表)添加数据的话会出现二、三级为空的现象
      

  2.   

    class1,class2,class3分类填写及维护均正常,
    我指的是在往主表main里填写数据时,要实现三级分类的连动。在main表填写时依次选择三类别一切正常,只是保存后,游览和修改时,
    二级分类下拉框DBLookupComboBox的值及三级分类DBLookupComboBox下拉框
    与实际保存到主表中的分类数据值中的值对应不上,而通过查看数据表数据,可以看到是正确的数据。对于这种情况,不是很稳定,有时数据可以对应上有时对应不上。
      

  3.   

    我最近做了一个五级的
    建议你在这个部分不要用绑定的列表框,
    手工写代码
     在Cmb1的Click事件中被始化Cmb2的内容,依次即可,很方便 ,更好控制
      

  4.   

    可是我的做法应该是正确的,为什么结果有时对有时不对?
    是系统BUG?还是哪地方我没设置好呢?
      

  5.   

    为什么结果有时对有时不对?
    -----------------------------
    这个应该不是系统的bug
    应该是你操作上的问题了你跟踪看看在哪里出了问题