修改代码,注意这里不要用CurrentTable,因为并非CurrentTable才会触发CurrentChanged事件,任何表都会触发,所以应该用e.table,而且应该先判断e.Table是否选择有当前行
Dim dt As Datatable = Datatables("数据引用总表")
If e.Table.Position < 0 Then
Return
End If
For Each c As Col In e.Table.Cols
Dim dr As Datarow =dt.Find("[目标表] = '" & e.Table.Datatable.Name & "' And [目标列] = '" & c.Name & "'")
If dr IsNot Nothing Then
Dim yb As String = dr("源表")
Dim yl As String = dr("源列")
Dim mb As String = dr("目标表")
Dim ml As String = dr("目标列")
Dim ygl As String = dr("源关联")
Dim bgl As String = dr("标关联")
Dim ybdr As Datarow = Datatables(yb).Find("[" & ygl & "] = '" & e.Table.Current(bgl) & "'")
If ybdr IsNot Nothing Then
If ybdr.IsNull(yl) Then
e.Table.Current(ml) = Nothing
Else
e.Table.Current(ml) = ybdr(yl)
End If
End If
End If
Next
[此贴子已经被作者于2010-7-13 15:53:45编辑过]