以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请帮助完成?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32240)

--  作者:lyfxybc
--  发布时间:2013/4/28 0:07:00
--  请帮助完成?

请帮助完成?

有三个表:A、B、C,都有“合同号”和“计划完成”两列,下列代码只能完成当三个表中数据都显示的时候可以,

For Each r As Row In Tables("表A").Rows
    For Each  r1 As Row In Tables("表B").Rows
       If r("合同号")= r1("合同号") Then
           r1("计划完成")= r("计划完成")     
       End If
    Next
    For Each  r2 As Row In Tables("表C").Rows
       If r("合同号")= r2("合同号") Then
           r2("计划完成")= r("计划完成")     
       End If
    Next
Next

 

但是当表B、C在 BeforeLoadInnerTable事件中加入代码

Select Case e.DataTableName
   
Case "表B","表C" 
        e.Filter =
"[_Identify] Is Null"
End
Select

 

时,执行上述代码,表B、C的“计划完成”列不执行。如何修改代码完成上述要求。

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.foxdb


--  作者:狐狸爸爸
--  发布时间:2013/4/28 9:54:00
--  

你的代码是针对已经加载的数据,表B和表C没有加载数据,上述代码当然无效。

不加载数据有不加载数据的处理方法,用SQL语句:

 

Dim cmd As new SQLCommand
For Each r As Row In Tables("表A").Rows
    cmd.CommandText = "update {表B} Set 计划完成 = " & r("计划完成") & " Where [合同号] = \'" & r("合同号") & "\'"
    cmd.ExecuteNonQuery
    cmd.CommandText = "update {表C} Set 计划完成 = " & r("计划完成") & " Where [合同号] = \'" & r("合同号") & "\'"
    cmd.ExecuteNonQuery
Next

 

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

 

 

我个人建议你尽量将相关数据统一加载处理,例如你要处理某些合同的数据,那么每个表和这些合同相关的数据最好都加载进来。

 

 


--  作者:lyfxybc
--  发布时间:2013/4/28 17:15:00
--  
谢谢,我再考虑一下。