经过调试,发现,运行Tables("教职工信息表").Filter = "",就提示是事件AfterSelChange出错,出错点就是下面代码中红色的代码,
现象:运行到红色代码,提示出错,然后会从头开始自动重新运行,再运行到红色代码就不出错了,每次都这样
If Vars("执行事件") = 0 Then '从外部表mdb读取数据的时候,Vars("执行事件") = 1,此时不执行所有代码的内容
Return '返回
End If
Dim frm As WinForm.Form '定义一个窗体'
frm = Forms.ActiveForm '活动窗口的名字表示方法就是:frm.Name
If frm IsNot Nothing Then
If frm.Name <> "在职教职工窗体" Then '设置只有在这个窗体中才起作用
Return '返回
End If
Else
Return '返回
End If
Dim c As Col = e.Table.Cols(e.NewRange.ColSel) 'C 为当前行
Dim dr As Row = e.Table.Rows(e.NewRange.rowSel) 'dr 为当前列
If C.Name <> "姓名" And C.Name <> "身份证号" And C.Name <> "台帐年月" Then '如果正在编辑的是[..]列
With DataTables("教职工历月信息")
.DataRows.Clear()
End With
'()---调数据库中的当月数据
Dim mg As New Merger
mg.SourcePath = ProjectPath &"\Data\信息数据库.mdb" '指定数据文件
mg.Password = "zhang"
mg.SourceTableName = "教职工信息表"
mg.DataTableName = "教职工历月信息"
mg.Filter = "单位代码 = " & myDWDM & " And 是否在职 = '在职' and 身份证号 = '"& dr("身份证号") &"' "
mg.FieldMaps.Add("台帐年月","台帐年月")
mg.FieldMaps.Add("身份证号","身份证号")
mg.FieldMaps.Add("姓名","姓名")
mg.FieldMaps.Add( C.Name ,"信息列")
mg.Merge()
With DataTables("教职工历月信息")
.DataCols("信息列").Caption = C.Name
End With
'-- 定位上月为当前行
Tables("教职工历月信息").sort = "台帐年月,姓名"
With Tables("教职工历月信息")
.Position = .Rows.Count - 1
End With
End If