您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



对记录集的一个操作改如何实现?【问题有详细说明】


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


对记录集的一个操作改如何实现?【问题有详细说明】
发表于:2007-11-22 22:03:01 楼主
功能如下:
对“学生信息.mdb”进行如下操作
1.根据输入的专业名称,显示出该专业所有学生的信息
2.显示该专业奖学金的总数和平均数,以及获得奖学金的人数比例
代码:
private   sub   command1_click(index   as   integer)
        dim   sql   as   string
                sql   =   "select   *   from   student   "
        select   case   index
                case   0
                adodc1.recordsource   =   sql   &   "where   专业   =   '"   &   text1.text   &   "'"
                case   1
                adodc1.recordsource   =   "select   sum(奖学金),avg(奖学金)   from   student   where   专业   ='"   &   text1.text   &   "'"                  
                case   2
                adodc1.recordsource   =   sql
        end   select
        adodc1.refresh
end   sub
问题1:我没办法实现获得奖学金的人数比例···
问题2:运行的时候出现【adodc】:没有指定记录源。【ado】:没有为命令对象设置命令。
补充:学生信息.mdb只有student表,表中字段为:学号,姓名,性别,出生日期,专业,奖学金
发表于:2007-11-23 01:32:371楼 得分:0
adodc1.recordsource   =   "select   sum(奖学金),avg(奖学金),cast   (sum(case   when   奖学金> 0   then   1   else   0   end)   as   float)/count(1)   as   获得奖学金的人数比例     from   student   where     专业   ='"   &   text1.text   &   "'"
发表于:2007-11-23 10:20:102楼 得分:0
多谢ayalicer兄
不过我用ayalicer   兄的代码后,出现【adodc】:未知错误。【ado】:   ,为什么?
发表于:2007-11-23 11:15:103楼 得分:0
我搞错数据库了   你的是access   我贴的是sql   server的
试试这样

vbscript code
adodc1.recordsource = "select sum(奖学金),avg(奖学金),cdbl(sum(case when 奖学金> 0 then 1 else 0 end))/count(1) as 获得奖学金的人数比例 from student where 专业 ='" & text1.text & "'""
发表于:2007-11-23 11:41:154楼 得分:0
vbscript code
private sub command1_click(index as integer) dim rs as adodb.recordset, inttmp as integer, sngproportion as single select case index case 0 adodc1.recordsource = "select * from student where 专业 = '" & text1.text & "'" case 1 adodc1.recordsource = "select sum(奖学金) as sumscholarship, avg(奖学金) as avgscholarship from student where 专业 ='" & text1.text & "'" set rs = adodc1.recordset.activeconnection.EXECute (select sum(*) from student where 专业 = '" & text1.text & "'") inttmp = rs.fields(0) set rs = adodc1.recordset.activeconnection.EXECute (select sum(*) from student where 专业 = '" & text1.text & "' and 奖学金>0") sngproportion = rs.fields(0) sngproportion = (sngproportion / inttmp) * 100 text2 = format(sngproportion, "standard") & "%" case 2 adodc1.recordsource = "select * from student" end select adodc1.refresh end sub
发表于:2007-11-27 21:26:345楼 得分:0
感谢ayalicer兄,of123   兄
但是ayalicer兄的方法我实现不了
of123   兄倒是能实现了,可惜不是直接在记录集里用sql语句查询的~
呵呵,再次感谢2位!


快速检索

最新资讯
热门点击