| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- // MainTable.cpp : implementation file
- //
- #include "stdafx.h"
- #include "CP_Main.h"
- #include "MainTable.h"
- #include "DatabaseUtilities.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CMainTable
- IMPLEMENT_DYNAMIC(CMainTable, CDaoRecordset)
- CMainTable::CMainTable(CDaoDatabase* pdb)
- : CDaoRecordset(pdb)
- {
- //{{AFX_FIELD_INIT(CMainTable)
- m_lID = 0;
- m_lDate = 0;
- m_strText = _T("");
- m_lShortCut = 0;
- m_lDontAutoDelete = 0;
- m_lTotalCopySize = 0;
- m_bIsGroup = FALSE;
- m_lParentID = 0;
- m_dOrder = 0;
- m_lDataID = 0;
- m_nFieldCount = m_nFields = 10;
- //}}AFX_FIELD_INIT
- m_nDefaultType = dbOpenDynaset;
- m_bBindFields = true;
- }
- CString CMainTable::GetDefaultDBName()
- {
- return GetDBName();
- }
- CString CMainTable::GetDefaultSQL()
- {
- return _T("[Main]");
- }
- void CMainTable::DoFieldExchange(CDaoFieldExchange* pFX)
- {
- // make sure this isn't called when we aren't using bound fields
- VERIFY( m_bBindFields == true );
- //{{AFX_FIELD_MAP(CMainTable)
- pFX->SetFieldType(CDaoFieldExchange::outputColumn);
- DFX_Long(pFX, _T("[lID]"), m_lID);
- DFX_Long(pFX, _T("[lDate]"), m_lDate);
- DFX_Text(pFX, _T("[mText]"), m_strText);
- DFX_Long(pFX, _T("[lShortCut]"), m_lShortCut);
- DFX_Long(pFX, _T("[lDontAutoDelete]"), m_lDontAutoDelete);
- DFX_Long(pFX, _T("[lTotalCopySize]"), m_lTotalCopySize);
- // GROUPS
- DFX_Bool(pFX, _T("[bIsGroup]"), m_bIsGroup);
- DFX_Long(pFX, _T("[lParentID]"), m_lParentID);
- DFX_Double(pFX, _T("[dOrder]"), m_dOrder);
- // sharing data
- DFX_Long(pFX, _T("[lDataID]"), m_lDataID);
- //}}AFX_FIELD_MAP
- }
- void CMainTable::Open(int nOpenType , LPCTSTR lpszSql , int nOptions)
- {
- m_pDatabase = theApp.EnsureOpenDB();
- OnQuery();
- CDaoRecordset::Open(nOpenType, lpszSql, nOptions);
- }
- void CMainTable::Requery()
- {
- OnQuery();
- CDaoRecordset::Requery();
- }
- /////////////////////////////////////////////////////////////////////////////
- // CMainTable member functions
- CString CMainTable::GetDisplayText( int nMaxLines )
- {
- CString text = m_strText;
- // assign tabs to 2 spaces (rather than the default 8)
- text.Replace("\t", " ");
- if( g_Opt.m_bDescShowLeadingWhiteSpace )
- return text;
- // else, remove the leading indent from every line.
- // get the lines
- CString token;
- CStringArray tokens;
- CTokenizer tokenizer(text,"\r\n");
- for( int nLines=0; nLines < nMaxLines && tokenizer.Next(token); nLines++ )
- {
- tokens.Add( token );
- }
- // remove each line's indent
- char chFirst;
- CString line;
- int count = tokens.GetSize();
- text = "";
- for( int i=0; i < count; i++ )
- {
- line = tokens.ElementAt(i);
- chFirst = line.GetAt(0);
- if( chFirst == ' ' || chFirst == '\t' )
- {
- text += "» "; // show indication that the line is modified
- line.TrimLeft();
- text += line;
- }
- else
- text += line;
- text += "\n";
- }
- return text;
- }
- // assigns the new autoincr ID to m_lID
- void CMainTable::AddNew()
- {
- CDaoRecordset::AddNew();
- // get the new, automatically assigned ID
- COleVariant varID;
- GetFieldValue("lID", varID);
- m_lID = varID.lVal;
- }
- void CMainTable::OnQuery()
- {
- }
- bool CMainTable::SetBindFields(bool bVal)
- {
- bool bOld = m_bBindFields;
- m_bBindFields = bVal;
- if(m_bBindFields)
- m_nFields = m_nFieldCount;
- else
- m_nFields = 0;
- return bOld;
- }
- // copies the current source record to this current record
- void CMainTable::CopyRec(CMainTable& source)
- {
- // m_lID = source.m_lID;
- m_lDate = source.m_lDate;
- m_strText = source.m_strText;
- // m_lShortCut = source.m_lShortCut; // don't copy the shortcut
- m_lDontAutoDelete = source.m_lDontAutoDelete;
- m_lTotalCopySize = source.m_lTotalCopySize;
- m_lDataID = source.m_lDataID;
- m_bIsGroup = source.m_bIsGroup;
- m_lParentID = source.m_lParentID;
- m_dOrder = source.m_dOrder;
- }
- // makes a new copy of the current record and moves to the copy record
- void CMainTable::NewCopyRec()
- {
- if( IsBOF() || IsEOF() )
- return;
- CMainTable temp;
- temp.CopyRec( *this ); // temporary copy
- AddNew(); // overridden to fetch the autoincr lID
- CopyRec( temp );
- Update();
- }
- // only deletes from Main
- BOOL CMainTable::DeleteAll()
- {
- BOOL bRet = FALSE;
- try
- {
- theApp.EnsureOpenDB();
- theApp.m_pDatabase->Execute("DELETE * FROM Main", dbFailOnError);
- bRet = TRUE;
- }
- catch(CDaoException* e)
- {
- AfxMessageBox(e->m_pErrorInfo->m_strDescription);
- e->Delete();
- }
- return bRet;
- }
- void CMainTable::LoadAcceleratorKeys( CAccels& accels )
- {
- CMainTable recset;
- try
- {
- recset.Open("SELECT * FROM Main WHERE lShortCut > 0");
-
- CAccel a;
- while(!recset.IsEOF())
- {
- a.Cmd = recset.m_lID;
- a.Key = recset.m_lShortCut;
- accels.AddAccel( a );
- recset.MoveNext();
- }
- }
- catch(CDaoException* e)
- {
- e->Delete();
- }
- }
- /*
- //HACCEL CMainTable::LoadAcceleratorKeys()
- //{
- // CMainTable recset;
- //
- // try
- // {
- // recset.Open("SELECT * FROM Main WHERE lShortCut > 0");
- //
- // CArray<ACCEL, ACCEL> keys;
- //
- // while(!recset.IsEOF())
- // {
- // ACCEL me;
- // me.cmd = (USHORT)recset.m_lID;
- // me.fVirt = 0;
- // if( HIBYTE(recset.m_lShortCut) & HOTKEYF_SHIFT ) me.fVirt |= FSHIFT;
- // if( HIBYTE(recset.m_lShortCut) & HOTKEYF_CONTROL ) me.fVirt |= FCONTROL;
- // if( HIBYTE(recset.m_lShortCut) & HOTKEYF_ALT ) me.fVirt |= FALT;
- // me.fVirt |= FVIRTKEY;
- // me.key = LOBYTE(recset.m_lShortCut);
- //
- // keys.Add(me);
- //
- // recset.MoveNext();
- // }
- //
- // if(keys.GetSize() > 0)
- // return CreateAcceleratorTable(keys.GetData(), keys.GetSize());
- // }
- // catch(CDaoException* e)
- // {
- // e->Delete();
- // }
- //
- // return NULL;
- //}
- */
- void CMainTable::Open(LPCTSTR lpszFormat,...)
- {
- m_pDatabase = theApp.EnsureOpenDB();
- CString csText;
- va_list vlist;
- ASSERT(AfxIsValidString(lpszFormat));
- va_start(vlist,lpszFormat);
- csText.FormatV(lpszFormat,vlist);
- va_end(vlist);
-
- Open(AFX_DAO_USE_DEFAULT_TYPE, csText, 0);
- }
- /////////////////////////////////////////////////////////////////////////////
- // CMainTable diagnostics
- #ifdef _DEBUG
- void CMainTable::AssertValid() const
- {
- CDaoRecordset::AssertValid();
- }
- void CMainTable::Dump(CDumpContext& dc) const
- {
- CDaoRecordset::Dump(dc);
- }
- #endif //_DEBUG
|