| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2916 人关注过本帖
标题:怎样在query中用select统计某字段为特定值的记录数?
只看楼主 加入收藏
hspyrhzc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-1-24
收藏
 问题点数:0 回复次数:8 
怎样在query中用select统计某字段为特定值的记录数?

怎样在query中用select统计某字段为特定值的记录数?

有一个租赁表,其中放的是每个客户每一部碟片的租借记录。
我已经知道了现在要租碟的客户的编号,放在变量 curkb 中
我想通过这个客户编号来统计 在租赁表中他还有多少部碟片未归还
并想将统计结果存在变量 myn 中,然后在edit中显示出来。
var
curkb: string;
myn: integer;
begin
curkb:=adoquery1.FieldByName('kb').Value;
adoquery3.SQL.Clear;
adoquery3.SQL.Text:='select count(kb) ''myn'+''''+
          ' from zl where kb='+quotedstr(curkb);
adoquery3.ExecSQL;
edit8.Text:=inttostr(myn);

运行老是出错。请问原因何在,怎么解决这个问题?

搜索更多相关主题的帖子: 字段 select 统计 记录 
2007-02-16 00:10
sgliuxiu
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:291
专家分:0
注 册:2007-2-2
收藏
得分:0 
edit8.Text:=inttostr(myn);
是不是这句有问题?你在这句设置断点看看.
你应该将提示出错的内容写出来才好判断

小猫说:给我10元钱
2007-02-16 02:35
nongen
Rank: 5Rank: 5
来 自:网络
等 级:贵宾
威 望:17
帖 子:322
专家分:0
注 册:2006-11-25
收藏
得分:0 

adoquery3.ExecSQL;这行出错的吧。
应该是adoquery3.SQL.Text:='select count(kb) ''myn'+''''+' from zl where kb='+quotedstr(curkb);的问题
select count(kb) as kb from zl where kb=
myn:=adoquery3.fieldbyname('kb').asinteger;
edit8.text:=inttostr(myn);
//如果你的kb是integer的话就可以。


昨天不是我的,明天不是你的,今天却是我们的。
http://www.
2007-02-16 20:37
hspyrhzc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-1-24
收藏
得分:0 
下面是我的新代码:
var
curkb: string; // 用来保存这次来租碟的客户编号
myn: integer; // 用来保存当前客户上次已租 仍未归还的记录数目
begin
curkb:=adoquery1.FieldByName('kb').Value; // kb 是字符型数据
adoquery3.SQL.Clear;
adoquery3.SQL.Text:='select count(kb) as myn from zl
where kb='+quotedstr(curkb);
adoquery3.ExecSQL;
edit7.Text:=inttostr(myn);

现在能运行了,可是无论客户是否存在未还的碟片,edit7中总是显示出 4927492
现在问题又出在哪里呢?
2007-02-16 21:39
xu2000
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:51
帖 子:3890
专家分:56
注 册:2006-4-8
收藏
得分:0 
myn没有赋值。

我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]
2007-02-16 23:55
nongen
Rank: 5Rank: 5
来 自:网络
等 级:贵宾
威 望:17
帖 子:322
专家分:0
注 册:2006-11-25
收藏
得分:0 
现在能运行了,可是无论客户是否存在未还的碟片,edit7中总是显示出 4927492
现在问题又出在哪里呢?


这里因为你没有赋值,所以,4927492其实只是个随机数

昨天不是我的,明天不是你的,今天却是我们的。
http://www.
2007-02-17 01:16
hspyrhzc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-1-24
收藏
得分:0 
adoquery3.SQL.Text:='select count(kb) as myn from zl
where kb='+quotedstr(curkb);


首先,我是用 as myn 将统计结果赋给 myn 了啊

其次,即使是随机数,也不可能每次都是 4927492 呀
2007-02-17 16:47
xu2000
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:51
帖 子:3890
专家分:56
注 册:2006-4-8
收藏
得分:0 
as只是字段的别名,不是你的变量。
myn:=adoquery1.fieldsbyname('myn').asstring;

我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]
2007-02-17 16:56
hspyrhzc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-1-24
收藏
得分:0 
再附代码:
var
curkb: string;
begin
curkb:=adoquery1.FieldByName('kb').Value; // 取得当前租碟客户的编号
adoquery3.SQL.Clear;
adoquery3.SQL.Text:='select count(kb) as mykb from zl
where kb='+quotedstr(curkb);
// 在租赁表zl中统计这个编号的客户已租的记录条数
// 保存在名为 mykb 的字段中.后面再使用.
adoquery3.ExecSQL;
edit7.Text:=adoquery3.FieldByName('mykb').AsString;
// 取出字段 mykb的值,再以字符形式赋给 edit7

这次彻底解决了这个问题.感谢xu2000的帮助.
2007-02-17 18:29
快速回复:怎样在query中用select统计某字段为特定值的记录数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031304 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved