以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于有条件的跨表统计和自动更新 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53153) |
-- 作者:爱相随 -- 发布时间:2014/7/1 9:31:00 -- [求助]关于有条件的跨表统计和自动更新 老师,我有两张表:1、项目信息表,包括的列有:项目名称、合同金额_施工及监理理、合同金额_其他合同。2、合同台账,包括的列有:项目名称、合同类别,合同金额。 现在我要在"项目信息表"的"合同金额_施工及监理"列根据"合同台账"表中相同项目名称且合同类别为"工程施工合同"及"工程监理合同"自动汇总数据,并自动更新,请问相关代码怎么编写,请专家帮忙一下,非常感谢.帮助里的跨表统计和自动更新,缺少一个条件,和这不一样.
[此贴子已经被作者于2014-7-1 9:32:19编辑过]
|
-- 作者:Bin -- 发布时间:2014/7/1 9:34:00 -- http://www.foxtable.com/help/topics/1454.htm |
-- 作者:有点甜 -- 发布时间:2014/7/1 9:34:00 -- 跨表统计和更新那里,不是可以设置条件的么?那里是一个条件,你的是两个、三个条件而已,就不会改了?
真不会做,请把你的项目发上来测试。 |
-- 作者:Bin -- 发布时间:2014/7/1 9:35:00 -- ("项目名称 = \'工程施工合同\' and 项目名称 = \'工程监理合同\'") 条件是可以自由设置的,多少个都没问题. |
-- 作者:爱相随 -- 发布时间: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 请专家老师帮我修改一下,谢谢。。。。。
|
-- 作者:Bin -- 发布时间:2014/7/1 15:32:00 -- 你代码写在哪里的? |
-- 作者:爱相随 -- 发布时间:2014/7/1 15:38:00 -- 本表的DataColChenged [此贴子已经被作者于2014-7-1 15:39:03编辑过]
|
-- 作者:爱相随 -- 发布时间:2014/7/1 15:52:00 -- 上传不了我的东西啊,////显示上传成功,可一个也没看见 |
-- 作者:有点甜 -- 发布时间:2014/7/1 16:02:00 -- 以下是引用爱相随在2014-7-1 15:38:00的发言:
本表的DataColChenged [此贴子已经被作者于2014-7-1 15:39:03编辑过]
代码没有错,是你的逻辑错了。
直接说你要实现什么功能吧。 |
-- 作者:爱相随 -- 发布时间: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编辑过]
|