Access交流中心

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

这个引号怎样改

半夜罗  发表于:2017-04-04 17:19:24  
复制

请问各位大神,这个引号应该怎样改,这个SQL语句是在设计视图中完成的,在VBA代码中直接引用时,引号出了问题,出问题的在下面红色加粗部分,谢谢!!!

DoCmd.RunSQL "SELECT 基础表_逐行累计.姓名, 基础表_逐行累计.序号, 基础表_逐行累计.月份, 基础表_逐行累计.金额, Val(DSum('[金额]','[基础表_逐行累计]','[序号]>=" & [序号] & " And [姓名]='" & [姓名] & "'')) AS 期末应收 INTO 基础表_逐行累计计算  " & _
     "FROM 基础表_逐行累计 " & _
     "WHERE (((Val(DSum('[金额]','[基础表_逐行累计]',"[序号]<=" & [序号] & " And [姓名]='" & [姓名] & "'"))) < 0)) " & _
     "ORDER BY 基础表_逐行累计.序号 DESC;"

 

Top
MDZZ 发表于:2017-04-05 08:27:17

DoCmd.RunSQL "SELECT 基础表_逐行累计.姓名, 基础表_逐行累计.序号, 基础表_逐行累计.月份, 基础表_逐行累计.金额, Val(DSum('[金额]','[基础表_逐行累计]','[序号]>=" & [序号] & " And [姓名]='" & [姓名] & "'')) AS 期末应收 INTO 基础表_逐行累计计算  " & _
     "FROM 基础表_逐行累计 " & _
     "WHERE (((Val(DSum('[金额]','[基础表_逐行累计]','[序号]<=" & [序号] & " And [姓名]='" & [姓名] & "''))) < 0)) " & _
     "ORDER BY 基础表_逐行累计.序号 DESC;"





半夜罗 发表于:2017-04-05 13:52:30
还是不行。点击下载此附件

半夜罗 发表于:2017-04-05 15:55:59
修改成 MDZZ 管理员的代码后出现的问题如图:

半夜罗 发表于:2017-04-05 20:04:38

经分析问题应该在下面这段:

Val(DSum('[金额]','[基础表_逐行累计]','[序号]>=" & [序号] & " And [姓名]='" & [姓名] & "'')) AS 期末应收 

这个字段会出现找不到的问题,不知如何修改?



leoyoung 发表于:2017-04-06 08:22:26

"SELECT 基础表_逐行累计.姓名, 基础表_逐行累计.序号, 基础表_逐行累计.月份, 基础表_逐行累计.金额, Val(DSum('[金额]','[基础表_逐行累计]',[序号]>=" & [序号] & " And [姓名]='" & [姓名] & " ')) AS 期末应收 INTO 基础表_逐行累计计算  " & _
 "FROM 基础表_逐行累计  " & _
"WHERE (Val(DSum('[金额]','[基础表_逐行累计]',[序号]>=" & [序号] & " And [姓名]='" & [姓名] & "')))< 0 " & _
 "ORDER BY 基础表_逐行累计.序号 DESC"



半夜罗 发表于:2017-04-06 20:24:30
还是不行的

仙来 发表于:2017-04-07 12:14:36
@mdzz 这是生成表查询,但表达式错误,我也想知道

yihui 发表于:2017-04-07 16:09:43

窗体里的docmd.runsql  里的sql语言不能直接用dsum  因为 我们在查询时 用dsum  里的[] 表示当前表字段 ,但在窗体vba里  []指的是窗体字段  不是当前表字段 就会提示找不到字段   建议将sql里的 dsum 换成子查询  

代码是

SELECT a.姓名, a.序号, a.月份, a.金额, (select sum(nz(金额,0)) from 基础表_逐行累计 as b where a.序号>=b.序号 and b.姓名=a.姓名  group by b.姓名 ) AS 期末应收
FROM 基础表_逐行累计 AS a
WHERE ((((select sum(nz(金额,0)) from 基础表_逐行累计 as b where a.序号>=b.序号 and b.姓名=a.姓名  group by b.姓名 ))<0))
ORDER BY a.姓名, a.序号


效果如附件 另外 你原表的计算貌似错了  我重做了个  你看下我的查询3 

点击下载此附件



半夜罗 发表于:2017-04-07 18:54:31
思路不错,但得不到我的想法。这是我的完整的系统。点击下载此附件

半夜罗 发表于:2017-04-08 11:40:28

谢谢8楼,根据你的思路终于解决这个问题,在VBA代码中换成了子查询

    DoCmd.RunSQL "SELECT 账龄_合计与明细.id, 账龄_合计与明细.姓名, 账龄_合计与明细.月份, 账龄_合计与明细.金额, (select sum(b.金额) from 账龄_合计与明细 as b where b.姓名=账龄_合计与明细.姓名 and b.id>=账龄_合计与明细.id) AS 期末应收 INTO 账龄_逐行累计 " & _
                 "FROM 账龄_合计与明细 " & _
                 "ORDER BY 账龄_合计与明细.id DESC;"点击下载此附件



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