以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 同表不同列的数据如何引用呢?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=55808)

--  作者:rophy0952
--  发布时间:2014/8/23 16:41:00
--  [求助] 同表不同列的数据如何引用呢?
如图:当“客户代号”变化时,“上月结余金额”等于上个月该客户“累计应付金额”,这个代码应如何写合适呢?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140823162657.jpg
图片点击可在新窗口打开查看


--  作者:Bin
--  发布时间:2014/8/23 16:46:00
--  
http://www.foxtable.com/help/topics/1472.htm


--  作者:rophy0952
--  发布时间:2014/8/23 17:04:00
--  
@Bin:感谢您的回复!
那两个链接的内容我有了解过,系统中其它地方也有运用的。只是我现在在时间条件那里不太会写。也就是当前月的上个月,该如何表达呢?

--  作者:有点甜
--  发布时间:2014/8/24 14:45:00
--  

上个月的条件,参考

 

"日期 < #" & new Date(Date.Today.Year, Date.Today.Month, 1) & "#"

 

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

 

[此贴子已经被作者于2014-8-24 14:44:55编辑过]

--  作者:rophy0952
--  发布时间:2014/8/25 14:13:00
--  

有点甜:

 

这两个表格间我想实现以下:

 

1. “应收账款主表中的本月已收金额“  “收款主表中当前月已入账为false的 “收款金额”合计;符合条件的已入账列= true;

2. 应收账款主表中的“上月结余金额“ =  应收账款主表中该客户上个月的“累计结余金额”。

我的代码是:

If e.DataCol.name = "客户代号" Then

    Dim dr As DataRow = e.DataRow

    Dim filter As String = "客户代号 = \'" & e.DataRow("客户代号") & "\' And 收款日期 <= #" & Date.Today & "# and 已入账 = False "

    Dim dr1 As DataRow = DataTables("应收账款主表").LoadFilter = "客户代号 = \'" & e.DataRow("客户代号") & "\' And 制单日期 < #" & new Date(Date.Today.Year, Date.Today.Month, 1) & "#"

    DataTables("应收账款主表").Load

    dr("本月已收金额") = DataTables("收款主表").Compute("sum(收款金额)",filter)

    dr("上月结余金额") = dr1("累计应收金额")

    For Each pr As DataRow In DataTables("收款主表").dataRows

        pr = DataTables("收款主表").find(filter)

        pr("已入账") = True

    Next

End If


执行后出现错误提示:如图

此主题相关图片如下:qq截图20140825141143.jpg
按此在新窗口浏览图片

此主题相关图片如下:qq截图20140825134116.jpg
按此在新窗口浏览图片

例子如下:
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:问题.foxdb



--  作者:rophy0952
--  发布时间:2014/8/25 14:19:00
--  
DataTables("应收账款主表").Load 这段代码是漏删的,不过刚才删掉以后结果还是会出现错误提示!请指教,谢谢!
--  作者:有点甜
--  发布时间:2014/8/25 14:29:00
--  
If e.DataCol.name = "客户代号" Then
    Dim dr As DataRow = e.DataRow
    Dim filter As String = "客户代号 = \'" & e.DataRow("客户代号") & "\' And 收款日期 <= #" & e.DataRow("制单日期") & "# and 已入账 = False "
    Dim filter2 As String = "客户代号 = \'" & e.DataRow("客户代号") & "\' And 收款日期 < #" & new Date(e.DataRow("制单日期").Year, e.DataRow("制单日期").Month, 1) & "#"
    dr("本月已收金额") = DataTables("收款主表").Compute("sum(收款金额)",filter)
    dr("上月结余金额") = DataTables("收款主表").Compute("sum(收款金额)",filter2)
   
    DataTables("收款主表").ReplaceFor("已入账", True, filter)
End If

--  作者:rophy0952
--  发布时间:2014/8/25 14:48:00
--  
现按照上面的代码试了一下,提示“无制单日期列”,然后将代码修改了一下,本月的“上月结余金额”未变,反而上月的“累计结余金额”项变为零了。


--  作者:有点甜
--  发布时间:2014/8/25 14:55:00
--  

 不明白你什么意思,你输入日期、输入客户名,之后就能统计结果了的。

 

 我测试没有问题。


--  作者:rophy0952
--  发布时间:2014/8/25 15:13:00
--  
应收账款主表中的“上月结余金额“ =  应收账款主表中该客户上个月的“累计结余金额”。而不是“收款主表”中的“收款金额”