【问题标题】:ADODB/Excel query errorADODB/Excel 查询错误
【发布时间】:2012-11-02 21:12:11
【问题描述】:

当我尝试使用 ADODB 连接 Excel 数据库时,它说:

you try to execute a query without a specified expression <Destinataire>

这是我的代码:

MyQuery = "Select Destinataire, SUM(" & Entete & ") AS NombreTotal FROM [Feuil1$] " _
                         & "WHERE [DateMad] Between #" _
                         & Format(date_deb, "yyyy/mm/dd") _
                         & "# And #" & Format(date_fin, "yyyy/mm/dd") & "#" & Query3 & ""

                    objRecordSet.Open MyQuery, objConnection, adOpenStatic, adLockOptimistic

这有什么问题?

【问题讨论】:

  • 请不要构建连接字符串的查询!使用查询参数!!
  • 您可以在构建并发布之后检查MyQuery 的最终值吗?还有@Marco,您应该给出不使用串联的理由(例如安全性/稳健性)。
  • debug.print 给我这个:选择 Destinataire, SUM(NbCompteurElec) AS NombreTotal FROM [Feuil1$] WHERE [DateMad] between #2012/10/22# And #2012/10/26# [目的地] = 'REL12'
  • @bendataclear:我应该给出一个理由吗?因为肯定是错的!因为邪恶!!因为在本地化时,您可能会遇到字符串、日期和浮点数/双精度数的严重问题!因为您无法维护以这种方式编写的查询!还有一些吗?
  • 感谢输入宏,我很感激它相信我,我倾听每一个批评,因为我对编程语言真的很陌生,我如何格式化查询以使其正确?

标签: sql excel adodb


【解决方案1】:

你忘了group by

查询应该如下所示

Select Destinataire, SUM(NbCompteurElec) AS NombreTotal FROM [Feuil1$] 
WHERE [DateMad] Between #2012/10/22# And #2012/10/26# And [Destinataire] = 'REL12'
Group By Destinataire

在你的代码中应该是这样的

MyQuery = "Select Destinataire, SUM(" & Entete & ") AS NombreTotal FROM [Feuil1$] " _
                         & "WHERE [DateMad] Between #" _
                         & Format(date_deb, "yyyy/mm/dd") _
                         & "# And #" & Format(date_fin, "yyyy/mm/dd") & "#" & Query3 & " Group By Destinataire"

Here's 关于 GROUP BY 子句的教程

【讨论】:

  • 很高兴为您提供帮助 ;) 欢迎来到 Stack Overflow,您可以点击旁边的复选框接受答案
  • 可能还需要在表Select Tbl.Destinataire FROM [Feuili$] Tbl 中添加别名,因为他正在查询 Excel 工作表,这样做时我遇到了没有别名的问题。
猜你喜欢
  • 2014-05-01
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2013-07-08
相关资源
最近更新 更多