Type Property Example (Property) (VC++)
This example demonstrates the Type property. It is a model of a utility for listing the names and types of a collection, like Properties, Fields, etc.
We do not need to open the Recordset to access its Properties collection; they come into existence when the Recordset object is instantiated. However, setting the CursorLocation property to adUseClient adds several dynamic properties to the Recordset object's Properties collection, making the example a little more interesting. For sake of illustration, we explicitly use the Item property to access each Property object.
// BeginTypePropertyCpp.cpp
// compile with: /EHsc
#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
// Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void TypeX();
void PrintComError(_com_error &e);
int main() {
if (FAILED(::CoInitialize(NULL)))
return -1;
TypeX();
::CoUninitialize();
}
void TypeX() {
// Define ADO object pointers, initialize pointers. These are in the ADODB:: namespace
_RecordsetPtr pRst = NULL;
PropertyPtr pProperty = NULL;
// Define Other Variables
_bstr_t strMsg;
_variant_t vIndex;
int intLineCnt = 0;
try {
TESTHR(pRst.CreateInstance (__uuidof(Recordset)));
// Set the Recordset Cursor Location
pRst->CursorLocation = adUseClient;
for (short iIndex = 0; iIndex <= (pRst->Properties->GetCount() - 1);iIndex++) {
vIndex = iIndex;
pProperty = pRst->Properties->GetItem(vIndex);
int propType = (int)pProperty->GetType();
switch(propType) {
case adBigInt:
strMsg = "adBigInt";
break;
case adBinary:
strMsg = "adBinary";
break;
case adBoolean:
strMsg = "adBoolean";
break;
case adBSTR:
strMsg = "adBSTR";
break;
case adChapter:
strMsg = "adChapter";
break;
case adChar:
strMsg = "adChar";
break;
case adCurrency:
strMsg = "adCurrency";
break;
case adDate:
strMsg = "adDate";
break;
case adDBDate:
strMsg = "adDBDate";
break;
case adDBTime:
strMsg = "adDBTime";
break;
case adDBTimeStamp:
strMsg = "adDBTimeStamp";
break;
case adDecimal:
strMsg = "adDecimal";
break;
case adDouble:
strMsg = "adDouble";
break;
case adEmpty:
strMsg = "adEmpty";
break;
case adError:
strMsg = "adError";
break;
case adFileTime:
strMsg = "adFileTime";
break;
case adGUID:
strMsg = "adGUID";
break;
case adIDispatch:
strMsg = "adIDispatch";
break;
case adInteger:
strMsg = "adInteger";
break;
case adIUnknown:
strMsg = "adIUnknown";
break;
case adLongVarBinary:
strMsg = "adLongVarBinary";
break;
case adLongVarChar:
strMsg = "adLongVarChar";
break;
case adLongVarWChar:
strMsg = "adLongVarWChar";
break;
case adNumeric:
strMsg = "adNumeric";
break;
case adPropVariant:
strMsg = "adPropVariant";
break;
case adSingle:
strMsg = "adSingle";
break;
case adSmallInt:
strMsg = "adSmallInt";
break;
case adTinyInt:
strMsg = "adTinyInt";
break;
case adUnsignedBigInt:
strMsg = "adUnsignedBigInt";
break;
case adUnsignedInt:
strMsg = "adUnsignedInt";
break;
case adUnsignedSmallInt:
strMsg = "adUnsignedSmallInt";
break;
case adUnsignedTinyInt:
strMsg = "adUnsignedTinyInt";
break;
case adUserDefined:
strMsg = "adUserDefined";
break;
case adVarBinary:
strMsg = "adVarBinary";
break;
case adVarChar:
strMsg = "adVarChar";
break;
case adVariant:
strMsg = "adVariant";
break;
case adVarNumeric:
strMsg = "adVarNumeric";
break;
case adVarWChar:
strMsg = "adVarWChar";
break;
case adWChar:
strMsg = "adWChar";
break;
default:
strMsg = "*UNKNOWN*";
break;
}
intLineCnt++;
printf ("Property %d : %s,Type = %s\n",iIndex, (LPCSTR)pProperty->GetName(),
(LPCSTR)strMsg);
}
}
catch(_com_error &e) {
// Notify the user of errors if any.
PrintComError(e);
}
}
void PrintComError(_com_error &e) {
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
// Print Com errors.
printf("Error\n");
printf("\tCode = %08lx\n", e.Error());
printf("\tCode meaning = %s\n", e.ErrorMessage());
printf("\tSource = %s\n", (LPCSTR) bstrSource);
printf("\tDescription = %s\n", (LPCSTR) bstrDescription);
}
See Also
Phản hồi
https://aka.ms/ContentUserFeedback.
Sắp ra mắt: Trong năm 2024, chúng tôi sẽ dần gỡ bỏ Sự cố với GitHub dưới dạng cơ chế phản hồi cho nội dung và thay thế bằng hệ thống phản hồi mới. Để biết thêm thông tin, hãy xem:Gửi và xem ý kiến phản hồi dành cho