2009-11-06 2 views
1

나는 열이 자동 증가 여부를 결정하기 위해 다음과 같은 방법을 사용하고 있습니다 :ADO 및 C++를 사용하여 MS Access 데이터베이스 테이블에서 자동 증가 열을 얻는 방법은 무엇입니까?

att = Rs1->Fields->GetItem((long)nIndex)->Attributes; 
bAutoIncrement = att & adFldRowID; 

그러나 그것은 전혀 작동하지 않습니다. 누구든지 이에 대해 좋은 아이디어가 있습니까? 미리 감사드립니다.

답변

1
Dim ADOXCatalog As New ADOX.Catalog 
Dim ADOConnection As New ADODB.Connection 

Try 
ADOConnection.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=e:\My Documents\db1.mdb;" & _ 
"Jet OLEDB:Engine Type=4;") 

ADOXCatalog.ActiveConnection = ADOConnection 

Dim col As ADOX.Column 
For Each col In ADOXCatalog.Tables("Table1").Columns 
If col.Properties("AutoIncrement").Value = True Then 
Console.WriteLine(col.Name) 
End If 
Next 

Catch ex As Exception 
MessageBox.Show(ex.Message) 
Finally 
ADOConnection.Close() 
End Try 
1

사용이 :

try{ 
    ADOX::_CatalogPtr pCatalog= NULL; 
    pCatalog.CreateInstance(__uuidof(ADOX::Catalog)); 
    pCatalog->PutActiveConnection(_variant_t((IDispatch*)m_ipConnection)); 
    bool v = pCatalog->Tables->GetItem(bstrTableName)->Columns->GetItem(L"PlaceholderForAutoIncrementFieldName")->Properties->GetItem("AutoIncrement")->Value; 
    return v; 
} 
catch(_com_error &e) 
{ 
    _bstr_t bstrSource(e.Source()); 
    _bstr_t bstrDescription(e.Description()); 

    TRACE("\n\tSource : %s \n\tdescription : %s \n ", (LPCSTR)bstrSource, (LPCSTR) bstrDescription); 
} 
관련 문제