select id,avg(datediff(RQ1,RQ2)) as N2 from tableName group by id;上面查询语句在cmd界面执行正常
但当在VB中执行则异常
无法取到 RS.RecordCount 或 RS.Fields("N1") 的值
提示:
-----------------------------
实时错误'3704'
对象关闭时,不允许操作
-----------------------------另外
在查询语句中单独使用avg 或 datediff 函数时
正常
一但将两个函数一起使用
则会出现以上错误

解决方案 »

  1.   

    与数据库连接正常
    检查:"CN.STATE = 1"RS.Open strSQL, CN, adOpenDynamic, adLockReadOnly
    n = RS.RecordCount  <----这行出现提示,关键问题是SQL语句在cmd中执行正常
    如果我把avg 或 datediff 两个函数只用其中一个
    也运行正常
    只要放到一起
    就出错可能问题出在 myODBC 上
    如何解决
      

  2.   

    试试:
    select id,avg(s1) from (select id,datediff(RQ1,RQ2) as s1 from tablename) as xx group by id
      

  3.   

    创建示例数据库-- 建表
    create  table tablename (id int,RQ1 datetime,RQ2 datetime)
    -- select * from tablename-- 插入记录
    insert into tablename 
    select 1,'2009-01-01 10:00:00','2009-01-02 11:00:00' union
    select 2,'2009-01-02 10:00:00','2009-01-04 10:30:00' union
    select 3,'2009-01-03 10:00:00','2009-01-06 11:30:00' 
    -- 执行查询
    select id,avg(datediff(RQ1,RQ2)) as N2 from tableName group by id; 
    得到记录如下:
    1,-1
    2,-2
    3,-3
    VB代码段Private Sub Command1_Click()
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    '创建ODBC数据源连接
    cn.ConnectionString = "DSN=cpc;UID=root;pwd=123;Initial Catalog=cpcpd"
    cn.Open
    '获取记录集
    rs.Open "select id,avg(datediff(RQ1,RQ2)) as N2 from tableName group by id", cn, adOpenDynamic, adLockReadOnly
    '打印记录
    While Not rs.EOF
        Debug.Print rs.Fields(0).Value & "===" & rs.Fields(1).Value
        rs.MoveNext
    WendEnd Sub
      

  4.   

    xayzmb
     
    (行者) 等 级: ★
    结帖率:99.44% 一分我也不要,相信楼主会看到的,如果对他有益,给你分好了
      

  5.   

    呵呵
    这个贴子分给滴不高
    发的急没注意到操作临时表时报错:
    create temporary table tmpTable as select id,avg(datediff(RQ1,RQ2)) as N2 from tableName group by id;
    但先在库里建一个表后
    下面操作通过了
    insert into tmpTable(a,b)
    select id,avg(datediff(RQ1,RQ2)) as N2 from tableName group by id;所以只好暂时用建了一个表来中转一下
    但总认为这不是个好办法
    如果说是MYSQL问题吧
    所有语句在cmd里操作都正常
    只要一放到VB里就不行了
    所以想可能是那个MyODBC3.51的问题谁能给个答案?