Foxtable(狐表)用户栏目专家坐堂 → [求助]关于有条件的跨表统计和自动更新


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

主题:[求助]关于有条件的跨表统计和自动更新

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
[求助]关于有条件的跨表统计和自动更新  发帖心情 Post By:2014/7/1 9:31:00 [显示全部帖子]

老师,我有两张表:1、项目信息表,包括的列有:项目名称、合同金额_施工及监理理、合同金额_其他合同。2、合同台账,包括的列有:项目名称、合同类别,合同金额。
现在我要在"项目信息表"的"合同金额_施工及监理"列根据"合同台账"表中相同项目名称且合同类别为"工程施工合同"及"工程监理合同"自动汇总数据,并自动更新,请问相关代码怎么编写,请专家帮忙一下,非常感谢.帮助里的跨表统计和自动更新,缺少一个条件,和这不一样.
[此贴子已经被作者于2014-7-1 9:32:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
爱相随
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/1 15:27:00 [显示全部帖子]

请专家帮忙看一下这段代码错在哪里?
Select Case e.DataCol.Name
    Case "项目名称","工程单位名称","费用类别","费用类别1","进度金额"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [项目名称] = '" & e.DataRow("项目名称") & " And [工程单位名称] = '" & e.DataRow("工程单位名称") & " And [费用类别] = '" & e.DataRow("费用类别") & " And [费用类别1] = '" & e.DataRow("费用类别1") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] <= " & dr("_SortKey") & " And [项目名称] = '" & dr("项目名称") & " And [工程单位名称] = '" & e.DataRow("工程单位名称") & " And [费用类别] = '" & e.DataRow("费用类别") & " And [费用类别1] = '" & e.DataRow("费用类别1") &  "'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(进度金额)",Filter)
            DR("累计进度") = Val1
        Next
        If e.DataCol.Name = "项目名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [项目名称] = '" & e.OldValue & " And [工程单位名称] = '" & e.OldValue & " And [费用类别] = '" & e.OldValue  & " And [费用类别1] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
            Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [项目名称] = '" & e.DataRow("项目名称") & " And [工程单位名称] = '" & e.DataRow("工程单位名称") & " And [费用类别] = '" & e.DataRow("费用类别") & " And [费用类别1] = '" & e.DataRow("费用类别1") & "'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(进度金额)",Filter)
            dr("累计进度") = Val1 
            Next
        End If
End Select
在命令窗口执行后提示如下信息:
编译错误:“e”is not accessible  in this context because it is "private"
错误代码:elect Case e.DataCol.Name
请专家老师帮我修改一下,谢谢。。。。。

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/1 15:38:00 [显示全部帖子]

本表的DataColChenged
[此贴子已经被作者于2014-7-1 15:39:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
爱相随
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/1 15:52:00 [显示全部帖子]

上传不了我的东西啊,////显示上传成功,可一个也没看见

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/1 16:20:00 [显示全部帖子]

老师,我现在就三个主要问题比较难:
1、表一是汇总情况表,包括的列有:项目名称、合同金额1、合同金额2、合同金额3,表二包括的列:项目名称、施工单位、合同类别、费用类别、合同金额。现在我要在表一里根据项目名称、合同类别1、合同类别2、合同类别3的值分别填入合同金额1、合同金额2、合同金额3;
2、表三是项目进度表,包括的列有:项目名称、施工单位、费用大类,费用小类、进度金额、累计进度。现在要根据项目名称、施工单位、费用大类、费用小类自动得出累计进度,比如项目A、施工单位B、费用大项C、费用小项D,如第一次输入金额是300,得出累计进度值是300;第二次在任意行再输入相同的信息时,在输入金额前累计进度是300,输入当期(本行)进度金额200后,累计进度变为500,其他项目也一样。
3、如何实现表2合同编号根据合同类别以不同的字母开头,且自动连续编号。比如合同类别分别有:施工合同、设计合同、监理合同、服务合同等,合同编分别为SG0001、SJ0001、JL0001、FW0001开头,当输入SG时,自动增加当行编号。比如SG类合同已保存到SG0005号,再输入SG时,自动编号为SG0006。
如实现以上功能,代码怎么写啊,如老师能为我代写,非常感谢不尽。。。。同时希望老师注明在哪里编写。高手看到此信息也欢迎支援。
[此贴子已经被作者于2014-7-1 16:22:31编辑过]

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/1 16:44:00 [显示全部帖子]

老师,我要实现的功能说明见10楼,只要给我一个例子,其他相同的我就可以自己去完成了。可惜我的测试文件上传不上来。。。。
[此贴子已经被作者于2014-7-1 16:46:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
爱相随
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/2 9:26:00 [显示全部帖子]

是什么原因啊,上传不了文件,说是上传成功,可看不见。。。

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/2 9:39:00 [显示全部帖子]

那老师就直接再给我修改代码吧
1、跨表统计
项目信息表DataColChenged代码如下:
If e.DataCol.Name = "项目名称" Then 
    e.DataRow("合同金额") = DataTables("合同台账").Compute("Sum(合同金额)","[项目名称] = '" & e.NewValue & "'") 
End If
合同台账DataColChenged代码如下:
If e.DataCol.Name = "合同金额" Then
    Dim pr As DataRow
    pr = DataTables("项目信息表").Find("项目名称 = '" & e.DataRow("项目名称") & "'")
    If pr IsNot Nothing Then
        pr("合同金额")= pr("合同金额") + e.NewValue - e.OldValue
    End If
End If
上面是跨表统计的两段代码,能够取得相关数据,和说明里的条件是一致的。现在是,上面代码是以“项目名称”为条件取数的,我要再增加条件,项目信息表里的合同金额1取自合同台账里”合同类别1“的汇总金额,就是再增加条件“合同类别”,其他条件相同,请问增加的条件代码加在哪儿呢??

[此贴子已经被作者于2014-7-2 9:48:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
爱相随
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/2 9:46:00 [显示全部帖子]

2、流水账,以下是流水账代码,也能取得数据,但只是按照“项目名称”条件,如果再增加“单位名称”“费用类别”等条件,那代码是什么,加在哪儿?请老师指点,谢谢。
If e.DataCol.Name = "工程进度" Then
    Dim pr As DataRow
    pr = DataTables("项目信息表").Find("项目名称 = '" & e.DataRow("项目名称") & "'")
    If pr IsNot Nothing Then
        pr("工程进度")= pr("进度金额") + e.NewValue - e.OldValue
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
爱相随
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/7/2 9:54:00 [显示全部帖子]

十分感谢信BIN老师和有点甜老师

 回到顶部
总数 18 1 2 下一页