📄 adoutils.cpp
字号:
case ADODB::adIUnknown:
strTmp = "(adIUnknown) A pointer to an IUnknown interface on an OLE object";
break;
case ADODB::adLongVarBinary:
strTmp = "(adLongVarBinary) A long binary value (Parameter object only)";
break;
case ADODB::adLongVarChar:
strTmp = "(adLongVarChar) A long String value (Parameter object only)";
break;
case ADODB::adLongVarWChar:
strTmp = "(adLongVarWChar) A long null-terminated string value (Parameter object only)";
break;
case ADODB::adNumeric:
strTmp = "(adNumeric) An exact numeric value with a fixed precision and scale";
break;
case ADODB::adSingle:
strTmp = "(adSingle) A single-precision floating point value";
break;
case ADODB::adSmallInt:
strTmp = "(adSmallInt) A 2-byte signed integer";
break;
case ADODB::adTinyInt:
strTmp = "(adTinyInt) A 1-byte signed integer";
break;
case ADODB::adUnsignedBigInt:
strTmp = "(adUnsignedBigInt) An 8-byte unsigned integer";
break;
case ADODB::adUnsignedInt:
strTmp = "(adUnsignedInt) A 4-byte unsigned integer";
break;
case ADODB::adUnsignedSmallInt:
strTmp = "(adUnsignedSmallInt) A 2-byte unsigned integer";
break;
case ADODB::adUnsignedTinyInt:
strTmp = "(adUnsignedTinyInt) A 1-byte unsigned integer";
break;
case ADODB::adUserDefined:
strTmp = "(adUserDefined) A user-defined variable";
break;
case ADODB::adVarBinary:
strTmp = "(adVarBinary) A binary value (Parameter object only)";
break;
case ADODB::adVarChar:
strTmp = "(adVarChar) A String value (Parameter object only)";
break;
case ADODB::adVariant:
strTmp = "(adVariant) An OLE Automation Variant";
break;
case ADODB::adVarWChar:
strTmp = "(adVarWChar) A null-terminated Unicode character string (Parameter object only)";
break;
case ADODB::adWChar:
strTmp = "(adWChar) A null-terminated Unicode character string";
break;
default:
strTmp.Format( "%d = = Unrecognized Type", e );
}
return strTmp;
}
/////////////////////////////////////////////////////////////////////////////
//
// CrackStrVariant() Taken from the CCrack::strVariant method found in the
// DAOVIEW sample that ships with Visual C++ 4.X/5.0
//
// Parameters: var - Reference to an instance of COleVariant.
//
// Returns: An instance of CString with the value of COleVariant
// (if possible). Otherwise a string containing the type
// of data contained by COleVariant.
//
/////////////////////////////////////////////////////////////////////////////
CString CrackStrVariant(const _variant_t& var)
{
CString strRet;
strRet = _T("Fish");
switch(var.vt){
case VT_EMPTY:
case VT_NULL:
strRet = _T("NULL");
break;
case VT_I2:
strRet.Format(_T("%hd"),V_I2(&var));
break;
case VT_I4:
strRet.Format(_T("%d"),V_I4(&var));
break;
case VT_R4:
strRet.Format(_T("%e"),(double)V_R4(&var));
break;
case VT_R8:
strRet.Format(_T("%e"),V_R8(&var));
break;
case VT_CY:
strRet = COleCurrency(var).Format();
break;
case VT_DATE:
strRet = COleDateTime(var).Format(_T("%m %d %y"));
break;
case VT_BSTR:
strRet = V_BSTR( &var );
break;
case VT_DISPATCH:
strRet = _T("VT_DISPATCH");
break;
case VT_ERROR:
strRet = _T("VT_ERROR");
break;
case VT_BOOL:
return ( V_BOOL(&var) ? _T("TRUE") : _T("FALSE"));
case VT_VARIANT:
strRet = _T("VT_VARIANT");
break;
case VT_UNKNOWN:
strRet = _T("VT_UNKNOWN");
break;
case VT_I1:
strRet = _T("VT_I1");
break;
case VT_UI1:
strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var));
break;
case VT_UI2:
strRet = _T("VT_UI2");
break;
case VT_UI4:
strRet = _T("VT_UI4");
break;
case VT_I8:
strRet = _T("VT_I8");
break;
case VT_UI8:
strRet = _T("VT_UI8");
break;
case VT_INT:
strRet = _T("VT_INT");
break;
case VT_UINT:
strRet = _T("VT_UINT");
break;
case VT_VOID:
strRet = _T("VT_VOID");
break;
case VT_HRESULT:
strRet = _T("VT_HRESULT");
break;
case VT_PTR:
strRet = _T("VT_PTR");
break;
case VT_SAFEARRAY:
strRet = _T("VT_SAFEARRAY");
break;
case VT_CARRAY:
strRet = _T("VT_CARRAY");
break;
case VT_USERDEFINED:
strRet = _T("VT_USERDEFINED");
break;
case VT_LPSTR:
strRet = _T("VT_LPSTR");
break;
case VT_LPWSTR:
strRet = _T("VT_LPWSTR");
break;
case VT_FILETIME:
strRet = _T("VT_FILETIME");
break;
case VT_BLOB:
strRet = _T("VT_BLOB");
break;
case VT_STREAM:
strRet = _T("VT_STREAM");
break;
case VT_STORAGE:
strRet = _T("VT_STORAGE");
break;
case VT_STREAMED_OBJECT:
strRet = _T("VT_STREAMED_OBJECT");
break;
case VT_STORED_OBJECT:
strRet = _T("VT_STORED_OBJECT");
break;
case VT_BLOB_OBJECT:
strRet = _T("VT_BLOB_OBJECT");
break;
case VT_CF:
strRet = _T("VT_CF");
break;
case VT_CLSID:
strRet = _T("VT_CLSID");
break;
}
WORD vt = var.vt;
if(vt & VT_ARRAY){
vt = vt & ~VT_ARRAY;
strRet = _T("Array of ");
}
if(vt & VT_BYREF){
vt = vt & ~VT_BYREF;
strRet += _T("Pointer to ");
}
if(vt != var.vt){
switch(vt){
case VT_EMPTY:
strRet += _T("VT_EMPTY");
break;
case VT_NULL:
strRet += _T("VT_NULL");
break;
case VT_I2:
strRet += _T("VT_I2");
break;
case VT_I4:
strRet += _T("VT_I4");
break;
case VT_R4:
strRet += _T("VT_R4");
break;
case VT_R8:
strRet += _T("VT_R8");
break;
case VT_CY:
strRet += _T("VT_CY");
break;
case VT_DATE:
strRet += _T("VT_DATE");
break;
case VT_BSTR:
strRet += _T("VT_BSTR");
break;
case VT_DISPATCH:
strRet += _T("VT_DISPATCH");
break;
case VT_ERROR:
strRet += _T("VT_ERROR");
break;
case VT_BOOL:
strRet += _T("VT_BOOL");
break;
case VT_VARIANT:
strRet += _T("VT_VARIANT");
break;
case VT_UNKNOWN:
strRet += _T("VT_UNKNOWN");
break;
case VT_I1:
strRet += _T("VT_I1");
break;
case VT_UI1:
strRet += _T("VT_UI1");
break;
case VT_UI2:
strRet += _T("VT_UI2");
break;
case VT_UI4:
strRet += _T("VT_UI4");
break;
case VT_I8:
strRet += _T("VT_I8");
break;
case VT_UI8:
strRet += _T("VT_UI8");
break;
case VT_INT:
strRet += _T("VT_INT");
break;
case VT_UINT:
strRet += _T("VT_UINT");
break;
case VT_VOID:
strRet += _T("VT_VOID");
break;
case VT_HRESULT:
strRet += _T("VT_HRESULT");
break;
case VT_PTR:
strRet += _T("VT_PTR");
break;
case VT_SAFEARRAY:
strRet += _T("VT_SAFEARRAY");
break;
case VT_CARRAY:
strRet += _T("VT_CARRAY");
break;
case VT_USERDEFINED:
strRet += _T("VT_USERDEFINED");
break;
case VT_LPSTR:
strRet += _T("VT_LPSTR");
break;
case VT_LPWSTR:
strRet += _T("VT_LPWSTR");
break;
case VT_FILETIME:
strRet += _T("VT_FILETIME");
break;
case VT_BLOB:
strRet += _T("VT_BLOB");
break;
case VT_STREAM:
strRet += _T("VT_STREAM");
break;
case VT_STORAGE:
strRet += _T("VT_STORAGE");
break;
case VT_STREAMED_OBJECT:
strRet += _T("VT_STREAMED_OBJECT");
break;
case VT_STORED_OBJECT:
strRet += _T("VT_STORED_OBJECT");
break;
case VT_BLOB_OBJECT:
strRet += _T("VT_BLOB_OBJECT");
break;
case VT_CF:
strRet += _T("VT_CF");
break;
case VT_CLSID:
strRet += _T("VT_CLSID");
break;
}
}
return strRet;
}
void ImportErrorEx( _com_error &e, CHorzListBox &List1, ADODB::_ConnectionPtr Conn1 )
{
// Try/Catch Block
try
{
// ADO Error/Exception Handler
AdoErrorEx( List1, Conn1 );
//Non-ADO Native error/Exception Handler
List1.AddString( "*** ERROR CONDITION! ***" );
LogReset();
LogException( e );
LogDisplay( List1 );
// #import bug workaround (should not be necessary after Visual C++ 5.0 Service Pack 3)
IErrorInfo * pErr = e.ErrorInfo();
pErr->Release();
pErr->Release();
}
catch( SEH_Exception &e )
{
List1.AddString( "*** UNABLE TO LOG ERROR *** (Win32 Exception was raised while logging exception)" );
//Non-ADO Native error/Exception Handler
LogReset();
LogException( e );
LogDisplay( List1 );
}
catch(...)
{
List1.AddString( "*** UNABLE TO LOG ERROR *** (Unknown Exception was raised while logging exception)" );
//Non-ADO Native error/Exception Handler
LogReset();
LogException();
LogDisplay( List1 );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -