2009-07-09 6 views
0

Je dois ajouter de nouvelles colonnes dans la table existante. Je peux capable d'ajouter avec succès une nouvelle colonne, mais l'exception suivante se produit lors de la liaison pour modifier l'attribut de la colonne à nullable.Attribut de colonne Modify utilisant ADOX [vC++ et MS Access]

L'opération OLE DB en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état OLE DB, si disponible. Aucun travail n'a été fait

Voici mon code,

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; 
+0

Vous n'utilisez pas MS-Access. Vous utilisez Jet/ACE. –

+0

Nah, ils utilisent Jet;) Tout le monde l'appelle Access, même Microsoft. Même vous le savez. – onedaywhen

+0

@David W. Fenton: Plutôt que de déranger les gens dans les commentaires et d'encombrer l'endroit, vous auriez pu changer d'avis. En outre, vous avez maintenant 2k + rep pour pouvoir modifier les messages. – onedaywhen

Répondre

0

Le code équivalent en VBA fonctionne pour moi sans erreur (en supposant que je l'ai traduit fidèlement).

Quelque chose peut-être essayer est de créer un objet Colonne, définir ses propriétés, y compris NULLable, puis l'ajouter à la collection Columns de l'objet Table, par exemple. ceci dans VBA:

Set oColumn = New ADOX.Column 
oColumn.Name = "age" 
oColumn.Type = ADOX.adInteger 
oColumn.Attributes = ADOX.adColNullable 
oTable.Columns.Append oColumn