Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

有关余额的两点问题,请煮茶进来看看。

天涯的天涯  发表于:2012-01-24 22:01:10  
复制

SELECT 发货表.编号, 发货表.日期, 发货表.客户, 发货表.品种, 发货表.数量, 发货表.单价, 发货表.含税, 发货表!数量*发货表!单价 AS 金额, 发货表.付款, IIf(IsNull(DSum("[金额]","发货表","[日期]<#" & [日期]+1 & "#")),0,DSum("[金额]","发货表","[日期]<#" & [日期]+1 & "#"))-IIf(IsNull(DSum("[付款]","发货表","[日期]<#" & [日期]+1 & "#")),0,DSum("[付款]","发货表","[日期]<#" & [日期]+1 & "#")) AS 余额, 发货表.备注
FROM 发货表;
此为查询一。

SELECT 发货表查询.编号, 发货表查询.日期, 发货表查询.客户, 发货表查询.品种, 发货表查询.数量, 发货表查询.单价, 发货表查询.含税, 发货表查询.金额, 发货表查询.付款, 发货表查询.余额, 发货表查询.备注
FROM 发货表查询
WHERE (((发货表查询.日期) Between (IIf(IsNull([Forms]![客户查询]![日期开始]),#1/1/2011#,[Forms]![客户查询]![日期开始])) And (IIf(IsNull([Forms]![客户查询]![日期截止]),#12/30/2099#,[Forms]![客户查询]![日期截止]))) AND ((发货表查询.客户) Like IIf(IsNull([Forms]![客户查询]![客户]),'*',[Forms]![客户查询]![客户])));
此为查询一基础建立的查询二。

建立窗口后,以客户为组合框为查询条件。问题有两个,一是在同一天输入的两个数据,单价和数量,所得出的余额为相同,不能分别计算。二是点取客户查询,余额为总余额而不是单独客户的余额。请各位指教。

新手上路,总是有太多问题发问。真是汗颜。

 

Top
煮江品茶 发表于:2012-01-25 19:29:23

加一个ID(自动编号,并做为主键)。则查询写为:

select *,dsum("金额-付款","发货表","id<=" & id & " and 客户='" & 客户 & "'") as 余额

from 发货表;

 

如果可能出现日期与id前后不一致的情况的话,则可进一步增加日期条件如下:

select *,dsum("金额-付款","发货表","日期<=#" & 日期 & "# and id<=" & id & " and 客户='" & 客户 & "'") as 余额

from 发货表;

 

也可用子查询写查询如下:

 

select a.*,(select sum(b.金额-b.付款) from 发货表 as b where b.日期<=a.日期 and b.id<=a.id and b.客户=a.客户) as 余额

from 发货表 as a



天涯的天涯 发表于:2012-01-25 20:53:35

您好。我的编号就是ID,是自动编号的。用了您上面的查询,余额上没有数据,发货表.查询上也没有数据。请解惑。

 



煮江品茶 发表于:2012-01-25 21:11:35

分段的加条件,就可以看出问题出在什么地方了。

比如先只写:

select *,dsum("金额-付款","发货表","编号<=" & 编号) as 余额

from 发货表;

 

然后逐步加条件,看看是不是字段类型的问题。



蟹仔 发表于:2012-01-25 21:22:35

类似这样的问题最好发个附件,除了必要的表跟查询,其他全部删掉。新建一个窗体加上你的控件,这样看着头晕。



天涯的天涯 发表于:2012-01-25 21:37:18

再次感谢各位,我把附件发上来了。

点击下载此附件

天涯的天涯 发表于:2012-02-03 12:22:55

select *,dsum("金额-付款","发货表","编号<=" & 编号) as 余额

其中我的金额是为金额:数量*单价,这样的话以上的表达式无法生效,请问有何方法解决。谢谢。



天涯的天涯 发表于:2012-02-03 13:32:52

我找出问题的症状在哪了。其中我是以发货表做出查询,用来计算金额和余额,然后以查询建立窗体用来输入数据,但是余额里的金额却是以发货表来计算的。而发货表里金额却没用更新,余额无法计算。请问在这种情况下要如何同步。



总记录:7篇  页次:1/1 9 1 :