home *** CD-ROM | disk | FTP | other *** search
-
- #include "stdafx.h"
- #include "TckDb.h"
-
- // -------------------------------------------------------------------------
- // CTckDb Constructor
- // -------------------------------------------------------------------------
- CTckDb::CTckDb()
- {
- // Do whatever
- m_pDb = 0;
- }
-
- // -------------------------------------------------------------------------
- // CTckDb Destructor
- // -------------------------------------------------------------------------
- CTckDb::~CTckDb()
- {
- if(m_pDb)
- {
- if(m_pDb->IsOpen())
- m_pDb->Close();
- delete m_pDb;
- }
- }
-
- // -------------------------------------------------------------------------
- // Shutdown deletes the db
- // -------------------------------------------------------------------------
- void CTckDb::Shutdown()
- {
- if(m_pDb)
- {
- if(m_pDb->IsOpen())
- m_pDb->Close();
- delete m_pDb;
- m_pDb = 0;
- }
- }
-
- // -------------------------------------------------------------------------
- // Opens the specified DB - prompts if not found
- // -------------------------------------------------------------------------
- BOOL CTckDb::EzOpen(LPCTSTR lpszPathName)
- {
- CFileStatus status;
- CString sFilePath;
-
- if(!m_pDb)
- m_pDb = new CDaoDatabase;
-
- if(m_pDb->IsOpen())
- m_pDb->Close();
-
- sFilePath = lpszPathName;
-
- // Check if the file exists
- if( !CFile::GetStatus( sFilePath, status ) ) // static function
- {
- // If it does not - ask the user where it is
- CFileDialog dlgFile( TRUE, _T(".mdb"), NULL,
- OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
- _T("Access Files (*.mdb)|*.mdb|All Files (*.*)|*.*||"));
-
- if (dlgFile.DoModal() == IDCANCEL)
- return FALSE;
-
- sFilePath = dlgFile.GetFileName();
- }
-
- // Attempt to open the database
- try
- {
- m_pDb->Open(sFilePath);
- }
- catch (CDaoException* e)
- {
- DisplayDaoException(e);
- e->Delete();
- return FALSE;
- }
-
- if(!m_pDb->IsOpen())
- return FALSE;
-
- return TRUE;
- }
-
- // -------------------------------------------------------------------------
- // Displays a message box with the DAO Error
- // -------------------------------------------------------------------------
- void CTckDb::DisplayDaoException(CDaoException* e)
- {
- CString strMsg;
- if (e->m_pErrorInfo!=NULL)
- {
- strMsg.Format(
- _T("%s (%d)\n\n")
- _T("Would you like to see help?"),
- (LPCTSTR)e->m_pErrorInfo->m_strDescription,
- e->m_pErrorInfo->m_lErrorCode);
-
- if (AfxMessageBox(strMsg, MB_YESNO) == IDYES)
- {
- WinHelp(GetDesktopWindow(),
- e->m_pErrorInfo->m_strHelpFile,
- HELP_CONTEXT,
- e->m_pErrorInfo->m_lHelpContext);
- }
- }
- else
- {
- strMsg.Format(
- _T("ERROR:CDaoException\n\n")
- _T("SCODE_CODE =%d\n")
- _T("SCODE_FACILITY =%d\n")
- _T("SCODE_SEVERITY =%d\n")
- _T("ResultFromScode =%d\n"),
- SCODE_CODE (e->m_scode),
- SCODE_FACILITY (e->m_scode),
- SCODE_SEVERITY (e->m_scode),
- ResultFromScode (e->m_scode));
- AfxMessageBox(strMsg);
- }
- }
-
-
- LPCTSTR CTckDb::strFieldType(short sType)
- {
- switch(sType){
- case (dbBoolean):
- return _T("Bool");
- case (dbByte):
- return _T("Byte");
- case (dbInteger):
- return _T("Integer");
- case (dbLong):
- return _T("Long");
- case (dbCurrency):
- return _T("Currency");
- case (dbSingle):
- return _T("Single");
- case (dbDouble):
- return _T("Double");
- case (dbDate):
- return _T("Date");
- case (dbText):
- return _T("Text");
- case (dbLongBinary):
- return _T("Long Binary");
- case (dbMemo):
- return _T("Memo");
- case (dbGUID):
- return _T("GUID");
- }
- return _T("Unknown");
- }
-
- LPCTSTR CTckDb::strQueryDefType(short sType)
- {
- switch(sType){
- case (dbQSelect):
- return _T("Select");
- case (dbQAction):
- return _T("Action");
- case (dbQCrosstab):
- return _T("Crosstab");
- case (dbQDelete):
- return _T("Delete");
- case (dbQUpdate):
- return _T("Update");
- case (dbQAppend):
- return _T("Append");
- case (dbQMakeTable):
- return _T("MakeTable");
- case (dbQDDL):
- return _T("DDL");
- case (dbQSQLPassThrough):
- return _T("SQLPassThrough");
- case (dbQSetOperation):
- return _T("Set Operation");
- case (dbQSPTBulk):
- return _T("SPTBulk");
- }
- return _T("Unknown");
- }
-
- LPCTSTR CTckDb::strBOOL(BOOL bFlag)
- {
- return bFlag ? _T("TRUE") : _T("FALSE");
- }
-
- CString CTckDb::strVARIANT(const COleVariant& 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_BSTRT(&var);
- break;
- case VT_DISPATCH:
- strRet = _T("VT_DISPATCH");
- break;
- case VT_ERROR:
- strRet = _T("VT_ERROR");
- break;
- case VT_BOOL:
- return strBOOL(V_BOOL(&var));
- 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;
- }
-