Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM+ACCESS - редактирование базы данных 
:(
    Опции темы
KAIR
Дата 12.1.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.1.2006

Репутация: нет
Всего: нет



Есть интерфейс и база данных.
Когда я с его помощью подключаюсь к базе данных всё работает. Но только изменения сохраняются только при работе программы. При повторном открытии всё сбрасывается как было.

Код

bool CWarehouse::OpenConnection(void)
{
    try{
        CString conStr="Provider=Microsoft.JET.OLEDB.4.0;Data Source=E:\\STEP\\Files\\WarehouseResource.mdb;";
        
        m_pCon.CreateInstance(__uuidof(Connection));
        m_pCom.CreateInstance(__uuidof(Command));

        m_pCon->ConnectionString=(_bstr_t)conStr;
        m_pCon->CursorLocation=adUseClient;

        HRESULT hr=m_pCon->Open((_bstr_t)conStr,"","",-1);
        if(FAILED(hr)){
            AfxMessageBox("Ошибка соединения с БД...");
            return false;
        }

        if(m_pCom!=NULL){
            m_pCom->ActiveConnection=m_pCon;
            m_pCom->Prepared=FALSE;    
        }
    }
    catch(...)
    {
        AfxMessageBox("В CWarehouse::OpenConnection произошло исключение!!!");
        return false;
    }

    return true;
}

STDMETHODIMP CWarehouse::GetRS(BSTR sSQL, IUnknown** ppRS)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    _RecordsetPtr spRS;
    HRESULT hr;

    try{
        if(!OpenConnection())return S_FALSE;//коннектимся к БД
        spRS.CreateInstance(__uuidof(Recordset));
        spRS->CursorLocation = adUseClient;
        spRS->putref_ActiveConnection(m_pCon);//активный коннект

        hr=spRS->Open(_variant_t(sSQL),vtMissing,adOpenStatic,adLockBatchOptimistic,-1);

        if(FAILED(hr)){
            AfxMessageBox("Ошибка чтения из БД...");
            return S_FALSE;
        }

        spRS->PutRefActiveConnection(NULL);// Disassociate the connection from the recordset.
        m_pCon->Close();

        *ppRS=spRS;//возвращаем recordset
        spRS->AddRef();
    }
    catch(_com_error &e){
        AfxMessageBox("При работе произошло исключение СОМ в Connect!");
        return S_FALSE;
    }    
    catch(...){
        AfxMessageBox("При работе произошло исключение в Connect!");
        return S_FALSE;
    }

    return S_OK;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.