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

📄 dossierdlg.cpp

📁 关于固定资产管理系统的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    (CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(0);     //删除不可用
	(CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(0);  //修改不可用
	(CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);    //保存不可用
	(CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(1); //取消可用
	m_strName.Empty();                                       //清空名称编辑框内容准备添加
	m_strRemark.Empty();                                     //清空备注编辑框内容准备添加
	UpdateData(0);
	m_CtrlEditName.SetFocus();                               //将光标停留在名称编辑框
}

void CDossierDlg::OnDossModify() 
{
    m_strFlag="修改";                                         //将标志变量内容变为“添加”
	(CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(1);	      //名称编辑框可用
	(CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(1);     //备注编辑框可用
	(CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(0);      //添加不可用
	(CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(0);   //修改不可用
	(CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(0);      //删除不可用
	(CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(1);     //保存可用
    (CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(1);  //取消可用
	m_CtrlEditName.SetFocus();                                //将光标停留在名称编辑框
}

void CDossierDlg::OnDossSave() 
{
    //检测DAO数据库对象的有效性,并在记录集对象打开时关闭该记录集
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	UpdateData(1);                                       //将控件中的内容保存到控件对于的变量里
	if(m_strName.IsEmpty())                              //保证名称编辑框控件中的内容不能为空
	{
		AfxMessageBox(m_strField+"不能为空!");
		m_CtrlEditName.SetFocus();
		return;
	}
	//提示对话框,询问是否确认“保存”或“修改”
	CPromptDlg dlg;                                     
    dlg.m_Prompt=("\n"+m_strFlag+"该记录?");
	if(dlg.DoModal()==IDCANCEL) 
		return;
	CString strSql,FieldID;
	FieldID=m_strTableName+"ID";                         //构造数据库第一个字段名称
	if(m_strFlag=="添加")
	{
	   strSql.Format("insert into %s(%s,备注) values('%s','%s')",m_strTableName,m_strField,m_strName,m_strRemark);
       try{
           if(m_pDatabase->CanUpdate())                  //如果数据库可以更新,执行数据库添加操作
		   { 
		      m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);

		   } 
	   }   
	   //如果名称出现重复,程序执行catch函数,通过提示对话框对用户进行提示,同时清空名称编辑框内容
	   catch(CDaoException* e){
	        MessageBox(m_strField+"不能重复!\n请重新输入"+m_strTableName,"添加提示");
		    e->Delete();
			m_strName.Empty();
			m_CtrlEditName.SetFocus();                        //将光标置于名称编辑框处
        	UpdateData(0);
			(CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);
			return;
	       }
	   Refresh();                                              //调用Refresh函数
	   //将新加的条目变为选中状态
	   nSelectIndex=m_CtrlList.GetItemCount()-1;               //得到新加条目的索引值
       m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+1);  //使新加条目可见
	   m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);  //使条目处于选中状态
	}

	if(m_strFlag=="修改")
	{
	   int nTempIndex=nSelectIndex;                            //变量nTempIndex用于保存选择条目的索引值
	   strSql.Format("update %s set %s='%s',备注='%s' where %s=%d",m_strTableName,m_strField,m_strName,m_strRemark,FieldID,atoi(m_strID));
       try{
           if(m_pDatabase->CanUpdate())
		   { 
		      m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);
		      
		   } 
	   }   
	   catch(CDaoException* e){
	       MessageBox(m_strField+"不能重复!","修改提示");
           m_strName=m_CtrlList.GetItemText(nSelectIndex,1);
		   m_CtrlEditName.SetFocus();
           UpdateData(0);
		   (CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);
		   return;
	       e->Delete();}
       Refresh();                                                  //调用Refresh函数
	   m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+1);      //使新加条目可见 
	   m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED); //使条目处于选中状态
	}
    (CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(0);	            //名称编辑框不可用
	(CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(0);           //备注编辑框不可用
	(CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(1);            //添加可用
	(CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(1);         //修改可用
	(CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(1);            //删除可用
    (CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);           //保存不可用
	(CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(0);        //取消不可用
}

void CDossierDlg::OnDossDel() 
{
    //检测DAO数据库对象的有效性,并在记录集对象打开时关闭该记录集
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	//检测预删除的条目是否与其他数据表相关联
	CString strSql,FieldID;
	FieldID=m_strTableName+"ID";     //构造数据库中表的字段名称
	bool DelFlag=0;                  //用于标识该条目是否与其他表关联,如果关联其值为true
	CString sql;
	//首先检测是否与表“资产信息”关联
	sql.Format("Select %s From 资产信息 where %s=%d",FieldID,FieldID,atoi(m_strID));
	try{
		m_pRecordset->Open(dbOpenDynaset,sql);
		while (!m_pRecordset->IsEOF())
		{
		   DelFlag=1;              //如果关联,DelFlag变为true,跳出循环
		   break;
		}
        m_pRecordset->Close();
	}   
	catch(CDaoException* e){
	     e->Delete();}
	//检测是否与表“借出还入资产”相关联
	if(m_strTableName=="部门")
	{
	    sql.Format("Select 借用部门ID From 借出还入资产 where 借用部门ID=%d",atoi(m_strID));
	try{
		m_pRecordset->Open(dbOpenDynaset,sql);
		while (!m_pRecordset->IsEOF())
		{
		   DelFlag=1;
		   break;
		}
        m_pRecordset->Close();
	}  
	catch(CDaoException* e){
	    e->Delete();}	
	}
	//检测是否与表“清理资产”相关联
    if(m_strTableName=="清理方式")
	{
	    sql.Format("Select 清理方式ID From 清理资产 where 清理方式ID=%d",atoi(m_strID));
	try{
		m_pRecordset->Open(dbOpenDynaset,sql);
		while (!m_pRecordset->IsEOF())
		{
		   DelFlag=1;
		   break;
		}
        m_pRecordset->Close();
	}  
	catch(CDaoException* e){
	    e->Delete();}	
	}
	//提示是否确定删除该条目
    CPromptDlg dlg;
	//如果该条目与其他表相联系,给出警告提示
	if(DelFlag)
	   dlg.m_Prompt.Format("有其他项与该项相关联,删除后所有与该项相关联的记录都将被标识为“!!删除!!”,是否继续删除?");
	else
	   dlg.m_Prompt=("\n删除该记录?");
	if(dlg.DoModal()==IDCANCEL) 
	  return;
	strSql.Format("delete from %s where %s=%d",m_strTableName,FieldID,atoi(m_strID));
    try{
           if(m_pDatabase->CanUpdate())
		      m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
	}   
	catch(CDaoException* e){
	  e->ReportError();
	  e->Delete();}
	Refresh();
	//使删除条目的下一条变为选中状态
	if(nSelectIndex==m_CtrlList.GetItemCount())
         nSelectIndex--;
    m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+5);
	m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);

} 
		  
	  

void CDossierDlg::OnChangeDossName() 
{
	UpdateData(1);          //将控件中的内容保存的与控件对应的变量里
    //目前处于添加或修改状态且名称编辑框不为空时“保存”按钮可用
	if((m_strFlag=="添加"||m_strFlag=="修改")&&m_strName.IsEmpty()==0)
	  (CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(1);	      
	else
	  (CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);	
}

void CDossierDlg::OnDossAbolish() 
{
    //如果列表框控件中没有条目被选中
	if(nSelectIndex==-1) 
	{
	    Refresh();
	    (CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(1);
	    (CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);
		(CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(0);
	    (CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(0);
		(CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(0);
		(CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(0);
		(CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(0);
	}
	//如果有条目被选中
	else
	{
	   m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+5);
	   m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);
	   (CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(1);
	   (CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0);
	   (CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(1);
	   (CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(1);
	   (CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(0);
	   (CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(0);
	   (CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(0);
	}
		
}

⌨️ 快捷键说明

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