?? querydoc.cpp
字號:
/////////////////////////////////////////////////////////////////
// //
// QueryDoc.cpp //
//-------------------------------------------------------------//
// By Eugene Khodakovsky //
// April,2002 //
// Eugene@cpplab.com //
// Last Update: April, 2002 //
/////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Query.h"
#include "QueryDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQueryDoc
IMPLEMENT_DYNCREATE(CQueryDoc, CDocument)
BEGIN_MESSAGE_MAP(CQueryDoc, CDocument)
//{{AFX_MSG_MAP(CQueryDoc)
ON_COMMAND(ID_RUN_QUERY, OnRunQuery)
ON_UPDATE_COMMAND_UI(ID_RUN_QUERY, OnUpdateRunQuery)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQueryDoc construction/destruction
CQueryDoc::CQueryDoc():
m_query(GetSession()),
m_hSelNodeType(TreeNode_None)
{
}
CQueryDoc::~CQueryDoc()
{
}
BOOL CQueryDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CQueryDoc serialization
void CQueryDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CQueryDoc diagnostics
#ifdef _DEBUG
void CQueryDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CQueryDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CQueryDoc commands
#define CRLF CString("\r\n")
void CQueryDoc::OnRunQuery()
{
CWaitCursor wait;
m_query.Empty(); // Clean old query sentence
m_query << m_strQuery;
if(!m_query.ExecuteSQL())
return;
UpdateAllViews(NULL,HINT_ON_QUERY_RESULT_READY);
}
void CQueryDoc::OnUpdateRunQuery(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_strQuery.IsEmpty());
}
void CQueryDoc::OnSelectTreeNode(TreeNodeType node, const CString strText)
{
m_hSelNodeType = node;
m_strSelNodeName = strText;
switch(m_hSelNodeType)
{
default:
ASSERT(0);
break;
case TreeNode_None:
case TreeNode_RootDatabase:
case TreeNode_RootTables:
m_strQuery = _T("");
break;
case TreeNode_TableName:
m_strQuery = " SELECT TOP 100 * FROM [" + m_strSelNodeName + "]";
OnRunQuery();
break;
};
UpdateAllViews(NULL,HINT_ON_NODE_SELECTED);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -