⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 birthquerydlg.cpp

📁 < Visual C+++SQL Server数据库开发与实例>>一书中的实例核心源程序提供了几个案例的编程源代码。
💻 CPP
字号:
// BirthQueryDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MemoDBS.h"
#include "BirthQueryDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBirthQueryDlg dialog


CBirthQueryDlg::CBirthQueryDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBirthQueryDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBirthQueryDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CBirthQueryDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBirthQueryDlg)
	DDX_Control(pDX, IDC_LIST_BIRTHDATE, m_listBirthInfo);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBirthQueryDlg, CDialog)
	//{{AFX_MSG_MAP(CBirthQueryDlg)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CBirthQueryDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//设置列表框控件的扩展风格.
	DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
		LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
	m_listBirthInfo.SetExtendedStyle(dwExStyle);
	
	//初始化列表框控件
	//添加姓名列
	LV_COLUMN lvColumn;
	lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvColumn.fmt = LVCFMT_CENTER;
	lvColumn.cx = 80;
	lvColumn.iSubItem = 0;     
	lvColumn.pszText = "姓名";
	m_listBirthInfo.InsertColumn(0, &lvColumn);
	//添加出生日期列
	lvColumn.cx = 100;  
	lvColumn.iSubItem = 1; 
	lvColumn.pszText = "出生日期";
	m_listBirthInfo.InsertColumn(1, &lvColumn);
	//添加出年龄列
	lvColumn.cx = 100;  
	lvColumn.iSubItem = 2; 
	lvColumn.pszText = "年龄";
	m_listBirthInfo.InsertColumn(2, &lvColumn); 
	//添加是否生日已过列
	lvColumn.cx = 80;  
	lvColumn.iSubItem = 3; 
	lvColumn.pszText = "生日已过";
	m_listBirthInfo.InsertColumn(3, &lvColumn); 
	//添加相差天数列
	lvColumn.cx = 80;  
	lvColumn.iSubItem = 4; 
	lvColumn.pszText = "相差天数";
	m_listBirthInfo.InsertColumn(4, &lvColumn); 
	InitData();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CBirthQueryDlg::InitData()
{
	if(m_pDB->IsOpen()){
		TRY{
			CRecordset rs(m_pDB);
			//获取所有的家庭成员的信息.
			CString sql = "Select * from company_member_tab ";
			rs.Open(CRecordset::dynaset, sql);
			CString name,date;
            //获取所有的记录值.
			while (!rs.IsEOF()) {
				rs.GetFieldValue(1, name);
				rs.GetFieldValue(3, date);
				COleDateTime dt1,dt2;
				date = date.Left(10);
				dt1.ParseDateTime(date);
				//获取当前时间.
				dt2 = COleDateTime::GetCurrentTime();
				//获取年龄信息.
				int nOld = dt2.GetYear() - dt1.GetYear();
				//修改出生日期的年数,从而获取对于当前年,时间dt1所对应的天数.
				dt1.SetDateTime(dt2.GetYear(),dt1.GetMonth(),dt1.GetDay(),0,0,0);
				//分别获取dt1和dt2对应的天数,两者的值就可以得出和生日相差的天数
				//如果dt2比dt1大,则说明还未过生日.
				int nDays1 = dt1.GetDayOfYear();
				int nDays2 = dt2.GetDayOfYear();
				int nDays = nDays2-nDays1;
				CString strTemp = "是";
				
				//如过dt1较大,则生日已经过了.
				if(nDays1>nDays2){
					nDays = nDays1-nDays2;
					strTemp = "否";
				}
				//插入生日记录信息.
				int nIndex = m_listBirthInfo.GetItemCount();
				LV_ITEM lvItem;
				lvItem.mask = LVIF_TEXT ;	
				lvItem.iItem = nIndex;				//行数
				lvItem.iSubItem = 0;
				CString temp = name;
				lvItem.pszText = (char*)(LPCTSTR)temp;		//第一列
				m_listBirthInfo.InsertItem(&lvItem);	
				m_listBirthInfo.SetItemText(nIndex,1,date.Left(10));
				//插入年龄信息.
				temp.Format("%d",nOld);
				m_listBirthInfo.SetItemText(nIndex,2,temp);
				m_listBirthInfo.SetItemText(nIndex,3,strTemp);	
				temp.Format("%d",nDays);
				m_listBirthInfo.SetItemText(nIndex,4,temp);	
				rs.MoveNext();	
			}
		}
		CATCH(CDBException,ex)
		{
			AfxMessageBox (ex->m_strError);
			AfxMessageBox (ex->m_strStateNativeOrigin);		
		}
		AND_CATCH(CException,e)
		{
			TCHAR szError[100];
			e->GetErrorMessage(szError,100);
			AfxMessageBox (szError);
		}
		END_CATCH
	}

}
/////////////////////////////////////////////////////////////////////////////
// CBirthQueryDlg message handlers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -