Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple illustre les méthodes GetObjectOwner et SetObjectOwner. Ce code suppose l’existence de la comptabilité de groupe (voir les Groups and Users Append, ChangePassword Methods Example (VC++) pour voir comment ajouter ce groupe au système). Le propriétaire de la table Categories est défini sur Comptabilité.
// BeginOwnersCpp.cpp
// compile with: /EHsc
#import "msadox.dll" no_namespace
#include "iostream"
using namespace std;
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
int main() {
if ( FAILED(::CoInitialize(NULL)) )
return -1;
HRESULT hr = S_OK;
// Define and initialize ADOX object pointers. These are in the ADODB namespace.
_TablePtr m_pTable = NULL;
_CatalogPtr m_pCatalog = NULL;
try {
TESTHR(hr = m_pCatalog.CreateInstance(__uuidof(Catalog)));
TESTHR(hr = m_pTable.CreateInstance(__uuidof(Table)));
// Open the Catalog.
m_pCatalog->PutActiveConnection("Provider='Microsoft.JET.OLEDB.4.0';data source='c:\\Northwind.mdb';jet oledb:system database='c:\\system.mdw'");
// Print the original owner of Categories
_bstr_t strOwner = m_pCatalog->GetObjectOwner("Categories", adPermObjTable);
cout << "Owner of Categories: " << strOwner << "\n" << endl;
//Create and append new group with a string.
m_pCatalog->Groups->Append("Accounting");
//Set the owner of Categories to Accounting.
m_pCatalog->SetObjectOwner("Categories", adPermObjTable, "Accounting");
_variant_t vIndex;
// List the owners of all tables and columns in the catalog.
for ( long iIndex = 0 ; iIndex < m_pCatalog->Tables->Count ; iIndex++ ) {
vIndex = iIndex;
m_pTable = m_pCatalog->Tables->GetItem(vIndex);
cout << "Table: " << m_pTable->Name << endl;
cout << " Owner: " << m_pCatalog->GetObjectOwner(m_pTable->Name, adPermObjTable) << endl;
}
// Restore the original owner of Categories
m_pCatalog->SetObjectOwner("Categories", adPermObjTable, strOwner);
// Delete Accounting
m_pCatalog->Groups->Delete("Accounting");
}
catch(_com_error &e) {
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\n\tSource : %s \n\tdescription : %s \n ", (LPCSTR)bstrSource, (LPCSTR)bstrDescription);
}
catch(...) {
cout << "Error occurred in include files...." << endl;
}
::CoUninitialize();
}