Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共3 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
yyzlxc 发表于: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楼
狐狸爸爸 发表于: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

 

3楼
yyzlxc 发表于:2011/12/3 10:07:00
谢谢狐爸老师的指教,问题解决了,并给出最佳方案,再次衷心感谢!!
共3 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .01953 s, 2 queries.