Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > OLE DB и MS SQL Server 2005


Автор: Dart 26.6.2006, 17:15
Привет всем!

Собственно, обёртка такая:


Код

    CTable<CAccessor<TManAccessor> > m_Table;   // Main table accessor
    CDBPropSet  propset(DBPROPSET_ROWSET);
    propset.AddProperty(DBPROP_CANFETCHBACKWARDS, true);
    propset.AddProperty(DBPROP_IRowsetScroll, true);
    propset.AddProperty(DBPROP_IRowsetChange, true);
    propset.AddProperty(DBPROP_IRowsetFind, true);
    propset.AddProperty(DBPROP_ISequentialStream, true);
    propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE );
    hr = m_Table.Open(m_dsSsn, m_sTableName, &propset);

TManAccessor - аксессор, в котором есть поля read only (это primary index) AutoAccessor=false, nAccessor=1, 
и обычные поля (AutoAccessor=true, nAccessor=0)
Провайдер - Microsoft SQL Native Client (так по-моему, в общем клиент от SQL 2005)
1. Мне нужно найти запись по primary index и спозиционироваться туда. Проблема состоит в том, что я никак не пойму, как работает FindNextRow (или для этого какой-то другой метод нужен?). Т.е. как ему объяснить, что искать нужно именно по nAccessor=1?
и 2. Мне нужно отлавливать нотификацию от провайдера об изменении данных другими пользователями и, по возможности, отклонять эти изменения. Прочитал по IRowsetNotify, но, честно говоря, ничего не понял. 

Если кто разбирался с этим, буду благодарен за любую информацию. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)