📄 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,"触发时间");
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)
{
//添加下拉框内容和列表控件条目
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("确实要根据筛选条件删除这些记录?",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("根据筛选条件未选中记录");
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); // 从数据库中删除
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); //记录发生的日期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 + -