我在VC中用ADO打开oracle8i数据库,从中进行DISTINCT检索,发现DISTINCT操作失效了(本该返回一条记录却返回了不用DISTINCT时的3条记录),而用同样的检索语句在VB中使用,就不会出现此现象,这是为什么??
下面是我的一段代码:
VC:
pRs.CreateInstance("ADODB.Recordset");
pRs->CursorLocation= adUseClient;
hr = pRs->Open((const char*)sql,
_variant_t((IDispatch *)pConnection,true), 
adOpenDynamic,adLockOptimistic,adCmdText);
VB:
Call rs.Open(sql, Conn, adOpenDynamic, adLockOptimistic, adCmdText)

解决方案 »

  1.   

    SQL语句如下:
    Select distinct B.NOTE,B.TITLE,B.CRDT,B.CRUSR,B.DAYS,B.FLAG,B.BULLETINID from BULLETIN B,UBLINK UB where UB.BULLETINID = B.BULLETINID and (UB.USRID = 'sa' or B.CRUSR = 'sa') and (B.DELDT is null or B.DELDT >= '2002/07/29') order by B.CRDT DESC在SQLSERVER数据库中就没有此问题
      

  2.   

    把上面的SQL语句用Oracle的SQL PLUS试试,看它执行的结果和用VC访问后得到的结果是否一样?
    如果不一样说明是程序的问题;如果是一样,可以试试简单的distinct,如select distinct NOTE from BULLETIN,否则就是你的SQL语句的错误
      

  3.   

    我在SQL PLUS中试是没有问题的,不止是这一句有问题,其他的只要使用distinct的语句就有问题,可是在VB下没问题,连相同的SQLSERVER库也没问题