以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]账龄表的查询代码,已经上传例子,请老师帮忙下,10楼有新问题,请老师看下 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113398) |
||||
-- 作者:huangfanzi -- 发布时间:2018/1/15 13:58:00 -- [求助]账龄表的查询代码,已经上传例子,请老师帮忙下,10楼有新问题,请老师看下 做了个例子,项目中有: 发货表:记录某公司的发货日期与金额 收款表:记录某公司的收款日期与金额 账龄表:是我人工做的账龄 请老师写个代码能用查询表生成例子中的账龄表,想了二天了,实在做不出来。万分感谢! [此贴子已经被作者于2018/1/15 19:47:00编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/15 14:12:00 -- 方法一:参考
http://www.foxtable.com/webhelp/scr/0681.htm
|
||||
-- 作者:huangfanzi -- 发布时间:2018/1/15 14:21:00 -- 这个例子我看过,现在的困难在于做出发货金额的时段分布图后,如何再用收到的款去减各个时段的发货金额,并优先减最早时段发货的,对SQL语句就懂些皮毛,这里有点搞不定了。 |
||||
-- 作者:有点甜 -- 发布时间:2018/1/15 14:42:00 -- 方法二:如果sql语句,就这样写
select 公司, sum(应收款) as 应收款, (select sum(应收款) from (select 公司, datediff(\'d\', 收款日期, date()) as 天数, -收款金额 as 应收款 from {收款} union all select 公司, datediff(\'d\', 发货日期, date()) as 天数, 发货金额 from {发货}) as b where a.公司=b.公司 and b.天数 >= 1 and b.天数 <= 30) as [账龄1-30天],(select sum(应收款) from (select 公司, datediff(\'d\', 收款日期, date()) as 天数, -收款金额 as 应收款 from {收款} union all select 公司, datediff(\'d\', 发货日期, date()) as 天数, 发货金额 from {发货}) as b where a.公司=b.公司 and b.天数 >= 31 and b.天数 <= 60) as [账龄31-60天] from (select 公司, datediff(\'d\', 收款日期, date()) as 天数, -收款金额 as 应收款 from {收款} union all select 公司, datediff(\'d\', 发货日期, date()) as 天数, 发货金额 from {发货}) as a group by 公司 |
||||
-- 作者:有点甜 -- 发布时间:2018/1/15 14:45:00 -- 以下是引用huangfanzi在2018/1/15 14:21:00的发言:
这个例子我看过,现在的困难在于做出发货金额的时段分布图后,如何再用收到的款去减各个时段的发货金额,并优先减最早时段发货的,对SQL语句就懂些皮毛,这里有点搞不定了。
比如你要计算 1-30日的,那就合成条件如
"发货日期 >= #" & date.Today.AddDays(-30) & "# and 发货日期 <= #" & date.Today.AddDays(-1) & "#" [此贴子已经被作者于2018/1/15 14:44:51编辑过]
|
||||
-- 作者:huangfanzi -- 发布时间:2018/1/15 14:52:00 -- 老师,代码有问题啊,datediff(\'d\', 这一段中的 ‘ 导致后面的代码变成灰色了 |
||||
-- 作者:有点甜 -- 发布时间:2018/1/15 14:59:00 -- 以下是引用huangfanzi在2018/1/15 14:52:00的发言:
老师,代码有问题啊,datediff(\'d\', 这一段中的 ‘ 导致后面的代码变成灰色了
认认真真看懂上面说什么了啊 http://www.foxtable.com/webhelp/scr/1484.htm
|
||||
-- 作者:huangfanzi -- 发布时间:2018/1/15 18:32:00 -- ![]() ![]() 老师,附件是我根据您的例子依样写的代码,但查询的结果是不对的,所出的问题在下面的图上,请帮我看看,谢谢!另外奇怪的是,我怎么直接发出不代码,而老师能发出来。
[此贴子已经被作者于2018/1/15 18:32:57编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/15 19:00:00 -- 1、根据发货表,统计应收金额,如
http://www.foxtable.com/webhelp/scr/0681.htm
2、请自行完成第一步。
3、循环统计表的每一行,统计收款表的总和,从最后一列依次减去对应的数额即可。 [此贴子已经被作者于2018/1/15 19:01:20编辑过]
|
||||
-- 作者:huangfanzi -- 发布时间:2018/1/15 19:38:00 -- 我有思路了,看来不能用一条SQL语句做,我就分步做,下面的代码请老师帮我看下: Tables(e.Form.Name & "_Table1").Fill("s elect 公司,SUM(发货金额) as 发货金额,(s elect sum(收款金额) from {收款} b where a.公司 = b.公司 ) as 收款金额 f rom {发货} as a group by 公司",True) If DataTables(e.Form.Name & "_Table1").datacols.Contains("应收款") Then Else DataTables(e.Form.Name & "_Table1").DataCols.Add("应收款", Gettype(Double)) End If For Each r As Row In Tables(e.Form.Name & "_table1").Rows r("应收款") = r("发货金额") - r("收款金额") Next 上面的代码是可以达到我想的要求,但感觉太繁琐,如何在SQL语句中把应收款直接做上去,就像老师你上面的代码得到的结果,上面的代码我没看明白是如何得到应收款的 关键是我想在SQL语句中加个条件,让应收款为负数的(就是不欠钱)不要出现在table表中
[此贴子已经被作者于2018/1/15 19:39:13编辑过]
|