我想用ADO机制把PARADOX数据库中的数据导入到ACCESS数据库中。但我没做过PARADOX数据库,这方面的资料也很少,不知道怎样建立ADO和PARADOX的连接,请各位大哥多多指点哈。

解决方案 »

  1.   

    dim MainCon as new Adodb.Connection
    DatabasePath = txtOldPath.Text '你的数据库路径
    Mainstr = "Provider=MSDASQL.1;Persist Security Info=False;DRIVER=Microsoft Paradox Driver (*.db );DBQ=" & DatabasePath & "" '连接字符串
    MainCon.ConnectionString = MainStr 
    MainCon.Open '打开连接
      

  2.   

    PARADOX
    ??是什么数据库?
    没有听过。
      

  3.   

    用这东西的人好像不多,我也是第一次接触到这种数据库。用CB的人可能知道,用VC的人知道的可能不多。所以才请教大虾们,如果分数不够我再加哈,帮帮忙!有“钱”的捧个“钱”场,没“钱”的捧个人场……
      

  4.   

    呵呵,这个我刚做过.如果是对本机上的数据表进行操作很简单,如果要操作局域网内的就比较困难了,给你我的一些代码吧:
    //连接到数据源,只能用ODBC来连接到数据库。
    //下面三种连接方式均可,第一、二种可以直接连接,第三种要用户建立指定的系统DSN
    _ConnectionPtr m_pDb;//("ADODB.CONNECTION");
    // CString connectsource;
    // connectsource.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\shared;Extended Properties=Paradox 5.x;Persist Security Info=False",strCTRSRoute);
    /*
    connectsource.Format(L"CollatingSequence=ASCII;DBQ=%s\\shared;" \
    L"DefaultDir=%s\\shared;Driver={Microsoft Paradox Driver (*.db )};" \
    L"DriverId=538;FIL=Paradox 5.X;" \
    L"MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600;" \
    L"ParadoxNetPath=%s\\shared;ParadoxNetStyle=4.x;ParadoxUserName=admin;" \
    L"SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;",strCTRSRoute,strCTRSRoute,strCTRSRoute);
    */
    CString connectsource="Provider=MSDASQL.1;Persist Security Info=False;Data Source=Projdir";//Initial Catalog=E:\\PW\\CTRS\\SHARED";
    // TRACE(connectsource);
    try //检查数据库连接是否正常
    {
    m_pDb.CreateInstance(__uuidof(Connection));
    m_pDb->ConnectionTimeout=10;
    m_pDb->CommandTimeout=20;
    if(m_pDb->State!=adStateClosed)
    {
    m_pDb->Close();
    m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown);
    }
    else
    {
    hr=m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown);
    }
    }
    catch(_com_error e) //捕捉异常
    {
    LogAdoErrorImport(m_pDb);
    }
    _RecordsetPtr m_pRst("ADODB.RECORDSET");
    try
    {
    //m_pRst.CreateInStance(__uuidof(_Recordset));
    m_pRst->PutRefActiveConnection(m_pDb);
    m_pRst->PutSource("select Proj_ID , PROJECT from projdir.db");
    m_pRst->Open(vtMissing,vtMissing,adOpenStatic, adLockReadOnly,adCmdText);
    _variant_t strColName1,strColName2;
    Fields * fields=NULL;
    while(!m_pRst->adoEOF)
    {
    LPWSTR strID,strName;
    strColName1=m_pRst->Fields->GetItem((long)0)->Value;
    strColName2=m_pRst->Fields->GetItem((long)1)->Value;
    strID=(BSTR)strColName1.pbstrVal;
    strName=(BSTR)strColName2.pbstrVal;
    FillListCtrl(strID,strName);

    m_pRst->MoveNext();
    }

    m_pRst->Close();
    m_pRst=NULL;
    m_pDb->Close();
    m_pDb=NULL;
    }
    catch(_com_error e)
    {
    LogAdoErrorImport(m_pDb);//出错信息显示,需要自定义
    // CString errormessage;
    // errormessage.Format(TEXT("打开数据库失败\r\n错误信息:%s"),e.ErrorMessage());
    // AfxMessageBox(errormessage);
    if(m_pDb->State==adStateOpen)
    {
    m_pDb->Close();
    m_pDb=NULL;
    }
    }
    此外,如果在局域网内,要在包含有PARADOX表的服务器上安装BDE,否则会出现“外部表不是预期格式”的错误,切记!
      

  5.   

    paradox用delphi的就很清楚了
    用vc连ado还真是麻烦,delphi要简单很多,不过,发现vc健壮性很好
    ------------------------------------
    心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人