Изменить атрибут столбца, используя ADOX [vc ++ и MS Access] - PullRequest
0 голосов
/ 09 июля 2009

Я должен добавить новые столбцы в существующую таблицу. Я могу успешно добавить новый столбец, но при попытке связать атрибут столбца с нулевым значением возникает следующее исключение.

Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Работы не было сделано

Вот мой код,

HRESULT hr = S_OK;
ADOX::_CatalogPtr pCatalog = NULL;
ADOX::_TablePtr pTable = NULL;
ADOX::TablesPtr pTables = NULL;

hr = pCatalog.CreateInstance(__uuidof(Catalog));
pCatalog->PutActiveConnection("Provider='Microsoft.JET.OLEDB.4.0';data source='C:\\sample.mdb';");
pTables = pCatalog->GetTables();
pTable  = pTables->Item["sampletable"];


hr = pTable->Columns->Append( "age", ADOX::adInteger, 0);
ASSERT(hr == S_OK);
pTable->Columns->Item["age"]->Attributes = ADOX::adColNullable;

1 Ответ

0 голосов
/ 14 июля 2009

Эквивалентный код в VBA работает для меня без ошибок (при условии, что я перевел его точно).

Возможно, стоит попробовать создать объект Column, установить его свойства, включая NULLable, а затем добавить его в коллекцию Columns объекта таблицы, например. это в VBA:

Set oColumn = New ADOX.Column
oColumn.Name = "age"
oColumn.Type = ADOX.adInteger
oColumn.Attributes = ADOX.adColNullable
oTable.Columns.Append oColumn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...