Foxtable(狐表)用户栏目专家坐堂 → [求助]如何提前生成临时表(已解决)


  共有10679人关注过本帖树形打印复制链接

主题:[求助]如何提前生成临时表(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]如何提前生成临时表(已解决)  发帖心情 Post By:2011/12/3 9:41:00 [只看该作者]

思路:一段按钮代码,打开存款明细表,生成临时表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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/3 9:48:00 [只看该作者]

项目事件AfterOpenProject加上这一段:

 

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)

 


MainTableChanged事件代码可以删除。

 

另外建议看看:

http://www.foxtable.com/help/topics/0695.htm

http://www.foxtable.com/help/topics/1279.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/12/3 10:07:00 [只看该作者]

谢谢狐爸老师的指教,问题解决了,并给出最佳方案,再次衷心感谢!!

 回到顶部