以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于有条件的跨表统计和自动更新  (http://foxtable.com/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编辑过]