Модераторы: Daevaorn
  

Поиск:

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


Новичок



Профиль
Группа: Участник
Сообщений: 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   Вверх
_hunter
Дата 13.1.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



похоже транзакцию подтвердить нужно...
читай доки по этой m_pCon.CreateInstance(__uuidof(Connection));


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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