坏
坏蟑螂
Unregistered / Unconfirmed
GUEST, unregistred user!
我们经常将某些字段所有可能的取值全放入另一个表中,
制作成Lookup字段,而主表中字段的值实际上是该值的ID,
比如:
表Person.db有如下字段
ID + Primary Key
Name A8 姓名
TeachLevel I 文化程度(从表DataDict.db中取值)
HealthState I 健康状况(从表DataDict.db中取值)
Nationality I 民族 (从表DataDict.db中取值)
PoliDegree I 政治面貌(从表DataDict.db中取值)
表DataDict.db有如下字段
ID + Primary Key
ControlField A16 所约束的字段
FieldValue A32 该字段可取的一个值
在我们的程序中只要建一个TTable,指向DataDict.db,
再将TDBLookupComboBox的相应属性设置好,
就可以在DBLookupComboBox中选择需要的值了。
但是,该DBLookupComboBox将列出所有DataDict.db中的记录,
比如TeachLevel所对应的DBLookupComboBox除了列出了文化程度所有可能的取值之外,
也列出了健康状况、民族、政治面目等可以取的值。(不爽)
只好针对每个这种类型的字段,建一个Table或Query,
设置不同的Filter(对应于Table)或SQL语句的条件(对于Query),
因此,我的DataModule中存在密密麻麻的Query。(更不爽)
本来通过自己写代码,比如:在每个DBLookupComboBox的OnEnter和OnExit事件中
设置相应的Filter或解除相应的Filter,可以解决,但我认为这些代码是冗余的,
应该有更好的办法,比如一个新控件。
我想大家都曾遇到此问题吧?都是怎么解决的呢?
请不吝赐教,各抒己见。