Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用ADOX[vc++和MS Access]修改列属性_Ms Access_Visual C++ - Fatal编程技术网

Ms access 使用ADOX[vc++和MS Access]修改列属性

Ms access 使用ADOX[vc++和MS Access]修改列属性,ms-access,visual-c++,Ms Access,Visual C++,我必须在现有表中添加新列。我可以成功地添加新列,但在将column属性修改为nullable时出现以下异常 多步骤OLE DB操作生成错误。检查每个OLE DB状态值(如果可用)。没有做任何工作 这是我的密码 HRESULT hr = S_OK; ADOX::_CatalogPtr pCatalog = NULL; ADOX::_TablePtr pTable = NULL; ADOX::TablesPtr pTables = NULL; hr = pCatalog.CreateInstanc

我必须在现有表中添加新列。我可以成功地添加新列,但在将column属性修改为nullable时出现以下异常

多步骤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;

假设我已经忠实地翻译了VBA中的等效代码,那么它对我来说毫无错误

可能需要尝试的是创建列对象,设置其属性(包括NULLable),然后将其附加到表对象的Columns集合中,例如,在VBA中:

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

您没有使用MS Access。你在用Jet/ACE。不,他们在用Jet;每个人都称之为Access,即使是Microsoft。连你都知道。@David W.Fenton:与其在评论中打扰人们,把地方弄得乱七八糟,你可以改为重新贴上帖子。此外,你现在有2k+代表,所以你可以编辑文章。