动态创建数据源用odbc连接access。
2000、xp下好使
98下有的机器提示“没有可安装的ISAM”?这是怎么回事?如何解决?

解决方案 »

  1.   

    http://support.microsoft.com/?scid=kb;zh-cn;273458&spid=3042&sid=global
      

  2.   

    是不是给vc打上sp5的补丁,重新编译就能解决?
      

  3.   

    那是因为你设定的数据源路径不对,或者你所设定的数据库所在磁盘不可写入.比如,你的程序在光盘上运行,因为不可写(对Access数据库操作时,系统会在数据库所在目录内新建一个临时文件),所以报错.
      

  4.   

    全部代码如下:
    首先动态创建一个数据源
    然后连接。
    CString sPath;
    GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
    sPath.ReleaseBuffer();
    int nPos;
    nPos=sPath.ReverseFind('\\');
    sPath=sPath.Left (nPos);
    // nPos=sPath.ReverseFind('\\');
    //   sPath=sPath.Left (nPos);
    CString lpszFile = sPath + "\\bdt.mdb";


        char* szDesc;
    int mlen;
    szDesc=new char[256];
    sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","bdt",lpszFile,sPath);



    mlen = strlen(szDesc);
        for (int i=0; i<mlen; i++)
    {
    if (szDesc[i] == '?')
    szDesc[i] = '\0';
    }

    if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))
    AfxMessageBox("SQLConfigDataSource Failed");

    DBcon.Open(NULL,FALSE,FALSE,"ODBC;DSN=bdt;UID=;pwd=",FALSE);