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

📄 memodbsdlg.cpp

📁 SQL Server2000 in the database management system, using VC + + development tools to develop a memora
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}
	//获取第nItem列中的信息.
	int id = atoi(m_listMember.GetItemText(nItem,0));
	CString name = m_listMember.GetItemText(nItem,1);
	CString position = m_listMember.GetItemText(nItem,2);
	CString strDate = m_listMember.GetItemText(nItem,3);
	CString gender = m_listMember.GetItemText(nItem,4);
	CString hometown = m_listMember.GetItemText(nItem,5);
	//创建时间变量.
	COleDateTime dtTime(atoi(strDate.Left(4)),atoi(strDate.Mid(5,2)),atoi(strDate.Mid(8,2)),0,0,0);
	//创建成员对话框实例.
	CMemberDlg dlg;
	//给成员对话框的实例的变量赋值.
	dlg.m_dtBirth = dtTime;
	dlg.m_strName = name;
	dlg.m_strPosition = position;
	dlg.m_strGender = gender;
	dlg.m_strHometown = hometown;
	//打开成员对话框,进行修改.
	if(dlg.DoModal() == IDOK){
		//获取修改后的参数.
		
		CString strName = dlg.m_strName;
		CString strPosition = dlg.m_strPosition;
		CString strBirth = dlg.m_dtBirth.Format("%Y-%m-%d");
		CString strGender = dlg.m_strGender;
		CString strHometown = dlg.m_strHometown;
		TRY{
     		CString sql;
			//修改数据库相应的纪录.
			sql.Format("update company_member_tab set member_name = '%s', "
				" member_position = '%s', "
				" birth_date = %s, "
				" member_gender = '%s', "
				" member_hometown = '%s' "
		    	"where member_id = %d",strName,strPosition,strBirth,strGender,strHometown,id);
			TRACE(sql);
		
			m_db.ExecuteSQL(sql);
			//修改列表控件的值.
			m_listMember.SetItemText(nItem,1,strName);
			m_listMember.SetItemText(nItem,2,strPosition);
			m_listMember.SetItemText(nItem,3,strBirth);
			m_listMember.SetItemText(nItem,4,strGender);
			m_listMember.SetItemText(nItem,5,strHometown);
		}
		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
	}	

	
}

void CMemoDBSDlg::OnExit() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
}

void CMemoDBSDlg::OnBtnDelMember() 
{
	// TODO: Add your control notification handler code here
	//获取要删除的成员记录所在的行.
	int nItem = m_listMember.GetNextItem(-1, LVNI_SELECTED);
	if(nItem == -1){
		AfxMessageBox("没有选择要删除的成员");
		return;
	}
	//获取成员ID.
	int id = atoi(m_listMember.GetItemText(nItem,0));	
	TRY{
		CString sql;
		//从数据库中删除记录.
		sql.Format("DELETE company_member_tab "
			"where member_id = %d",id);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		//从列表控件中删除该记录.
		m_listMember.DeleteItem(nItem);
	}
	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
}


void CMemoDBSDlg::OnBtnAddType() 
{
	// TODO: Add your control notification handler code here
	//添加备注类型.
	//初始化备注类型对话框实例.
	CMemoTypeDlg dlg;
	if(dlg.DoModal() == IDOK){
		//从对话框中获取新添加的备注类型.
		CString strName = dlg.m_strTypeName;
		TRY{
			CRecordset rs(&m_db);
			//获取最大的类型ID值.
			rs.Open(CRecordset::dynaset, 
				"Select max(TYPE_ID) from MEMO_TYPE_TAB");
			//初始化新类型ID值为1.
			int newTypeID = 1;
			//如果数据库已经有类型记录,则新的类型ID为最大类型ID+1
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					newTypeID = var.m_iVal + 1;
			}
			CString sql;
			//向数据库中添加新的备忘录类型记录.
			sql.Format("Insert into MEMO_TYPE_TAB(TYPE_ID,"
				"TYPE_NAME) "
				"VALUES("
				"%d,'%s')",newTypeID,strName);
			TRACE(sql);
			m_db.ExecuteSQL(sql);			
			//向界面中添加记录行.
			InsertMemoTypeItem(newTypeID,strName);
		}
		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
	}
	
}


void CMemoDBSDlg::OnBtnModType() 
{
	// TODO: Add your control notification handler code here
	//获取要修改的类型记录
	int nItem = m_listType.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的类型");
		return;
	}
    //获取要修改记录的ID和名称.
	int id = atoi(m_listType.GetItemText(nItem,0));
	CString name = m_listType.GetItemText(nItem,1);
	//初始化备注类型对话框.
	CMemoTypeDlg dlg;
	//给对话框的变量赋值.
	dlg.m_strTypeName = name;
	if(dlg.DoModal() == IDOK){
        //获取修改后的数据.
		CString strName = dlg.m_strTypeName;
		TRY{
			CString sql;
			//更新记录.
			sql.Format("UPDATE MEMO_TYPE_TAB SET TYPE_NAME = '%s' "
				" WHERE TYPE_ID = %d",strName,id);
			TRACE(sql);
			m_db.ExecuteSQL(sql);			
			//修改界面的值.
			m_listType.SetItemText(nItem,1,strName);
		}
		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
	}	
}

void CMemoDBSDlg::OnBtnDelType() 
{
	// TODO: Add your control notification handler code here
	//获取要删除的记录所在的行.
	int nItem = m_listType.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要删除的类型");
		return;
	}
	//获取要删除的类型ID
	int id = atoi(m_listType.GetItemText(nItem,0));
	TRY{
		CString sql;
		sql.Format("DELETE MEMO_TYPE_TAB "
			"where TYPE_ID = %d",id);
		TRACE(sql);
		//删除类型记录
		m_db.ExecuteSQL(sql);
		//删除界面中的记录.
		m_listType.DeleteItem(nItem);
	}
	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	
}

void CMemoDBSDlg::OnBtnAddMemo() 
{
	// TODO: Add your control notification handler code here
	//初始化别忘录信息对话框.
	CMemoInfoDlg dlg;
	//获取所有的家庭成员的名称.
	for(int i = 0 ; i < m_listMember.GetItemCount() ; i++ )
		dlg.m_strMemberArray.Add(m_listMember.GetItemText(i,1)) ;
	//获取所有的类型信息.
	for(i = 0 ; i < m_listType.GetItemCount() ; i++ )
		dlg.m_strTypeArray.Add(m_listType.GetItemText(i,1)) ;
	//打开对话框,添加新的记录.
	if(dlg.DoModal() == IDOK){
		//从对话框中获取记录值.
		CString strName = dlg.m_strMember;
		CString strType = dlg.m_strMemoType;		    
		CString strHappenDate = dlg.m_oleDate.Format("%Y-%m-%d") 
			               + " " + dlg.m_oleTime.Format("%H:%M:%S");
		CString strOperDate = COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S");
		int isEvent = dlg.m_isEvent;
		CString strCost = dlg.m_strCost;
		CString strMemo = dlg.m_strMemoInfo;
		TRY{	
			CRecordset rs(&m_db);
			CString sql;
			//根据成员姓名获取成员ID值.
			sql.Format("Select MEMBER_ID from COMPANY_MEMBER_TAB where "
				   "MEMBER_NAME = '%s'",strName);
			rs.Open(CRecordset::dynaset,sql);
			int memberID = 1;
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					memberID = var.m_iVal;
			}
	        rs.Close();
			//根据备忘录类型获取备忘录类型ID.
			sql.Format("Select TYPE_ID from MEMO_TYPE_TAB where "
				"TYPE_NAME = '%s'",strType);
			rs.Open(CRecordset::dynaset,sql);
			int typeID = 1;
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					typeID = var.m_iVal;
			}						
			rs.Close();
            //从SEQ_MEMO_ID序列中获取下一个值.这个值就是新的备忘录ID.
		
			rs.Open(CRecordset::dynaset, 
				"Select max(MEMO_ID) from MEMO_INFO_TAB");
			
			int memoID = 1;
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					memoID = var.m_iVal+1;
			}
     
			sql.Format("Insert into MEMO_INFO_TAB(MEMO_ID,"
				"MEMBER_ID,OPER_DATE,HAPPEN_DATE,"
				"IS_BIGEVENT,EVENT_COST,TYPE_ID,MEMO_TEXT) "
				"VALUES("
				"%d,%d,'%s'"
				",'%s',%d,'%s'"
				",%d,'%s')",memoID,memberID,
				strOperDate,strHappenDate,isEvent,strCost,typeID,strMemo);
			TRACE(sql);
			
			m_db.ExecuteSQL(sql);
			//向界面中插入新的纪录.
			InsertMemoInfoItem(memoID,strName,strOperDate,strHappenDate,isEvent,strCost,strType,strMemo) ;
		}
		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
	}		
}

void CMemoDBSDlg::OnBtnModMemo() 
{
	// TODO: Add your control notification handler code here
	//获取要修改的备注信息所在的行数.
	int nItem = m_listMemoInfo.GetNextItem(-1, LVNI_SELECTED);
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的成员");
		return;
	}
	//获取备注类型ID.
	int memoID = atoi(m_listMemoInfo.GetItemText(nItem,0));
	//创建对话框实例
	CMemoInfoDlg dlg;
	
	//给对话框赋参数.
	dlg.m_strMember = m_listMemoInfo.GetItemText(nItem,1);
	dlg.m_strCost = m_listMemoInfo.GetItemText(nItem,5);
	dlg.m_strMemoType = m_listMemoInfo.GetItemText(nItem,6);
	dlg.m_oleDate.ParseDateTime(m_listMemoInfo.GetItemText(nItem,2));
	dlg.m_oleTime.ParseDateTime(m_listMemoInfo.GetItemText(nItem,3));
	
	if(m_listMemoInfo.GetItemText(nItem,4).CompareNoCase("是") == 0)
		dlg.m_isEvent = 1;
	else 
		dlg.m_isEvent = 0;
	
	dlg.m_strMemoInfo = m_listMemoInfo.GetItemText(nItem,7);
	for(int i = 0 ; i < m_listMember.GetItemCount() ; i++ )
		dlg.m_strMemberArray.Add(m_listMember.GetItemText(i,1)) ;
	for(i = 0 ; i < m_listType.GetItemCount() ; i++ )
		dlg.m_strTypeArray.Add(m_listType.GetItemText(i,1)) ;
	
	//打开修改的对话框.
	if(dlg.DoModal() == IDOK){
		//获取修改后的记录
		CString strName = dlg.m_strMember;
		CString strType = dlg.m_strMemoType;		    
		CString strHappenDate = dlg.m_oleDate.Format("%Y-%m-%d") 
			+ " " + dlg.m_oleTime.Format("%H:%M:%S");
		CString strOperDate = COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S");
		int isEvent = dlg.m_isEvent;
		CString strCost = dlg.m_strCost;
		CString strMemo = dlg.m_strMemoInfo;
		TRY{
			//为了修改的方便,先删除这条记录,然后再添加记录,备忘录ID值不变.
			CString deletedSql;
			deletedSql.Format("delete from MEMO_INFO_TAB where MEMO_ID = %d",memoID);
			m_db.ExecuteSQL(deletedSql);
			CRecordset rs(&m_db);
			CString sql;
			//根据成员姓名获取成员ID值.
			sql.Format("Select MEMBER_ID from COMPANY_MEMBER_TAB where "
				"MEMBER_NAME = '%s'",strName);
			rs.Open(CRecordset::dynaset,sql);
			int memberID = 1;
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					memberID = var.m_iVal;
			}
			rs.Close();
			//根据备忘录类型获取备忘录类型ID.
			sql.Format("Select TYPE_ID from MEMO_TYPE_TAB where "
				"TYPE_NAME = '%s'",strType);
			rs.Open(CRecordset::dynaset,sql);
			int typeID = 1;
			if(!rs.IsEOF()) {
				CDBVariant var;
				rs.GetFieldValue((short)0, var, SQL_C_SLONG);
				if (var.m_dwType != DBVT_NULL)	
					typeID = var.m_iVal;
			}						
			rs.Close();	
			//插入记录.备忘录ID不变.
			sql.Format("UPDATE MEMO_INFO_TAB SET "
				"OPER_DATE = '%s',"
				"HAPPEN_DATE = '%s',"
				"IS_BIGEVENT = %d,"
				"EVENT_COST = '%s',"
				"TYPE_ID = %d,"
				"MEMO_TEXT = '%s'"
				"where memo_id = %d",
				strOperDate,strHappenDate,
				isEvent,strCost,typeID,strMemo,memoID);

			TRACE(sql);
			//AfxMessageBox(sql);
			m_db.ExecuteSQL(sql);
			m_listMemoInfo.DeleteItem(nItem);
			//修改界面的值.
			InsertMemoInfoItem(memoID,strName,strOperDate,strHappenDate,isEvent,strCost,strType,strMemo) ;
		}
		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
	}	
}

void CMemoDBSDlg::OnBtnDelMemo() 
{
	// TODO: Add your control notification handler code here
	//获取要删除的备忘录所在的行数.
	int nItem = m_listMemoInfo.GetNextItem(-1, LVNI_SELECTED);
	if(nItem == -1){
		AfxMessageBox("没有选择要删除的备注信息");
		return;
	}
	//获取要删除的备忘录ID.
	int memoID = atoi(m_listMemoInfo.GetItemText(nItem,0));	
	TRY{
		CString sql;
		sql.Format("DELETE MEMO_INFO_TAB "
			"where MEMO_ID = %d",memoID);
		TRACE(sql);
		//删除备忘录ID
		m_db.ExecuteSQL(sql);
		//从界面中删除记录信息.
		m_listMemoInfo.DeleteItem(nItem);
	}
	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	
}

void CMemoDBSDlg::OnBtnQueryBirth() 
{
	// TODO: Add your control notification handler code here
	//创建生日提示对话框实列.
	CBirthQueryDlg dlg;
	//把数据库的指针传入对话框中.
	dlg.m_pDB = &m_db;
	//打开生日提示对话框.
	dlg.DoModal();	
}

void CMemoDBSDlg::OnBtnMemoInfo() 
{
	// TODO: Add your control notification handler code here
    //创建备忘录提示对话框实列.
	CMemoQueryDlg dlg;
	//把数据库的指针传入对话框中.
	dlg.m_pDB = &m_db;
	//打开备忘录提示对话框.
	dlg.DoModal();		
}

void CMemoDBSDlg::OnBtnMemoEvent() 
{
	// TODO: Add your control notification handler code here
	//创建备注信息提示对话框实列.
	CEventDlg dlg;
	//把数据库的指针传入对话框中.
	dlg.m_pDB = &m_db;
	//打开大事记提示对话框.
	dlg.DoModal();		
}
void CMemoDBSDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
//	CDialog::OnCancel();
}

⌨️ 快捷键说明

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