首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Delphi :使用SQL聚合函数的AdoQuery参数信息错误

Delphi :使用SQL聚合函数的AdoQuery参数信息错误
EN

Stack Overflow用户
提问于 2015-01-23 07:34:27
回答 1查看 812关注 0票数 0

我使用delphi XE5,我有一个有7个表的数据库,我的问题是:我单击一个运行以下代码的按钮:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dbgridappr2.Enabled:=false;
adoquery4.Parameters.Clear;
datasource6.DataSet:=adoquery4;
ADOQuery4:=TADOQuery.Create(Application);
adoquery4.Active:=False;
adoquery4.Connection:=ADOConnection1;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select SPEC.ISp AS ''Spécialité'',COUNT(APPR.NValAp) AS ''Nombre dApprentis de même Spécialité''  ');
adoquery4.SQL.Add('FROM APPR,SPEC ');
adoquery4.SQL.Add('where SPEC.CSp=APPR.CSp ');
adoquery4.SQL.Add('GROUP BY SPEC.ISp ');
adoquery4.SQL.Add('ORDER BY COUNT(APPR.NValAp) desc ');
ADOQuery4.Prepared := True;
ADOQuery4.ExecSQL;
//adoquery4.Open;
adoquery4.Active:=true;
dbgridappr2.Visible:=true;
dbgridappr2.DataSource:=datasource6;
dbgridappr2.Enabled:=true;

我在DbGrid中得到了结果,但是消息错误显示了不正确的参数?

我更改了按钮代码,但始终收到相同的错误消息。我有10个按钮,它们都使用不同的AdoQuery运行类似的代码,我有结果,但总是有相同的消息错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-23 08:13:49

你贴出的代码是一堆烂摊子。原因如下:

在这里清除adoquery4.Parameters,并将adoquery4分配给datasource6.DataSet

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dbgridappr2.Enabled:=false;
adoquery4.Parameters.Clear;
datasource6.DataSet:=adoquery4;

然后立即丢弃现有的adoquery4 (进程中的内存泄漏),并将其替换为TADOQuery的新实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ADOQuery4:=TADOQuery.Create(Application);

然后关闭新创建的ADOQuery4 (此时不可能是Active ),分配一个连接(这很好),清除SQL (这里不可能有任何内容):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
adoquery4.Active:=False;
adoquery4.Connection:=ADOConnection1;
adoquery4.SQL.Clear;

到目前为止,你所做的事情中有90%是毫无意义的。

然后调用ADOQuery4.ExecSQL;,它用于执行不返回行集的查询,如INSERTDELETE等。您需要使用ADOQuery4.OpenADOQuery4.Active := True来代替SELECT。这是所得到的错误的实际原因;您使用返回行集的SQL语句调用ExecSQL,这是无效的。

让我们再试一次,在这个过程中稍微改进一下SQL。忽略你在这里发布的所有内容,重新开始:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ADOQuery4.DisableControls;
try
  // If the query is
  if ADOQuery4.Active then
    ADOQuery4.Close;

  ADOQuery4.Parameters.Clear;
  ADOQuery4.SQL.Clear;
  AdoQuery4.SQL.Add('select SPEC.ISp AS ''Spécialité'',');
  AdoQuery4.SQL.Add('COUNT(APPR.NValAp) AS ''Nombre dApprentis de même Spécialité''');
  AdoQuery4.SQL.Add('FROM APPR INNER JOIN SPEC');
  AdoQuery4.SQL.Add('ON SPEC.CSp = APPR.CSp');
  AdoQuery4.SQL.Add('GROUP BY SPEC.ISp ');
  AdoQuery4.SQL.Add('ORDER BY COUNT(APPR.NValAp) desc');
  ADOQuery4.Open;
finally
  ADOQuery4.EnableControls;
end;

(我不知道dbgridappr2.DataSource的所有杂耍都是关于什么的,但是除非您要从不同的查询中更改数据源,否则这些都没有必要。在执行新查询时,对DisableControlsEnableControls的调用将阻止更新任何UI组件。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28113296

复制
相关文章
安装Nuget包
项目中添加包:dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
CN_Simo
2022/05/10
1K0
安装Nuget包
nuget服务器搭建,以及如何发布一个Nuget包
一、本地dll如何打包,以及版本的更新 本小节主要介绍两种方式将本地dll打包为Nuget包, 1.1 利用nuget.exe进行打包(应用于.net framework) 1. 下载nuget.ex
sam dragon
2018/01/17
4.5K0
nuget服务器搭建,以及如何发布一个Nuget包
NuGet 修改包路径
通过 NuGet 安装包时,NuGet 先将包下载至一个统一的目录,默认路径是:C:\Users\用户名\.nuget\packages
丹枫无迹
2019/11/20
2.2K0
dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突
有时某个相同命名空间相同名字的类型被两个不同的 NuGet 包定义了,尽管这是非常少见的事情,咱需要使用到其中的一个 NuGet 包的类型,但默认情况下将会因为类型冲突而构建不通过。本文将告诉大家如何给 NuGet 包加上 Aliases 别名解决类型冲突
林德熙
2023/07/01
4270
打包dll发布到nuget服务器
几个月前上传过一次nuget包,结果好久不用,今天想更新下,完全忘记了怎么用了,又是一顿查,所以决定记录下来,当然这可能不是一个傻瓜式的教程,但聪明的你们应该能够看明白的,因为整体操作还是很简单的 好了,让我们开始吧 创建类库 首先创建一个类库,就是你想要发布到nuget的类库,在AssemblyInfo.cs编辑程序集版本信息,重新生成,好了,这一步就完成了,哈哈哈 下载并注册nuget nuget地址:https://www.nuget.org/ 你需要在这个网站注册一个账号,期间会有邮箱验证,验证成
蓝夏
2018/06/21
2.1K0
Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包
因为 Visual Studio 有强大的包管理器插件,所以即便是不熟悉 NuGet 命令的小伙伴也能轻松安装和管理 NuGet 包。不过,对 Unity C# 项目来说,你并不能直接引用 dll,也不能直接使用自带的 NuGet 包管理器完成 NuGet 包安装。
walterlv
2023/10/22
3.2K0
Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包
修改Nuget包默认存放路径
默认情况下所有的Nuget包都会下载到C盘,目前我这边有几十个G的大小,这导致我C盘的容量越来越小…
HueiFeng
2020/06/05
2.8K0
NuGet 如何设置图标
在找 NuGet 的时候可以看到有趣的库都有有趣的图标,那么如何设置一个 NuGet 的图标?
林德熙
2020/09/10
1.6K0
NuGet 如何设置图标
阻止某个 NuGet 包意外升级
2018-06-29 09:59
walterlv
2018/09/18
1.3K0
阻止某个 NuGet 包意外升级
nuget发布的dll没有注释是什么原因
XML文档文件原来是这个作用。 (图片来自:https://docs.microsoft.com/zh-cn/visualstudio/ide/reference/generate-xml-docum
问问计算机
2021/05/08
8850
nuget发布的dll没有注释是什么原因
nuget的原理_NuGet 跨平台插件
已添加 NuGet 4.8 + 跨平台插件支持。In NuGet 4.8+ support for cross platform plugins has been added.
全栈程序员站长
2022/11/16
7960
帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖的 NuGet 包
如果你希望做一个 NuGet 工具包,那么这个包一定不能作为依赖传递给下一个包。典型的例子,做一个生成版本号的工具 NuGet 包,或者做一个代码分析器。
walterlv
2020/02/10
9960
如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号 下载并安装一下NuGetPackageExplorer:htt
逸鹏
2018/04/11
1.6K0
如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
Roslyn 打包 NuGet 包添加改动日志
默认的 NuGet 包支持在 releaseNotes 中添加更改日志,用户可以通过更改日志了解各个版本更新的内容。在 SDK Style 格式的 csproj 文件,可以读取本地的文本文件的内容作为 NuGet 包的改动日志
林德熙
2020/07/29
9390
.net framework 4.0的NuGet包制作
为啥做这个呢,因为要将公司内部的老的.NET程序所引用的DLL进行统一管理。这里服务端使用了一个叫做NuGetServer(官网:NuGet Server)的开源工具,部署在内部的Web服务器上。
崔文远TroyCui
2021/09/18
1.7K0
.net framework 4.0的NuGet包制作
发布 Rafy .NET Standard 版本 Nuget 包
去年年中,Rafy 框架的源码就已经支持了 Net Standard 2.0 版本。其开源代码也已经上传到 Github 中:https://github.com/zgynhqf/rafy/tree/NetStandard2.0 。但是这都只是在源码层面支持 NS2.0,并没有发布其正式的 Nuget 包。要使用这个版本的开发者,不得不自己下载源码进行编译。
用户1172223
2018/09/27
6570
发布 Rafy .NET Standard 版本 Nuget 包
发布你的程序包到Nuget
1.新建一个.NET Standard 的类库项目 2.选择项目熟悉,在 package 栏目下填写我们的nuget包信息 3.选择我们的项目,点击“Pack" 打包 主要注意的是生成配置需改为Rel
晓晨
2018/06/22
6660
使用dotnet Cli向nuget发布包
长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package。
有态度的马甲
2020/06/10
1.2K0
帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖的 NuGet 包
发布于 2018-08-05 13:22 更新于 2018-08-18 03:04
walterlv
2018/09/18
8400
帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖的 NuGet 包
如何移动 nuget 缓存文件夹 修改链接配置NuGet CacheNuGet Configuration
本文告诉大家如何移动 nuget 缓存文件夹。 因为 nuget 文件夹一般比较大,现在我的 nuget 文件夹有 10 G,默认的 nuget 文件夹是在C盘,所以需要移动他。
林德熙
2018/09/18
2.2K0

相似问题

在Apple Watch上实现登录机制的最佳实践

13

在JSON对象上编写外观的最佳实践

17

编写自定义代码部分的最佳实践?

21

ETL处理中记录机制的最佳实践

12

编写数组的最佳实践

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文