以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  同一列数据来自2个不同表出现异常退出  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87116)

--  作者:jamhuton
--  发布时间:2016/7/4 9:44:00
--  同一列数据来自2个不同表出现异常退出
Dim f As New Filler
f.SourceTable = DataTables("TAKATA成本") \'指定数据来源
f.SourceCols = "客户简称,月份,运输方式" \'指定数据来源列
f.DataTable = DataTables("开票管理") \'指定数据接收表
f.DataCols = "客户简称,月份,运输方式" \'指定数据接收列
f.ExcludeExistValue = True
f.Distinct = True
f.append = False
f.Fill() \'填充数据


Dim g As New Filler
g.SourceTable = DataTables("成本明细") \'指定数据来源
g.SourceCols = "客户简称,月份" \'指定数据来源列
g.DataTable = DataTables("开票管理") \'指定数据接收表
g.DataCols = "客户简称,月份" \'指定数据接收列
g.ExcludeExistValue = True
g.Distinct = True
g.append = False
g.Fill() \'填充数据

--  作者:大红袍
--  发布时间:2016/7/4 9:46:00
--  
 你dataColChanged或者dataColChanging事件的代码注释掉,看是否还报错。
--  作者:jamhuton
--  发布时间:2016/7/4 10:00:00
--  
去掉后不报错了


--  作者:大红袍
--  发布时间:2016/7/4 10:01:00
--  

检测你的事件代码,一定要判断列名,不然很可能死循环

 

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

 


--  作者:jamhuton
--  发布时间:2016/7/4 10:14:00
--  
Select Case e.DataCol.name
    Case "客户简称","月份"
        e.DataRow("手册成本") = DataTables("手册业务").Compute("sum(成本合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
End Select
Select Case e.DataCol.name
    Case "客户简称","月份"
        e.DataRow("手册开票") = DataTables("手册业务").Compute("sum(合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
End Select
Select Case e.DataCol.name
    Case "客户简称","月份","运输方式"
        If e.DataRow.IsNull("运输方式") Then
            e.DataRow("进口成本") = DataTables("成本明细").Compute("sum(成本合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
        Else
            e.DataRow("进口成本") = DataTables("TAKATA成本").Compute("sum(应付)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\' and [运输方式]= \'" & e.DataRow("运输方式") & "\'" )
        End If
End Select
Select Case e.DataCol.name
    Case "客户简称","月份","运输方式"
        If e.DataRow.IsNull("运输方式") Then
            e.DataRow("进口垫付") = DataTables("账单明细").Compute("sum(垫付)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
        Else
            e.DataRow("进口垫付") = DataTables("TAKATA账单").Compute("sum(垫付费用)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\' and [运输方式]= \'" & e.DataRow("运输方式") & "\'" )
        End If
End Select
Select Case e.DataCol.name
    Case "客户简称","月份","运输方式"
        If e.DataRow.IsNull("运输方式") Then
            e.DataRow("进口开票") = DataTables("账单明细").Compute("sum(合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
        Else
            e.DataRow("进口开票") = DataTables("TAKATA账单").Compute("sum(合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\' and [运输方式]= \'" & e.DataRow("运输方式") & "\'" )
        End If
End Select


在这些代码前面做判断?

--  作者:大红袍
--  发布时间:2016/7/4 10:16:00
--  
 你这段代码是不影响的。事件里面,肯定有其他代码影响了,贴出完整代码。
--  作者:jamhuton
--  发布时间:2016/7/4 10:18:00
--  
Dim f As New Filler
f.SourceTable = DataTables("TAKATA成本") \'指定数据来源
f.SourceCols = "客户简称,月份,运输方式" \'指定数据来源列
f.DataTable = DataTables("开票管理") \'指定数据接收表
f.DataCols = "客户简称,月份,运输方式" \'指定数据接收列
f.ExcludeExistValue = True
f.Distinct = True
f.append = False
f.Fill() \'填充数据


Dim g As New Filler
g.SourceTable = DataTables("成本明细") \'指定数据来源
g.SourceCols = "客户简称,月份" \'指定数据来源列
g.DataTable = DataTables("开票管理") \'指定数据接收表
g.DataCols = "客户简称,月份" \'指定数据接收列
g.ExcludeExistValue = True
g.Distinct = True
g.append = False
g.Fill() \'填充数据

这个代码写进去后,前面的一段代码执行没问题,后面一段貌似有些问题,没有正确执行


--  作者:大红袍
--  发布时间:2016/7/4 10:20:00
--  
看6楼,不可能会退出的。不正确执行指什么啊?
--  作者:jamhuton
--  发布时间:2016/7/4 10:24:00
--  
\'Dim f As New Filler
\'f.SourceTable = DataTables("TAKATA成本") \'指定数据来源
\'f.SourceCols = "客户简称,月份,运输方式" \'指定数据来源列
\'f.DataTable = DataTables("开票管理") \'指定数据接收表
\'f.DataCols = "客户简称,月份,运输方式" \'指定数据接收列
\'f.ExcludeExistValue = True
\'f.Distinct = True
\'f.append = False
\'f.Fill() \'填充数据


\'Dim g As New Filler
\'g.SourceTable = DataTables("成本明细") \'指定数据来源
\'g.SourceCols = "客户简称,月份" \'指定数据来源列
\'g.DataTable = DataTables("开票管理") \'指定数据接收表
\'g.DataCols = "客户简称,月份" \'指定数据接收列
\'g.ExcludeExistValue = True
\'g.Distinct = True
\'g.append = False
\'g.Fill() \'填充数据


Select Case e.DataCol.name
    Case "客户简称","月份"
        e.DataRow("手册成本") = DataTables("手册业务").Compute("sum(成本合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
End Select
Select Case e.DataCol.name
    Case "客户简称","月份"
        e.DataRow("手册开票") = DataTables("手册业务").Compute("sum(合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
End Select
Select Case e.DataCol.name
    Case "客户简称","月份","运输方式"
        If e.DataRow.IsNull("运输方式") Then
            e.DataRow("进口成本") = DataTables("成本明细").Compute("sum(成本合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
        Else
            e.DataRow("进口成本") = DataTables("TAKATA成本").Compute("sum(应付)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\' and [运输方式]= \'" & e.DataRow("运输方式") & "\'" )
        End If
End Select
Select Case e.DataCol.name
    Case "客户简称","月份","运输方式"
        If e.DataRow.IsNull("运输方式") Then
            e.DataRow("进口垫付") = DataTables("账单明细").Compute("sum(垫付)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
        Else
            e.DataRow("进口垫付") = DataTables("TAKATA账单").Compute("sum(垫付费用)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\' and [运输方式]= \'" & e.DataRow("运输方式") & "\'" )
        End If
End Select
Select Case e.DataCol.name
    Case "客户简称","月份","运输方式"
        If e.DataRow.IsNull("运输方式") Then
            e.DataRow("进口开票") = DataTables("账单明细").Compute("sum(合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\'" )
        Else
            e.DataRow("进口开票") = DataTables("TAKATA账单").Compute("sum(合计)","[客户简称]= \'" & e.DataRow("客户简称") & "\' and [月份]= \'" & e.DataRow("月份") & "\' and [运输方式]= \'" & e.DataRow("运输方式") & "\'" )
        End If
End Select

--  作者:大红袍
--  发布时间:2016/7/4 10:25:00
--  
7楼的代码,单独写到一个按钮里执行,不要写到datacolchanged事件里面去的啊。