设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

返回列表 发新帖
查看: 160|回复: 2

[查询] 请问如何用代码生成包含DSUM的交叉表查询TRANSFORM?

[复制链接]
发表于 2018-1-9 13:41:08 | 显示全部楼层 |阅读模式
本帖最后由 fatmingli 于 2018-1-9 13:53 编辑

问题如下
Sub CSQL()
  A =Screen.ActiveForm.Name  '   获取当前窗体名称
  Dim qdfAs DAO.QueryDef
  Dimstrsql
  strsql ="TRANSFORM DSum(成交数量, " & A & ",证券代码='002489') AS 成本价格 SELECT "& A & ".发生日期 FROM " & A & " WHERE(((" & A & ".证券代码) = '"& Forms(A)!Text2 & "')) GROUP BY " & A & ".发生日期 PIVOT [证券代码] & [证券名称];"
  Set qdf =CurrentDb.QueryDefs("成本分析查询")
  qdf.SQL =strsql
   DoCmd.OpenForm "成本曲线图"
End Sub

运行后生成的成本分析查询“” SQL语句是
TRANSFORM DSum(成交数量,交易记录,证券代码='002489') AS 成本价格
SELECT 交易记录.发生日期
FROM 交易记录
WHERE (((交易记录.证券代码)='002489'))
GROUP BY 交易记录.发生日期
PIVOT [证券代码] & [证券名称];

我检查后发现DSUM语句不正确,查询不能正常运行,
正确的DSUM是有双引号的,正确的SQL语句是
TRANSFORM DSum("成交数量","交易记录","证券代码='002489'") AS 成本价格
SELECT 交易记录.发生日期
FROM 交易记录
WHERE (((交易记录.证券代码)='002489'))
GROUP BY 交易记录.发生日期
PIVOT [证券代码] & [证券名称];

请问要如何修改这段代码,才能生成正确的SQL语句,我对这些符号格式实在头痛
  strsql ="TRANSFORM DSum(成交数量, " & A & ",证券代码='002489') AS 成本价格 SELECT "& A & ".发生日期 FROM " & A & " WHERE(((" & A & ".证券代码) = '"& Forms(A)!Text2 & "')) GROUP BY " & A & ".发生日期 PIVOT [证券代码] & [证券名称];"
谢谢

 楼主| 发表于 2018-1-9 15:29:04 | 显示全部楼层
本帖最后由 fatmingli 于 2018-1-9 16:08 编辑

在试验了无数次后,没问题了,加 "" 就可以了,谢谢啦以下代码,供有需要的人参考
  strsql = "TRANSFORM iif(DSum(""成交数量"",""" & A & """,""发生日期<='""" & " & [发生日期] & " & """' and 证券代码='" & Forms(A)!Text2 & "'"")<>0,-DSum(""发生金额"",""" & A & """,""发生日期<='""" & " & [发生日期] & " & """' and 证券代码='" & Forms(A)!Text2 & "'"")/DSum(""成交数量"",""" & A & """,""发生日期<='""" & " & [发生日期] & " & """' and 证券代码='" & Forms(A)!Text2 & "'"")) AS 成本价格 SELECT " & A & ".发生日期 FROM " & A & " WHERE (((" & A & ".证券代码) = '" & Forms(A)!Text2 & "')) GROUP BY " & A & ".发生日期 PIVOT [证券代码] & [证券名称];"


发表于 2018-1-18 00:29:00 | 显示全部楼层
如果有问题。麻烦发附件。别让大家为你的脚本调试去创建一个或几个数据表。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /6 下一条

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2018-7-18 17:01 , Processed in 0.089144 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表