?? logdlg.cpp
字號:
// LogDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Alert.h"
#include "LogDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLogDlg dialog
CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLogDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLogDlg)
m_strCj = _T("");
m_strBf = _T("");
m_strTime = _T("");
//}}AFX_DATA_INIT
}
void CLogDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLogDlg)
DDX_Control(pDX, IDC_COMBOTIME, m_comboTime);
DDX_Control(pDX, IDC_COMBOBF, m_comboBf);
DDX_Control(pDX, IDC_COMBOACT, m_comboAct);
DDX_Control(pDX, IDC_LIST1, m_logList);
DDX_CBString(pDX, IDC_COMBOACT, m_strCj);
DDX_CBString(pDX, IDC_COMBOBF, m_strBf);
DDX_CBString(pDX, IDC_COMBOTIME, m_strTime);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLogDlg, CDialog)
//{{AFX_MSG_MAP(CLogDlg)
ON_BN_CLICKED(IDFIND, OnFind)
ON_BN_CLICKED(IDDELETE, OnDelete)
ON_BN_CLICKED(IDEXIT, OnExit)
ON_BN_CLICKED(IDSHOWALL, OnShowall)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLogDlg message handlers
BOOL CLogDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//添加表頭
m_logList.InsertColumn(0,"布控名稱");
m_logList.InsertColumn(1,"觸發(fā)時間");
m_logList.InsertColumn(2,"處警動作");
CRect rect;
m_logList.GetClientRect(&rect);
m_logList.SetColumnWidth(0,rect.Width()/5);
m_logList.SetColumnWidth(1,2*rect.Width()/5);
m_logList.SetColumnWidth(2,2*rect.Width()/5);
//打開紀錄集Log
_RecordsetPtr r;
r.CreateInstance(_uuidof(Recordset));
CString s="select * from log";
_bstr_t bs=s.AllocSysString();
CAlertApp* pApp=(CAlertApp*)::AfxGetApp();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
if(!r->adoEOF && !r->BOF)
{
//添加下拉框內(nèi)容和列表控件條目
r->MoveFirst();
while(!r->adoEOF)
{
m_comboAct.AddString(LPTSTR(_bstr_t(r->GetCollect("cjname"))));
m_comboBf.AddString(LPTSTR(_bstr_t(r->GetCollect("bfname"))));
m_comboTime.AddString(LPTSTR(_bstr_t(r->GetCollect("Date"))));
int nItem = m_logList.InsertItem(m_logList.GetItemCount(),LPTSTR(_bstr_t(r->GetCollect("bfname"))));
m_logList.SetItemText(nItem,1,_bstr_t(r->GetCollect("date"))+_bstr_t(" ")+_bstr_t(r->GetCollect("time")));
m_logList.SetItemText(nItem,2,_bstr_t(r->GetCollect("cjname")));
r->MoveNext();
}
}
r->Close();
r=NULL;
int nItem=m_comboAct.AddString("全部");
m_comboAct.SetCurSel(nItem);
nItem=m_comboBf.AddString("全部");
m_comboBf.SetCurSel(nItem);
nItem=m_comboTime.AddString("全部");
m_comboTime.SetCurSel(nItem);
/*
cmbBf.ListIndex = 0
cmbTime.ListIndex = 0
cmbCj.ListIndex = 0
*/
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLogDlg::OnFind()
{
// TODO: Add your control notification handler code here
_RecordsetPtr r;
r.CreateInstance(_uuidof(Recordset));
CString s= GetSql();
if(s=="")
::AfxMessageBox("篩選條件不足,請重新篩選");
m_logList.DeleteAllItems();
_bstr_t bs=s.AllocSysString();
TRY
{
CAlertApp* pApp=(CAlertApp*)::AfxGetApp();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenStatic,adLockOptimistic,adCmdText);
if(!r->adoEOF && !r->BOF)
r->MoveFirst();
while(!r->adoEOF && !r->BOF)
{
int nItem = m_logList.InsertItem(m_logList.GetItemCount(),LPTSTR(_bstr_t(r->GetCollect("bfname"))));
m_logList.SetItemText(nItem,1,_bstr_t(r->GetCollect("date"))+_bstr_t(" ")+_bstr_t(r->GetCollect("time")));
m_logList.SetItemText(nItem,2,_bstr_t(r->GetCollect("cjname")));
r->MoveNext();
}
}
CATCH(CException,e)
{
e->ReportError();
}
END_CATCH
r->Close();
r=NULL;
}
void CLogDlg::OnDelete()
{
// TODO: Add your control notification handler code here
int res=::AfxMessageBox("確實要根據(jù)篩選條件刪除這些記錄?",MB_YESNO);
if(res==IDNO)
return;
_RecordsetPtr r;
r.CreateInstance(_uuidof(Recordset));
CString s= GetSql();
// if(s=="")
// ; //處理
_bstr_t bs=s.AllocSysString();
TRY
{
CAlertApp* pApp=(CAlertApp*)::AfxGetApp();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenStatic,adLockOptimistic,adCmdText);
if(!r->adoEOF && !r->BOF)
r->MoveFirst();
// else
// ::AfxMessageBox("根據(jù)篩選條件未選中記錄");
while(!r->adoEOF && !r->BOF)
{
LVFINDINFO info; //從列表控件中刪除
info.flags = LVFI_STRING |LVFI_PARTIAL;
info.psz = _bstr_t(r->GetCollect("bfname"));
int nItem = m_logList.FindItem(&info);
m_logList.DeleteItem(nItem);
r->Delete(adAffectCurrent); // 從數(shù)據(jù)庫中刪除
r->MoveNext();
}
}
CATCH(CException,e)
{
e->ReportError();
}
END_CATCH
r->Close();
r=NULL;
}
void CLogDlg::OnExit()
{
// TODO: Add your control notification handler code here
OnOK();
}
void CLogDlg::OnShowall()
{
// TODO: Add your control notification handler code here
//清空listview準備寫入新item
m_logList.DeleteAllItems();
//打開紀錄集Log
_RecordsetPtr r;
r.CreateInstance(_uuidof(Recordset));
CString s="select * from log";
_bstr_t bs=s.AllocSysString();
CAlertApp* pApp=(CAlertApp*)::AfxGetApp();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
if(!r->adoEOF && !r->BOF)
{
//添加列表控件條目
r->MoveFirst();
while(!r->adoEOF)
{
int nItem = m_logList.InsertItem(m_logList.GetItemCount(),LPTSTR(_bstr_t(r->GetCollect("bfname"))));
m_logList.SetItemText(nItem,1,_bstr_t(r->GetCollect("date"))+_bstr_t(" ")+_bstr_t(r->GetCollect("time")));
m_logList.SetItemText(nItem,2,_bstr_t(r->GetCollect("cjname")));
r->MoveNext();
}
}
r->Close();
r=NULL;
}
CString CLogDlg::GetSql()
{
m_comboBf.GetWindowText(m_strBf); //記錄bfname
m_comboAct.GetWindowText(m_strCj); //記錄cjname
m_comboTime.GetWindowText(m_strTime); //記錄發(fā)生的日期date
if((m_strBf=="")||(m_strCj=="")||(m_strTime==""))
return "";
CString s="select * from log where";
if(m_strBf!="全部")
s+=" bfname = '" + m_strBf + "'and";
if(m_strTime!="全部")
s+=" date = #" + m_strTime + "# and";
if(m_strCj!="全部")
s+=" cjname = '" + m_strCj + "'";
if(s.Right(1)=="d")
s=s.Left(s.GetLength()-3);
if(s.Right(1)=="e")
s=s.Left(s.GetLength()-5);
return s;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -