思路:一段按钮代码,打开存款明细表,生成临时表ckmx,然后在存款明细表的DataColChanged事件中,使用代码从ckmx表中取值,并填充到存款明细表的db列和zr列。
问题:点击按钮后,可以打开存款明细表,但是弹出错误提示:
此主题相关图片如下:j.png
原因分析:先运行DataColChanged事件中的代码,然后生成临时表,造成DataColChanged事件中的取值代码找不到ckmx表的错误。
如何待临时表生成后,再执行DataColChanged事件中的取值代码,请各位老师指教,谢谢!!
按钮代码:
MainTable = Tables("存款明细")
Tables("存款明细").Sort = "年月,db,编号"
Tables("存款明细").AutoSizeCols()
'生成临时表
If MainTable.Name = "存款明细" Then
Dim dtb As New DataTableBuilder("ckmx")
dtb.AddDef("bh", Gettype(String), 16)
dtb.Build()
DataTables("ckmx").Fill("Select bh,xm,db,zr From {DA_JBXX} WHERE Left(zr,4) >= 2007","jg",False)
End If
DataColChanged事件中的取值代码:
'填充db
Select Case e.DataCol.Name
Case "编号"
Dim dr As DataRow = e.DataRow
Dim pr As DataRow
If dr.IsNull("编号") Then
dr("db") = Nothing
Else
Dim filter As String
filter = "bh = '" & dr("编号") & "'"
pr = DataTables("ckmx").Find(filter)
If pr IsNot Nothing Then
dr("db") = pr("db")
Else
dr("db") = Nothing
End If
End If
End Select
'填充zr
Select Case e.DataCol.Name
Case "编号"
Dim dr As DataRow = e.DataRow
Dim pr As DataRow
If dr.IsNull("编号") Then
dr("zr") = Nothing
Else
Dim filter As String
filter = "bh = '" & dr("编号") & "'"
pr = DataTables("ckmx").Find(filter)
If pr IsNot Nothing Then
dr("zr") = pr("zr")
Else
dr("zr") = Nothing
End If
End If
End Select
[此贴子已经被作者于2011-12-3 10:07:49编辑过]