我的数据库里面该列数据类型是FLOAT,想把它取出来,放进数组里面,用来计算。请各位帮忙一下。

解决方案 »

  1.   

    怎么都是相同的贴子,,,
    下在是贴在别的地方的,,自己改吧,取得字符串后用atof()转换为double
    这是直接打开mdb数据文件的 1,初始化, 
     #include   "afxdao.h " CString   m_filepathname; 
    CDaoDatabase   m_MyDatabase; AfxGetModuleState()-> m_dwVersion   =   0x0601; 
    AfxDaoInit(); 
    m_filepathname   =   "数据库.mdb "; 
     
    2,连接打开 
     if(!m_filepathname.IsEmpty   ()) 

    int   i; 
    CString   str; 
    TRY 

    if(m_MyDatabase.IsOpen()) 

    bError   =   IsError(m_filepathname); 
    if(bError) 

                                                                            //.............. 

    m_MyDatabase.Close(); 
    } m_MyDatabase.Open   (m_filepathname); 

    CATCH   (CDaoException,   pEx) 

    //pEx-> ReportError(); 
    CString   str   =   pEx-> m_pErrorInfo-> m_strDescription; 
    str   =   str   +   "\n是否需要人工连接到数据库? "; 
    if(AfxMessageBox(str,   MB_YESNO)   ==   IDYES) 

    if(OnDatabaseLink()) 
    return   TRUE; 
    else 
    return   FALSE; 

    else 
    return   FALSE; 

    END_CATCH 
    //;     
    int   nTableCount   =   m_MyDatabase.GetTableDefCount   (); 
    for(i=0;   i <nTableCount;   i++) 

    CDaoTableDefInfo   TableInfo; 
    m_MyDatabase.GetTableDefInfo   (i,   TableInfo,   AFX_DAO_ALL_INFO); 
    if(TableInfo.m_lAttributes   !=   0) 
    continue;   //过滤系统表 str   =   (char   *)(LPCTSTR)TableInfo.m_strName   ; //表名称 
    if(str   ==   "客户表 ")                               //改吧

    CString   str1   =   "SELECT   [客户表].[姓名]   FROM   客户表; "; CDaoRecordset   m_MyRS(&m_MyDatabase); 
    m_MyRS.Open(dbOpenDynaset,   str1); 
    m_MyRS.MoveFirst(); while(!m_MyRS.IsEOF()) 

    CString   strVar   =   strVARIANT(m_MyRS.GetFieldValue(0));  //转吧 atof()
                              m_MyRS.MoveNext(); 

                                                          str   =   str   +   ": " CDaoTableDef   m_MyTable(&m_MyDatabase); 
    m_MyTable.Open(TableInfo.m_strName); int   nFieldCount   =   m_MyTable.GetFieldCount(); 
    for(int   j=0;   j <nFieldCount;   j++) 

    CDaoFieldInfo   FieldInfo; 
    m_MyTable.GetFieldInfo(j,   FieldInfo,   AFX_DAO_ALL_INFO); str   =   str   +   "- "   +   (char   *)(LPCTSTR)FieldInfo.m_strName   ; 
                                                                    

                                                    AfxMessageBox(str); 
    m_MyTable.Close(); 

    return   TRUE; 

    return   FALSE; 
     3,这些代码没意义,只是示意,删掉了些,改动了些,可能没法执行了,, 
      

  2.   

    4,还些转换函数 CString strVARIANT(const COleVariant &var)
    {
        CString strRet;
        strRet = _T("Fish");
        
        switch(var.vt )
        {
        case VT_EMPTY:
        case VT_NULL:
            strRet = _T("NULL");
            break;
        case VT_I2:
            strRet.Format (_T("%hd"), V_I2(&var));
            break;
        case VT_I4:
            strRet.Format (_T("%d"), V_I4(&var));
            break;
        case VT_R4:
            strRet.Format (_T("%e"), (double)V_R4(&var));
            break;
        case VT_R8:
            strRet.Format (_T("%e"), V_R8(&var));
            break;
        case VT_CY:
            strRet = COleCurrency(var).Format ();
            break;
        case VT_DATE:
            strRet = COleDateTime(var).Format (_T("%m-%d-%y"));
            break;
        case VT_BSTR:
            strRet = V_BSTRT(&var);
            break;
        case VT_DISPATCH:
            strRet = _T("VT_DISPATCH");
            break;
        case VT_ERROR:
            strRet = _T("VT_ERROR");
            break;
        case VT_BOOL:
            return strBOOL(V_BOOL(&var));
        case VT_VARIANT:
            strRet = _T("VT_VARIANT");
            break;
        case VT_UNKNOWN:
            strRet = _T("VT_UNKNOWN");
            break;
        case VT_I1:
            strRet = _T("VT_I1");
            break;
        case VT_UI1:
            strRet.Format (_T("0x%02hx"), (unsigned short)V_UI1(&var));
            break;
        case VT_UI2:
            strRet = _T("VT_UI2");
            break;
        case VT_UI4:
            strRet = _T("VT_UI4");
            break;
        case VT_I8:
            strRet = _T("VT_I8");
            break;
        case VT_UI8:
            strRet = _T("VT_UI8");
            break;
        case VT_INT:
            strRet = _T("VT_INT");
            break;
        case VT_UINT:
            strRet = _T("VT_UINT");
            break;
        case VT_VOID:
            strRet = _T("VT_VOID");
            break;
        case VT_HRESULT:
            strRet = _T("VT_HRESULT");
            break;
        case VT_PTR:
            strRet = _T("VT_PTR");
            break;
        case VT_SAFEARRAY:
            strRet = _T("VT_SAFEARRAY");
            break;
        case VT_CARRAY:
            strRet = _T("VT_CARRAY");
            break;
        case VT_USERDEFINED:
            strRet = _T("VT_USERDEFINED");
            break;
        case VT_LPSTR:
            strRet = _T("VT_LPSTR");
            break;
        case VT_LPWSTR:
            strRet = _T("VT_LPWSTR");
            break;
        case VT_FILETIME:
            strRet = _T("VT_FILETIME");
            break;
        case VT_BLOB:
            strRet = _T("VT_BLOB");
            break;
        case VT_STREAM:
            strRet = _T("VT_STREAM");
            break;
        case VT_STORAGE:
            strRet = _T("VT_STORAGE");
            break;
        case VT_STREAMED_OBJECT:
            strRet = _T("VT_STREAMED_OBJECT");
            break;
        case VT_STORED_OBJECT:
            strRet = _T("VT_STORED_OBJECT");
            break;
        case VT_BLOB_OBJECT:
            strRet = _T("VT_BLOB_OBJECT");
            break;
        case VT_CF:
            strRet = _T("VT_CF");
            break;
        case VT_CLSID:
            strRet = _T("VT_CLSID");
            break;
        }
        
        WORD vt = var.vt ;
        if(vt & VT_ARRAY)
        {
            vt = vt & ~VT_ARRAY;
            strRet = _T("Pointer to ");
        }
        if(vt != var.vt )
        {
            switch(vt)
            {
            case VT_EMPTY:
                strRet += _T("VT_EMPTY");
                break;
            case VT_NULL:
                strRet += _T("VT_NULL");
                break;
            case VT_I2:
                strRet += _T("VT_I2");
                break;
            case VT_I4:
                strRet += _T("VT_I4");
                break;
            case VT_R4:
                strRet += _T("VT_R4");
                break;
            case VT_R8:
                strRet += _T("VT_R8");
                break;
            case VT_CY:
                strRet += _T("VT_CY");
                break;
            case VT_DATE:
                strRet += _T("VT_DATE");
                break;
            case VT_BSTR:
                strRet += _T("VT_BSTR");
                break;
            case VT_DISPATCH:
                strRet += _T("VT_DISPATCH");
                break;
            case VT_ERROR:
                strRet += _T("VT_ERROR");
                break;
            case VT_BOOL:
                strRet += _T("VT_BOOL");
                break;
            case VT_VARIANT:
                strRet += _T("VT_VARIANT");
                break;
            case VT_UNKNOWN:
                strRet += _T("VT_UNKNOWN");
                break;
            case VT_I1:
                strRet += _T("VT_I1");
                break;
            case VT_UI1:
                strRet += _T("VT_UI1");
                break;
            case VT_UI2:
                strRet += _T("VT_UI2");
                break;
            case VT_UI4:
                strRet += _T("VT_UI4");
                break;
            case VT_I8:
                strRet += _T("VT_I8");
                break;
            case VT_UI8:
                strRet += _T("VT_UI8");
                break;
            case VT_INT:
                strRet += _T("VT_INT");
                break;
            case VT_UINT:
                strRet += _T("VT_UINT");
                break;
            case VT_VOID:
                strRet += _T("VT_VOID");
                break;
            case VT_HRESULT:
                strRet += _T("VT_HRESULT");
                break;
            case VT_PTR:
                strRet += _T("VT_PTR");
                break;
            case VT_SAFEARRAY:
                strRet += _T("VT_SAFEARRAY");
                break;
            case VT_CARRAY:
                strRet += _T("VT_CARRAY");
                break;
            case VT_USERDEFINED:
                strRet += _T("VT_USERDEFINED");
                break;
            case VT_LPSTR:
                strRet += _T("VT_LPSTR");
                break;
            case VT_LPWSTR:
                strRet += _T("VT_LPWSTR");
                break;
            case VT_FILETIME:
                strRet += _T("VT_FILETIME");
                break;
            case VT_BLOB:
                strRet += _T("VT_BLOB");
                break;
            case VT_STREAM:
                strRet += _T("VT_STREAM");
                break;
            case VT_STORAGE:
                strRet += _T("VT_STORAGE");
                break;
            case VT_STREAMED_OBJECT:
                strRet += _T("VT_STREAMED_OBJECT");
                break;
            case VT_STORED_OBJECT:
                strRet += _T("VT_STORED_OBJECT");
                break;
            case VT_BLOB_OBJECT:
                strRet += _T("VT_BLOB_OBJECT");
                break;
            case VT_CF:
                strRet += _T("VT_CF");
                break;
            case VT_CLSID:
                strRet += _T("VT_CLSID");
                break;
            }
        }
        return strRet;
    }LPCTSTR strBOOL(BOOL bFlag)
    {
        return bFlag ? _T("TRUE") : _T("FALSE");
    }