|
提供一个思路吧。
例如有n层部门,表的结构是
t1: t1ID(int, PK), t1(varchar)
t2: t2ID(int, PK), t1ID(int, FK), t2(varchar)
t3: t3ID(int, PK), t2ID(int, FK), t3(varchar)
................
................
tn: tnID(int, PK), tn-1ID(int, FK), tn(varchar)
然后,由于每个员工都有可能直接挂在某个部门下面,那么,employee看上去只能酱紫:
employee: empID(int PK), t1ID(int FK), t2ID(FK), t3ID(FK), ... tnID(FK), empName, gender, birth...blah blah blah,我们现在计划在窗体上绑定数据源employee,然后用me.filter来得到结果集。
现在的问题是,要做一个comboBox,看起来要像下面这个样子(假定t1,t2,t3三个表)
绑定列看起来应该是三个id的某种数字或字母组合,例如t1ID+(t2ID*10)+(t3ID*100),或者例如t1ID & "_" & t2ID & "_" & t3ID (就暂时不考虑null和转换了),看起来是后面一种办法好一些。
例如:
SELECT Str(t1!t1ID) & "_" & Str(t2!t2ID) & "_" & Str(t3!t3ID) AS comboID, t1.t1 & "_" & t2.t2 & "_" & t3.t3 As comboContext
FROM (t1 LEFT JOIN t2 ON t1.t1ID=t2.t1ID) LEFT JOIN t3 ON t2.t2ID=t3.t2ID
然后是按下按钮了,要有一段程序,把t1ID & "_" & t2ID & "_" & t3ID这段中的每个id提取出来,假定说,你编了一个function extract(n as int, byVal comboID as string), 用法是extract(n, comboID)将第n个id抽出来。然后将filter组织成这样:
me.filter = "t1ID = " & extract(1, comboID) & " AND t2ID = " & extract(2, comboID) &..
当然需要判断抽出的id是否null或<=0
当然搞个循环看上去很专业。
[此贴子已经被作者于2003-7-31 2:35:46编辑过]
|
|