我的组合条件查询中,只有时间为1970的才可以从Oracle数据库中读出数据,但我的数据库中根本就不存在时间为1970的记录,为什么,请高手指教??

解决方案 »

  1.   

    上述情况是我用ADO时出现的,而用ODBC时,则出现如下情况:条件1:1997
    记录1:1998-1-1条件2:1998
    记录2:1998-2-1(只要月份大于1,就可以取到正确的结果)哪位能帮帮我,不胜感激!!
      

  2.   

    UINT getDataProc(LPVOID pParam)
    {
    CString m_strRcvBxzh,        //提取字符串中的bxzh字段
        m_strRcvNd,          //提取字符串中的nd字段
    strValue,            //中间变量 
                msg;
    int iLen,                    //发送串的长度
    iSent,                   //标志发送是否成功
    iErrorCode=0;            //错误码

    VARIANT varNd,varCounter;
    VARIANT var_value;              
        CSbcx rs;
        Field *field;    recvThread* pInfo=(recvThread*)pParam;

    m_strRcvBxzh=strRecvd.Left(8);
    m_strRcvNd=strRecvd.Mid(8,8);

    pInfo->ctlRecvd->AddString(strRecvd);     ::CoInitialize(NULL);
       
        varCounter.vt=VT_I4;
    varCounter.lVal=0;
    _RecordsetPtr pRs;

    try{                        //ado连接数据库
       pRs.CreateInstance("ADODB.Recordset");
       IADORecordBindingPtr picRs(pRs);
           pRs->Open("SELECT * FROM sbcx ", 
             "dsn=sbcx0;uid=sa;pwd=;", 
             adOpenStatic, adLockOptimistic, adCmdText);
          
           TESTHR(picRs->BindToRecordset(&rs));
    }
    catch(_com_error &e)
    {
        e.ErrorMessage();
    }

    try{
            if(!pRs->BOF)
           pRs->MoveFirst();
    while(msg =="")
    {    
    varCounter.lVal=0;
    pRs->Fields->get_Item(varCounter,&field);
                               field->get_Value(&var_value);
    strValue=VariantToCtring(var_value);

    if(_tcscmp(strValue,LPCTSTR(m_strRcvBxzh+"  "))==0)
    {  //以下是对日期的处理
    CTime mTime = 0;
    varCounter.lVal = 3;

    pRs->Fields->get_Item(varCounter,&field);
    field->get_Value(&var_value);

    mTime=var_value.date;
    strValue=mTime.Format("%Y");
     
    if(_tcscmp(strValue,_T (m_strRcvNd))==0)
    {   
        varCounter.lVal=0;
    msg="";
    while  (varCounter.lVal<9&&varCounter.lVal!=3)
    {
    pRs->Fields->get_Item(varCounter,&field);
    field->get_Value(&var_value);
    msg+=VariantToCtring(var_value);
    varCounter.lVal++;
    }
    msg+=strValue;
                        break;
     }
    }
    if(!pRs->adoEOF)
    {   
                    pRs->MoveNext();
        strValue=("");
    }
    else
        break;
    }
    }
    catch(_com_error &e)
    {
        e.ErrorMessage();
    return 0;
    }    if(msg =="")
    sendmsg ="此记录不存在!";
        else
    sendmsg=msg;
        
    iLen =sendmsg.GetLength ();

    iSent=Info.m_connet->Send(LPCTSTR(sendmsg),iLen);
       
    pRs->Close(); if(iSent==SOCKET_ERROR)
    {
        AfxMessageBox("Server send after");
            return 0;
    }
    return 1;
    }
      

  3.   

    UINT getDataProc(LPVOID pParam)
    {
    CString m_strRcvBxzh,        //提取字符串中的bxzh字段
        m_strRcvNd,          //提取字符串中的nd字段
    strValue,            //中间变量 
                msg;
    int iLen,                    //发送串的长度
    iSent,                   //标志发送是否成功
    iErrorCode=0;            //错误码

    VARIANT varNd,varCounter;
    VARIANT var_value;              
        CSbcx rs;
        Field *field;    recvThread* pInfo=(recvThread*)pParam;

    m_strRcvBxzh=strRecvd.Left(8);
    m_strRcvNd=strRecvd.Mid(8,8);

    pInfo->ctlRecvd->AddString(strRecvd);     ::CoInitialize(NULL);
       
        varCounter.vt=VT_I4;
    varCounter.lVal=0;
    _RecordsetPtr pRs;

    try{                        //ado连接数据库
       pRs.CreateInstance("ADODB.Recordset");
       IADORecordBindingPtr picRs(pRs);
           pRs->Open("SELECT * FROM sbcx ", 
             "dsn=sbcx0;uid=sa;pwd=;", 
             adOpenStatic, adLockOptimistic, adCmdText);
          
           TESTHR(picRs->BindToRecordset(&rs));
    }
    catch(_com_error &e)
    {
        e.ErrorMessage();
    }

    try{
            if(!pRs->BOF)
           pRs->MoveFirst();
    while(msg =="")
    {    
    varCounter.lVal=0;
    pRs->Fields->get_Item(varCounter,&field);
                               field->get_Value(&var_value);
    strValue=VariantToCtring(var_value);

    if(_tcscmp(strValue,LPCTSTR(m_strRcvBxzh+"  "))==0)
    {  //以下是对日期的处理
    CTime mTime = 0;
    varCounter.lVal = 3;

    pRs->Fields->get_Item(varCounter,&field);
    field->get_Value(&var_value);

    mTime=var_value.date;
    strValue=mTime.Format("%Y");
     
    if(_tcscmp(strValue,_T (m_strRcvNd))==0)
    {   
        varCounter.lVal=0;
    msg="";
    while  (varCounter.lVal<9&&varCounter.lVal!=3)
    {
    pRs->Fields->get_Item(varCounter,&field);
    field->get_Value(&var_value);
    msg+=VariantToCtring(var_value);
    varCounter.lVal++;
    }
    msg+=strValue;
                        break;
     }
    }
    if(!pRs->adoEOF)
    {   
                    pRs->MoveNext();
        strValue=("");
    }
    else
        break;
    }
    }
    catch(_com_error &e)
    {
        e.ErrorMessage();
    return 0;
    }    if(msg =="")
    sendmsg ="此记录不存在!";
        else
    sendmsg=msg;
        
    iLen =sendmsg.GetLength ();

    iSent=Info.m_connet->Send(LPCTSTR(sendmsg),iLen);
       
    pRs->Close(); if(iSent==SOCKET_ERROR)
    {
        AfxMessageBox("Server send after");
            return 0;
    }
    return 1;
    }
      

  4.   

    CTime mTime = 0;
    varCounter.lVal = 3;

    pRs->Fields->get_Item(varCounter,&field);
    field->get_Value(&var_value);

    mTime=var_value.date;
    strValue=mTime.Format("%Y");
     
    这样写问题在哪儿,高手快出现啊