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 + -
显示快捷键?