Дао свойство от VB до MFC - PullRequest
0 голосов
/ 29 июня 2018

Я реализовал функциональность VB в C ++. У меня есть логика замены ниже в C ++, но это вызывает проблему:

Мне нужно конвертировать из VB в C ++, и код на C ++ падает при получении свойства.

Оригинальный код VB:

For Each loTDef In aoDBUser.TableDefs

          Set loProp = Nothing
          On Error Resume Next
          Set loProp = loTDef.Properties("Description")

          If Not loProp Is Nothing Then
               If loProp.Value = TEMP_TABLE Then
               End If
          End If
     Next 

Новый код C ++:

CString test::Property()
{
    //
    // OVERVIEW:
    // Get the value for the given Custom Property
    //
    DAOProperties *pColProp = NULL;
    DAOProperty *pProp = NULL;

    CDaoDatabase cDBase;
    cDBase.Open(CV_GetUserDatabasePath(_T("TEST.mdb")));

    CString strDbVer;
    DAOProperties* pPrp = 0;
    DAOProperty* pRev = 0;
    try
    {
        if ( !cDBase.IsOpen() )
            return(_T(""));

        DAO_CHECK(cDBase.m_pDAODatabase->get_Properties(&pPrp));
        if ( pPrp != 0 )
        {
            COleVariant varRevVal;
            COleVariant varName(_T("Description"), VT_BSTRT);

            DAO_CHECK(pPrp->get_Item(varName, &pRev));//crashing going to catch 

            if (pRev != 0)
            {
                DAO_CHECK(pRev->get_Value(&varRevVal));
                pRev->Release();
                pRev = 0;
            }
            pPrp->Release();
            pPrp = 0;

            strDbVer = V_BSTRT(&varRevVal);
        }
    }
    catch (...)
    {

    }

    cDBase.Close();
}

как-то сбой в DAO_CHECK(pPrp->get_Item(varName, &pRev));

Но я не могу понять, почему это происходит.

...