用了FILEDIALOG獲取用戶來源文件為CSV類型(用戶需要)
CFileDialog fileDlg (TRUE);
fileDlg.m_ofn.lpstrTitle = _T("readfile");
fileDlg.m_ofn.lpstrFilter = _T("csv files(.csv)\0*.csv\0\0)");
fileDlg.m_ofn.lpstrDefExt = _T("csv");然後下面的代碼就會出問題了
if ( IDOK == fileDlg.DoModal())
{
CString fileName = fileDlg.GetFileName ();
CString filePath = fileDlg.GetPathName ();
CoInitialize(NULL);
_ConnectionPtr pConn (__uuidof ( Connection ));
_RecordsetPtr pRst (__uuidof ( Recordset ));
//HRESULT hr = pConn->Open(_T("DRIVER = {MicorsoftTextDriver(*.txt;*.csv)}; DBQ      =&filePath&;"),"","",adConnectUnspecified);
CString   str; 
str = _T("Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ="+filePath+";Extensions=asc,csv,tab,txt;Persist Security Info=False"); 
HRESULT hr = pConn->Open ((_bstr_t)str,"","",adConnectUnspecified); if (SUCCEEDED(hr))
{
MessageBox(_T("open csv file succeeded!"));
}
else if (FAILED(hr))
{
MessageBox(_T("open csv file failed!"));
}



CoUninitialize();
}
是不是str的問題?因為剛接觸這個項目,所以對ADO方面不是很熟,希望有人能夠指教

解决方案 »

  1.   

    用异常捕获看下是什么错误.try
    {
        //你的ADO代码
            
    }
    catch(_com_error& e)
    {
        AfxMessageBox(e.Discription());

    http://www.connectionstrings.com/textfile
    从上面看字符串在下面的连接中测试看是否能连接成功
    http://blog.csdn.net/zyq5945/archive/2010/05/13/5586423.aspx
      

  2.   

    顯示說"[mocrosoft][ODBC Text Driver]'(未知的)'不是一個有效的路徑。請確定路徑名是否正確,并且檔案位於已經連接的伺服器上."說明下,我的filepath是獲取的,斷點運行路徑正確,是在桌面上的一個文件
    爲什麽還顯示這種錯誤呢
      

  3.   

    本帖最后由 zyq5945 于 2010-08-16 15:53:15 编辑
      

  4.   

    str = _T("Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ="+filePath+";Extensions=asc,csv,tab,txt;Persist Security Info=False");  
    沒錯啊
      

  5.   

    Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\txtFilesFolder\;Extensions=asc,csv,tab,txt;
      

  6.   

    + str "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:\Documents and Settings\Rex_Cao\桌面\testcsv.csv;Extensions=asc,csv,tab,txt;" ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >
    這個是斷點后檢查的STR的屬性,其中
    DBQ = "C:\Documents and Settings\Rex_Cao\桌面\testcsv.csv"
    這樣不對嗎。。DBQ不是應該是絕對地址嗎
      

  7.   

    問題自己解決了TEXT DRIVER的DBQ跟其他的不同,應該是
    CString   str; 
    int filepathlen = filePath.GetLength();         //getdbq
    int filenamelen = fileName.GetLength();
    int dbqlen = filepathlen - filenamelen;
    CString sqldbq = filePath.Left(dbqlen);
    str = _T("Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq="+sqldbq+";Extensions=asc,csv,tab,txt;"); 
    HRESULT hr = pConn->Open ((_bstr_t)str,"","",adConnectUnspecified);
    這樣完美解決了,感謝zyq5945 anyway