dlgbasicinf.cpp
来自「web」· C++ 代码 · 共 501 行
CPP
501 行
// Dlgbasicinf.cpp : implementation file
//
#include "stdafx.h"
#include "jiasg.h"
#include "Dlgbasicinf.h"
#include "DlgInquiry.h"
#include "Dlgsort.h"
#include "Dlgstatictis.h"
#include "myadoclass.h"
#include "jiasgDlg.h"
//#include "DlgInquiry.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgbasicinf dialog
CDlgbasicinf::CDlgbasicinf(CWnd* pParent /*=NULL*/)
: CDialog(CDlgbasicinf::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgbasicinf)
m_xuehao = _T("");
m_chushengdi = _T("");
m_minzu = _T("");
m_xingbie = _T("");
m_nianling = 0;
m_chushengriqi = 0;
//}}AFX_DATA_INIT
}
void CDlgbasicinf::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgbasicinf)
DDX_Control(pDX, IDC_DATETIMEPICKER_chushengriqi, m_edit_chushengriqi);
DDX_Control(pDX, IDC_EDIT_xuehao, m_ctr_xuehao);
DDX_Control(pDX, IDC_LIST, m_ListCtrl);
DDX_Text(pDX, IDC_EDIT_xingming, m_edit_xingming);
DDX_Control(pDX, IDC_BUTTON_STATICTIS, m_ctr_statictis);
DDX_Control(pDX, IDC_BUTTON_SORT, m_ctr_sort);
DDX_Control(pDX, IDC_BUTTON_PREV, m_PREV);
DDX_Control(pDX, IDC_BUTTON_NEXT, m_NEXT);
DDX_Control(pDX, IDC_BUTTON_LAST, m_LAST);
DDX_Control(pDX, IDC_BUTTON_ISOK, m_ctr_isok);
DDX_Control(pDX, IDC_BUTTON_INQUIRY, m_ctr_inquiry);
DDX_Control(pDX, IDC_BUTTON_FIRST, m_FIRST);
DDX_Control(pDX, IDC_BUTTON_EDIT, m_ctr_edit);
DDX_Control(pDX, IDC_BUTTON_ADD, m_ctr_add);
DDX_Text(pDX, IDC_EDIT_xuehao, m_xuehao);
DDX_Text(pDX, IDC_EDITchushengdi, m_chushengdi);
DDX_Text(pDX, IDC_EDITminzu, m_minzu);
DDX_Text(pDX, IDC_EDITxingbie, m_xingbie);
DDX_Text(pDX, IDC_EDITnianling, m_nianling);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_chushengriqi, m_chushengriqi);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgbasicinf, CDialog)
//{{AFX_MSG_MAP(CDlgbasicinf)
ON_BN_CLICKED(IDC_BUTTON_FIRST, OnButtonFirst)
ON_BN_CLICKED(IDC_BUTTON_PREV, OnButtonPrev)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_ISOK, OnButtonIsok)
ON_BN_CLICKED(IDC_BUTTON_INQUIRY, OnButtonInquiry)
ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
ON_BN_CLICKED(IDC_BUTTON_SORT, OnButtonSort)
ON_BN_CLICKED(IDC_BUTTON_STATICTIS, OnButtonStatictis)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgbasicinf message handlers
BOOL CDlgbasicinf::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); //加表格线
m_ListCtrl.SetBkColor(RGB(0,200,200));
m_ListCtrl.SetTextBkColor(RGB(0,200,200));
//设置表格的标题和列宽
m_ListCtrl.InsertColumn(0,_T("学 号"),LVCFMT_LEFT,80,-1);
m_ListCtrl.InsertColumn(1,_T("姓 名"),LVCFMT_LEFT,80,-1);
m_ListCtrl.InsertColumn(2,_T("性别"),LVCFMT_LEFT,80,-1);
m_ListCtrl.InsertColumn(3,_T("民族"),LVCFMT_LEFT,80,-1);
m_ListCtrl.InsertColumn(4,_T("年龄"),LVCFMT_LEFT,80,-1);
m_ListCtrl.InsertColumn(5,_T("出生日期"),LVCFMT_LEFT,100,-1);
m_ListCtrl.InsertColumn(6,_T("出生地"),LVCFMT_LEFT,140,-1);
sql.Format("select * from stdinfor");
if(!m_runsql.CheckSQLResult(sql)) return false;
this->List();
m_ctr_isok.EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
void CDlgbasicinf::GetData()
{
vXh = m_runsql.m_recordset->GetCollect("sno");
vXm = m_runsql.m_recordset->GetCollect("sname");
vXb = m_runsql.m_recordset->GetCollect("ssex");
vMz = m_runsql.m_recordset->GetCollect("snational");
vNl = m_runsql.m_recordset->GetCollect("sage");
vBd = m_runsql.m_recordset->GetCollect("sbirthdate");
vBp = m_runsql.m_recordset->GetCollect("sbirthplace");
}
void CDlgbasicinf::PutData()
{
m_xuehao = ((char*)(_bstr_t)vXh);
m_edit_xingming = ((char*)(_bstr_t)vXm);
m_xingbie = ((char*)(_bstr_t)vXb);
m_minzu = ((char*)(_bstr_t)vMz);
m_nianling = vNl.iVal;
m_chushengriqi = vBd.date;
m_chushengdi = ((char*)(_bstr_t)vBp);
UpdateData(FALSE);
}
void CDlgbasicinf::List()
{
int nItem;
while(!m_runsql.m_recordset->adoEOF)
{
this->GetData();
nItem=m_ListCtrl.InsertItem(0xffff,(_bstr_t)vXh);
this->CtrListInsertItem(nItem);
m_runsql.m_recordset->MoveNext();
}
m_runsql.m_recordset->MoveFirst();
this->GetData();
this->PutData();
}
void CDlgbasicinf::CtrListInsertItem(long m_currentsel)
{
m_ListCtrl.SetItem(m_currentsel,0,LVIF_TEXT,(_bstr_t)vXh,NULL,0,0,0);
m_ListCtrl.SetItem(m_currentsel,1,LVIF_TEXT,(_bstr_t)vXm,NULL,0,0,0);
m_ListCtrl.SetItem(m_currentsel,2,LVIF_TEXT,(_bstr_t)vXb,NULL,0,0,0);
m_ListCtrl.SetItem(m_currentsel,3,LVIF_TEXT,(_bstr_t)vMz,NULL,0,0,0);
m_ListCtrl.SetItem(m_currentsel,4,LVIF_TEXT,(_bstr_t)vNl,NULL,0,0,0);
m_ListCtrl.SetItem(m_currentsel,5,LVIF_TEXT,(_bstr_t)vBd,NULL,0,0,0);
m_ListCtrl.SetItem(m_currentsel,6,LVIF_TEXT,(_bstr_t)vBp,NULL,0,0,0);
}
void CDlgbasicinf::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView->uNewState&LVIS_SELECTED)
{
UpdateData();
m_nCurrentSel = pNMListView->iItem;
m_runsql.m_recordset->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
GetData();///加载新数据
PutData();
}
*pResult = 0;
}
void CDlgbasicinf::SetButtonStatus(BOOL m_STATUS)
{
m_ctr_add.EnableWindow(m_STATUS);
m_ctr_edit.EnableWindow(m_STATUS);
m_ctr_inquiry.EnableWindow(m_STATUS);
m_ctr_sort.EnableWindow(m_STATUS);
m_ctr_statictis.EnableWindow(m_STATUS);
m_FIRST.EnableWindow(m_STATUS);
m_PREV.EnableWindow(m_STATUS);
m_NEXT.EnableWindow(m_STATUS);
m_LAST.EnableWindow(m_STATUS);
}
void CDlgbasicinf::SaveData()
{
vXh = m_xuehao;
vXm = m_edit_xingming;
vXb = m_xingbie;
vNl = (long)m_nianling;
vMz = m_minzu;
// vBd = m_edit_chushengdi;
// vBp = m_chushengriqi;
//以下将ADO(COM)变量写入库中
m_runsql.m_recordset->PutCollect("sno",vXh);
m_runsql.m_recordset->PutCollect("sname",vXm);
m_runsql.m_recordset->PutCollect("ssex",vXb);
m_runsql.m_recordset->PutCollect("snational",vMz);
m_runsql.m_recordset->PutCollect("sage",vNl);
m_runsql.m_recordset->PutCollect("sbirthdate",vBd);
m_runsql.m_recordset->PutCollect("sbirthplace",vBp);
m_runsql.m_recordset->Update();
}
void CDlgbasicinf::OnButtonFirst()
{
// TODO: Add your control notification handler code here
m_FIRST.EnableWindow(FALSE);
m_PREV.EnableWindow(FALSE);
m_NEXT.EnableWindow(TRUE);
m_LAST.EnableWindow(TRUE);
m_runsql.m_recordset->MoveFirst();
this->GetData();
this->PutData();
}
void CDlgbasicinf::OnButtonPrev()
{
// TODO: Add your control notification handler code here
m_FIRST.EnableWindow(TRUE);
m_NEXT.EnableWindow(TRUE);
m_LAST.EnableWindow(TRUE);
if (!m_runsql.m_recordset->adoBOF)
{
m_runsql.m_recordset->MovePrevious();
}
else
{
m_FIRST.EnableWindow(FALSE);
m_PREV.EnableWindow(FALSE);
m_NEXT.EnableWindow(TRUE);
}
if (!m_runsql.m_recordset->adoBOF)
{
this->GetData();
this->PutData();
}
}
void CDlgbasicinf::OnButtonNext()
{
// TODO: Add your control notification handler code here
m_FIRST.EnableWindow(TRUE);
m_PREV.EnableWindow(TRUE);
m_LAST.EnableWindow(TRUE);
if (!m_runsql.m_recordset->adoEOF)
{
m_runsql.m_recordset->MoveNext();
}
else
{
m_NEXT.EnableWindow(FALSE);
m_LAST.EnableWindow(FALSE);
m_PREV.EnableWindow(TRUE);
}
if (!m_runsql.m_recordset->adoEOF)
{
this->GetData();
this->PutData();
}
}
void CDlgbasicinf::OnButtonLast()
{
// TODO: Add your control notification handler code here
m_FIRST.EnableWindow(TRUE);
m_PREV.EnableWindow(TRUE);
m_NEXT.EnableWindow(FALSE);
m_LAST.EnableWindow(FALSE);
m_runsql.m_recordset->MoveLast();
this->GetData();
this->PutData();
}
void CDlgbasicinf::OnButtonAdd()
{
// TODO: Add your control notification handler code here
this->SetButtonStatus(FALSE);
m_ctr_isok.EnableWindow(TRUE);
m_xuehao = "";
m_edit_xingming = "";
m_nianling = 0;
UpdateData(FALSE);
m_ctr_xuehao.SetFocus();
}
void CDlgbasicinf::OnButtonIsok()
{
// TODO: Add your control notification handler code here
CString m_xh,str;
UpdateData(TRUE);
m_runsql.m_recordset->Close();
if(m_xuehao.IsEmpty())
{
MessageBox("[学号] 字段必须填写内容!","注意",MB_ICONINFORMATION|MB_OK);
return;
}
if(m_edit_xingming.IsEmpty())
{
MessageBox("[姓名] 字段必须填写内容!","注意",MB_ICONINFORMATION|MB_OK);
return;
}
sql.Format("select * from stdinfor where sno='%s'",m_xuehao);
if(m_runsql.CheckSQLResult(sql))
{
this->m_ctr_xuehao.SetFocus();
AfxMessageBox("注意! 该学号已存在,请重新输入一个新学号!!!");
m_xuehao = "";
m_ctr_xuehao.SetFocus();
UpdateData(FALSE);
sql.Format("select * from stdinfor");
m_runsql.CheckSQLResult(sql);
return;
}
sql.Format("select * from stdinfor");
m_runsql.CheckSQLResult(sql);
m_runsql.m_recordset->AddNew();
m_nCurrentSel = m_ListCtrl.InsertItem(0xffff,"");
m_ListCtrl.SetFocus();
this->SaveData();
this->CtrListInsertItem(m_nCurrentSel);
this->SetButtonStatus(TRUE);
m_ctr_isok.EnableWindow(FALSE);
/* UpdateData(TRUE);
m_runsql.m_recordset->Close();
if(m_xuehao.IsEmpty()||m_edit_xingming.IsEmpty())
{
MessageBox("学号姓名必须填写!","注意",MB_ICONINFORMATION|MB_OK);
}else{
sql.Format("select * from stdinfor where sno='%s'",m_xuehao);
if(m_runsql.CheckSQLResult(sql)) {
this->m_ctr_xuehao.SetFocus();
AfxMessageBox("注意! 该学号已存在,请重新输入一个新学号!!!");
m_xuehao="";
this->SetDlgItemText(IDC_EDIT_xuehao,"");
m_ctr_xuehao.SetFocus();
}else{
m_runsql.m_recordset->AddNew();
m_nCurrentSel = m_ListCtrl.InsertItem(0xffff,"");
m_ListCtrl.SetFocus();
this->SaveData();
this->CtrListInsertItem(m_nCurrentSel);
this->SetButtonStatus(TRUE);
m_ctr_isok.EnableWindow(FALSE);
}
}*/
}
void CDlgbasicinf::OnButtonInquiry()
{
// TODO: Add your control notification handler code here
m_runsql.m_recordset->Close();
CDlgInquiry dlg;
if (dlg.DoModal()==IDOK)
{
switch( dlg.m_edit_select )
{
case 0 :
{
sql.Format("select * from stdinfor where sno = '"+dlg.m_edit_inquiry+"'");
break;
}
case 1 :
{
sql="SELECT * FROM stdinfor WHERE sname LIKE '%"+dlg.m_edit_inquiry+"%'";
break;
}
case 2 :
{
sql.Format("select * from stdinfor where sage = "+dlg.m_edit_inquiry);
break;
}
case 3 :
{
AfxMessageBox(dlg.m_edit_inquiry);
sql.Format("select * from stdinfor where sbirthdate = #"+dlg.m_edit_inquiry+"#");
break;
}
}
if (!m_runsql.CheckSQLResult(sql))
{
AfxMessageBox("您输入的项目不存在,本次查找失败,请重新查找! ");
return;
}
m_ListCtrl.DeleteAllItems();
this->List();
}
}
void CDlgbasicinf::OnButtonEdit()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE) ;
this->SaveData();
this->CtrListInsertItem(m_nCurrentSel);
this->SetButtonStatus(TRUE);
m_ctr_isok.EnableWindow(FALSE);
}
void CDlgbasicinf::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(MessageBox(" 确定要删除这条记录吗? ","删除记录",MB_YESNO|MB_ICONINFORMATION) == IDYES)
{
if(m_nCurrentSel >= 0)
{
m_ListCtrl.DeleteItem(m_nCurrentSel);
int count = m_ListCtrl.GetItemCount();
if(count <= m_nCurrentSel) m_nCurrentSel = count-1;
m_runsql.m_recordset->Delete(adAffectCurrent);
if (m_runsql.m_recordset->adoEOF)
m_runsql.m_recordset->MoveLast();
if (m_runsql.m_recordset->adoBOF)
m_runsql.m_recordset->MoveFirst();
if ( m_nCurrentSel>0 )
{
m_runsql.m_recordset->MoveNext();
GetData();
PutData();
}
// m_ListCtrl.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_ListCtrl.SetFocus();
}
}
*pResult = 0;
}
void CDlgbasicinf::OnButtonSort()
{
// TODO: Add your control notification handler code here
CDlgsort dlg;
m_runsql.m_recordset->Close();
if (dlg.DoModal()==IDOK)
{
if ( dlg.m_sort_select == "1-学号") sql.Format("select * from stdinfor order by sno");
if ( dlg.m_sort_select == "2-姓名") sql.Format("select * from stdinfor order by sname");
if ( dlg.m_sort_select == "3-性别") sql.Format("select * from stdinfor order by ssex");
if ( dlg.m_sort_select == "4-民族") sql.Format("select * from stdinfor order by snational");
if ( dlg.m_sort_select == "5-年龄") sql.Format("select * from stdinfor order by sage");
m_runsql.CheckSQLResult(sql);
}
m_ListCtrl.DeleteAllItems();
this->List();
}
void CDlgbasicinf::OnButtonStatictis()
{
// TODO: Add your control notification handler code here
CString str;
int m_count,m_mennumber,m_womennumber,m_natilnumber;
m_count = 0;
m_mennumber = 0;
m_womennumber = 0;
m_natilnumber = 0;
CDlgstatictis *pDlg=new CDlgstatictis(this);
pDlg->Create(IDD_DIALOG_STATICTIS);
m_runsql.m_recordset->Close();
sql.Format("select * from stdinfor");
m_runsql.CheckSQLResult(sql);
while(!m_runsql.m_recordset->adoEOF)
{
m_count ++;
vXb = m_runsql.m_recordset->GetCollect("ssex");
str = (char*)(_bstr_t)vXb;
if( str == "男" )
m_mennumber ++;
else
m_womennumber++;
vMz = m_runsql.m_recordset->GetCollect("snational");
str = (char*)(_bstr_t)vMz;
if( str != "汉" )
m_natilnumber++ ;
m_runsql.m_recordset->MoveNext();
}
pDlg->m_edit_count = m_count;
pDlg->m_edit_mennumber = m_mennumber;
pDlg->m_edit_womennumber = m_womennumber;
pDlg->m_edit_natilnumber = m_natilnumber;
pDlg->UpdateData(FALSE);
pDlg->ShowWindow(SW_RESTORE);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?