Cambiar el controlador de botón Ejecutar

Debe agregar código para establecer la propiedad DBPROP_IRowsetLocate , como se muestra a continuación. Esta propiedad indica al proveedor que el consumidor desea una columna de marcador. En este código, el bucle while contiene una llamada a IRowsetLocate::Compare. Esta llamada debe siempre correctamente, ya que compara un marcador a sí mismo. La llamada almacena el marcador en una variable temporal, por lo que el valor estará disponible más tarde para llamar a MoveToBookmark.

//////////////////////////////////////////////////////////////////////
/ / Aplicación de consumidor de TestProv en TestProvDlg.cpp

void CTestProvDlg::OnRun() {}
   CCommandlt;CAccessor <CProvider> > tabla;
   Fuente de CDataSource;
   CSession período de sesiones;

Si (fuente.Open("MyProvider.MyProvider.1", NULL, NULL, NULL, NULL)! = S_OK)
      retorno;

Si (período de sesiones.Open(Source)! = S_OK)
      retorno;

CDBPropSet propset(DBPROPSET_ROWSET);
   propset.AddProperty(DBPROP_IRowsetLocate, true);
   Si (tabla.Open(Session, _T("c:\\public\\testprf2\\foo.txt"), &propset)! = S_OK)
      retorno;

CBookmark <4> tempBookmark;
   ULONG ulCount = 0;
   mientras (tabla.MoveNext() == S_OK)
   {

Comparar DBCOMPARE;
      Si (ulCount == 2)
         tempBookmark = table.bookmark;
         HR = tabla.Comparar (table.bookmark, table.bookmark,
                 & comparar);
      Si (FAILED(hr))
         ATLTRACE (_T ("Comparar error: 0x%X\n"), hr);
      otra cosa
         ATLASSERT (Comparar == DBCOMPARE_EQ);

m_ctlString1.addString(Table.szCommand);
      m_ctlString2.addString(Table.szText);
      ulCount ++;
   }

tabla.MoveToBookmark(tempBookmark);
   m_ctlString1.addString(Table.szCommand);
   m_ctlString2.addString(Table.szText);
}

Volver a modificar el consumidor para su uso con el mayor proveedor

Index