str = "UPDATE 成绩 SET 名次1 =( 1+dcount('[英语]','[成绩]','英语>' & cdbl(英语)) )"
Conn.Execute strvb+access2003环境。这条语句在access中建立查询可以执行,在vb中提示“dcount”函数未定义,有什么解决方案。或者实现我的功能也行。即将分数排名后,将名次存入“名次1”字段。

解决方案 »

  1.   

    没有解决方案,VB是通过数据库引擎访问数据库的,访问ACCESS是执行数据库引擎jet标准的SQL,并不支持所有ACCESS环境下的SQL语法...
      

  2.   

    http://download.csdn.net/source/1644211
      

  3.   

    单科排名:
    select  数学,(Select Count(*) From tb Where 数学<=t.数学) As 名次 
    from tb t 
    order by 数学
      

  4.   

    单科排名: 
    select  数学,(Select Count(*) From tb Where 数学 <=t.数学) As 名次 
    from tb t 
    order by 数学怎么存入相应的“名次”字段呀
      

  5.   

    vb能执行access里的查询吗?比如这个查询名称叫“ScoreOrder”
      

  6.   

    ACCESS本身不支持聚集函数的更新,所以实现要二步...实际上成绩查询数据量应该不大,所以建议不要名次字段,这个字段貌似沉余数据,只要在查询的时候显示名次就可以了。
      

  7.   

    ACCESS分三步,比较忙,只能给你大概思路了(下面语句不一定准确):
    1.查询编号,学科,对应名次用select .... into 语句结果保存到临时表tb_tmp
    SELECT 编号 , 
    (select count(*) from 成绩 where 英语>t1.英语) AS 名次1,
    (select count(*) from 成绩 where 数学>t1.数学) AS 名次2, 
    (select count(*) from 成绩 where 计算机>t1.计算机) AS 名次3 
    INTO tb_tmp FROM 成绩 AS t1 2.联结更新:
    update tb a,tb_tmp b
    set a.名次1=b.名次1,a.名次2=b.名次2,a.名次3=b.名次3
    where a.编号=b.编号3.删除tb_tmp
    drop table tb_tmp
      

  8.   

    update 成绩表 a set 名次=dcount('总分','成绩表','总分>' & a.总分) +1   ------VBA中测试通过
      

  9.   

    楼上真会挖f.....
    也不看清楚问题,天下学vba的人都知道,vba中可以用dcount....