人员表与学历表通过编号建立父子关联:“人员_学历”。
每个人在学历表中有多条学历记录,学历表中:根据学历代码可以判断学历高低(高学历代码值小)、学历类型分全日制和在职两类。
现在需要在父表中生成:全日制最高学历毕业学校及专业。(其他的最高学历、最高学历代码、最高学历毕业学校及专业等相类似)
这里有两个特殊点:一是人员数据先输入,学历数据后输入;二是FIND中需要多个条件比较:比如,全日制最高学历毕业学校及专业,需要在学历表中查找的条件:编号与人员编号相符、学历类别为全日制、学历代码为最小值,然后将找到的行的毕业学校、专业两列内容相加。
查看了跨表数据引用、动态合成表达式等内容,仍不能完成。请教如何编写代码,且运行效率较高。
尝试了一下:
If e.DataCol.Name = "编号" Then
If e.NewValue Is Nothing Then
e.DataRow("全日制最高学历毕业学校及专业") = Nothing
Else
Dim dr1 As DataRow = Tables("基本信息").Current.DataRow
Dim dr2 As DataRow
dr2 = DataTables("学历").find("[编号] = '" & dr1("编号") & "’")
‘这里写一个比较条件时能正常运行,但后面就不会写了: 需要比较编号相等、然后类别为全日制、然后代码最小. (代码可能需要通过排序方式)
‘查看了动态生成表达式:如dr2 = DataTables("表B").Find("[品名] = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'"),但仍然做不出
If dr2 IsNot Nothing
e.DataRow("全日制最高学历毕业学校及专业") = dr2("毕业学校")+dr2("专业")
End If
End If
End If
[此贴子已经被作者于2015/9/1 6:47:35编辑过]