CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

还是一个关于求学生名次的问题?路过的各位高手请帮忙看一看吧!数据库是access2000的

楼主cjg98821(hellow)2004-12-01 23:06:37 在 Delphi / 数据库相关 提问

表cy的内容如下:  
  id   总分  名次  
  0001  600  
  0002  580  
  0003  590  
  0004  590  
  实现的效果是将“名次”填完整  
  id   总分  名次  
  0001  600   1  
  0002  580   4  
  0003  590   2  
  0004  590   2  
  我试图用如下程序实现,但是不行!高手看看应怎么改才能实现上述功能?  
  procedure   Tfrmpm.Button2Click(Sender:   TObject);  
  begin  
  adoquery6.Close;  
  adoquery6.SQL.Clear;  
  adoquery6.SQL.Add('update   cy   set   名次=(select   (select   count(*)+1   from   cy   as   b   where   a.总分<b.总分)from   cy   as   a)');  
  adoquery6.ExecSQL;  
  end;    
  问题点数:0、回复次数:6Top

1 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 07:56:22 得分 0

procedure   Tfrmpm.Button2Click(Sender:   TObject);  
  var  
      i:   integer;  
  begin  
      i   :=   1;  
      with   adoquery6   do  
      begin  
          Close;  
          SQL.Clear;  
          SQL.Text   :=   'Select   *   From   cy   Order   By   总分   DESC';  
          Open;          
      end;           //         按总分的降序排列;  
      adoquery6.First;  
      while   not   adoquery6.eof   do  
      begin  
          adoquery6.Edit;  
          adoquery6.FieldByName('名次').asinteger   :=   i;  
          adoquery6.Post;  
          adoquery6.Next;  
          i   :=   i   +1;         //     排名次;  
      end;  
  Top

2 楼jabcf(小金呀)回复于 2004-12-02 08:39:04 得分 0

楼上,要是有并列的怎么办?Top

3 楼alonesnake(一盘菜)回复于 2004-12-02 09:14:10 得分 0

upupTop

4 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 09:27:27 得分 0

惭愧,没在电脑上试过,差点误人子第!  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      i,total,   nexttotal:   integer;  
  begin  
      total   :=   0;  
      nexttotal   :=   0;  
      i   :=   1;  
      with   adoquery6   do  
      begin  
          Close;  
          SQL.Clear;  
          SQL.Text   :=   'Select   *   From   cy   Order   By   总分   DESC';  
          Open;  
      end;           //         按总分的降序排列;  
      adoquery6.First;  
      while   not   adoquery6.eof   do  
      begin  
          total   :=   adoquery6.FieldByName('总分').asinteger;  
          adoquery6.Edit;  
          adoquery6.FieldByName('名次').asinteger   :=   i;  
          adoquery6.Post;  
          adoquery6.Next;  
          nexttotal   :=   adoquery6.FieldByName('总分').asinteger;  
          if   nexttotal   =   total   then  
              i   :=   i         //     排名次;  
          else  
              i   :=   i   +   1;  
      end;  
   
  end.Top

5 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 09:28:22 得分 0

我没想到用SQL怎么实现,惭愧,转个弯吧。Top

6 楼cjg98821(hellow)回复于 2004-12-02 13:08:36 得分 0

coeltdit(每天多顶几下----->>>大虾就是这样练成的)  
  你这个方法是行!但是速度不行呀!  
  10000记录你这种方法要2分钟多Top

相关问题

  • 有个数据库的问题!路过的大虾,看一看呐!
  • 数据库安全的问题,高手快过来看一看!
  • “变态”数据库问题,请大家都来看一看!
  • 路过的过来看一看
  • Delphi中如何通过dll访问数据库?....快来看一看啊!!
  • 小妹?^_^?捉虫:向数据库提交记录出问题了,帮我看一看吧!
  • Applet连接数据库的问题,请大家帮帮忙,过来看一看,指导一下!
  • 简单问题,但对我不简单,是数据库查询问题,请高手进来看一看.....
  • 高手过来看一看,不弟有礼啦~~~ 如何将数据库中数据导出为excel文件,
  • 帮忙看一看吧,数据库如何设计好?用什么报表,怎么做?急~~分有的是!!

关键词

  • 总分
  • sql
  • 名次
  • 高手
  • adoquery6
  • cy
  • 实现
  • 不行
  • 如下
  • 方法

得分解答快速导航

  • 帖主:cjg98821

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo