以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表条件计算问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59730)

--  作者:sulgz
--  发布时间:2014/11/9 23:37:00
--  [求助]跨表条件计算问题
A、B两表,假如B表第二列是AA,那么第三列等于A表AA对应的第二列14。
假如B表第二列是BB,那么第三列等于A表AA对应的第二列12*1.5。
假如B表第二列是CC,那么第三列等于A表AA对应的第二列13*0.5。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table



--  作者:y2287958
--  发布时间:2014/11/10 8:05:00
--  
假如B表第二列是BB,那么第三列等于A表AA对应的第二列12*1.5。
假如B表第二列是CC,那么第三列等于A表AA对应的第二列13*0.5。
红色部分,似乎读不懂

--  作者:有点甜
--  发布时间:2014/11/10 9:00:00
--  

 表B,Datacolchanged事件

 

If e.DataCol.Name = "第二列" Then
    Dim fdr As DataRow = DataTables("表A").Find("第一列 = \'" & e.DataRow("第二列") & "\'")
    If fdr IsNot Nothing Then
        e.DataRow("第三列") = fdr("第二列")
    Else
        e.DataRow("第三列") = Nothing
    End If
End If

 

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

 


--  作者:sulgz
--  发布时间:2014/11/10 10:57:00
--  
谢版主,但没解决问题。
一、我那个是计算(=14*1.5)不是对应。
二、计算是有条件的(假如B表第二列是AA,第三列=14*1.5)。
三、只想用代码实现,不用事件实现。
[此贴子已经被作者于2014-11-10 10:59:08编辑过]

--  作者:有点甜
--  发布时间:2014/11/10 11:00:00
--  

 那规律是什么,获取表A的值后,然后乘以多少?


--  作者:有点甜
--  发布时间:2014/11/10 11:03:00
--  
If e.DataCol.Name = "第二列" Then
    Dim fdr As DataRow = DataTables("表A").Find("第一列 = \'" & e.DataRow("第二列") & "\'")
    If fdr IsNot Nothing Then
       
        If e.DataRow("第二列") = "AA" Then
            e.DataRow("第三列") = fdr("第二列") * 1.5
        Else If e.DataRow("第二列") = "BB" Then
            e.DataRow("第三列") = fdr("第二列") * 1.5
        Else If e.DataRow("第二列") = "CC" Then
            e.DataRow("第三列") = fdr("第二列") * 0.5
        End If
       
    Else
        e.DataRow("第三列") = Nothing
    End If
End If

 


--  作者:sulgz
--  发布时间:2014/11/10 11:06:00
--  
老大,不想用事件,用按钮的代码能行吗?
--  作者:有点甜
--  发布时间:2014/11/10 11:08:00
--  
 For Each dr As DataRow In DataTables("表B").DataRows
    Dim fdr As DataRow = DataTables("表A").Find("第一列 = \'" & dr("第二列") & "\'")
    If fdr IsNot Nothing Then     
        If dr("第二列") = "AA" Then
            dr("第三列") = fdr("第二列") * 1.5
        Else If dr("第二列") = "BB" Then
            dr("第三列") = fdr("第二列") * 1.5
        Else If dr("第二列") = "CC" Then
            dr("第三列") = fdr("第二列") * 0.5
        End If
       
    Else
        dr("第三列") = Nothing
    End If
Next

--  作者:sulgz
--  发布时间:2014/11/10 11:20:00
--  
强啊