Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表条件计算问题


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

主题:[求助]跨表条件计算问题

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


加好友 发短信
等级:婴狐 帖子:40 积分:360 威望:0 精华:0 注册:2011/11/20 21:06:00
[求助]跨表条件计算问题  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4742 积分:34508 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/11/10 8:05:00 [只看该作者]

假如B表第二列是BB,那么第三列等于A表AA对应的第二列12*1.5。
假如B表第二列是CC,那么第三列等于A表AA对应的第二列13*0.5。
红色部分,似乎读不懂

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:40 积分:360 威望:0 精华:0 注册:2011/11/20 21:06:00
  发帖心情 Post By:2014/11/10 10:57:00 [只看该作者]

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/10 11:00:00 [只看该作者]

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:40 积分:360 威望:0 精华:0 注册:2011/11/20 21:06:00
  发帖心情 Post By:2014/11/10 11:06:00 [只看该作者]

老大,不想用事件,用按钮的代码能行吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:40 积分:360 威望:0 精华:0 注册:2011/11/20 21:06:00
  发帖心情 Post By:2014/11/10 11:20:00 [只看该作者]

强啊

 回到顶部