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

📄 addmodifyassets.cpp

📁 C++ 固定资产管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
CString CAddModifyAssets::IdToString(int ID,int Index)  //将索引ID转换为字符
{
   CStringArray sa;  
   CUIntArray ua;
   bool flag=0;           //flang用于标识,是否通过索引找到了对应值
   switch(Index)
   {
     case 3:sa.Copy(m_saSort);ua.Copy(m_uaSort);break;              //资产类别
	 case 15:sa.Copy(m_saDepartment);ua.Copy(m_uaDepartment);break; //使用部门
	 case 16:sa.Copy(m_saDepositary);ua.Copy(m_uaDepositary);break; //存放地点
	 case 17:sa.Copy(m_saAddType);ua.Copy(m_uaAddType);break;       //增加方式
	 case 18:sa.Copy(m_saKeeper);ua.Copy(m_uaKeeper);break;         //保管人员
	 
   }
   int j;
   for(j=0;j<ua.GetSize();j++)
   {
      if(ua[j]==unsigned(ID))
	  {   
		  flag=1;
		  break;
	  }
   }
   if(flag)
     return sa[j];       //如果通过索引找到对应值,返回该值
   else                  
	 return "!!删除!!"; //如果索引没有对应值,说明该索引对应值已被删除
}
void CAddModifyAssets::OnAddModify() 
{
    UpdateData(1);
    
	if(!AddModify)//修改
	{
	   UINT  uSelectedCount = m_CtrlList.GetSelectedCount();
	   if (uSelectedCount <1)
	   {
		   MessageBox("请选择记录中的一项","修改提示");
	       return;
	   }
	}
	//判断数据是否填全
    if(m_strName.IsEmpty()) {AfxMessageBox("资产名称不能为空!");m_CtrlEditName.SetFocus();return;}
	if(m_strAssetID.IsEmpty()) {AfxMessageBox("资产编号不能为空!");m_CtrlEditAssetID.SetFocus();return;}
    if(m_strType.IsEmpty()) {AfxMessageBox("型号不能为空!");m_CtrlEditType.SetFocus();return;}
	if(m_CtrlCBDepreciation.GetCurSel()==-1) {AfxMessageBox("折旧方式不能为空!");m_CtrlCBDepreciation.SetFocus();return;}
	if(m_strFactory.IsEmpty()) {AfxMessageBox("生产厂家不能为空!");m_CtrlCBFactory.SetFocus();return;}
    if(m_CtrlCBDepartment.GetCurSel()==-1) {AfxMessageBox("使用部门不能为空!");m_CtrlCBDepartment.SetFocus();return;}
	if(m_CtrlCBDepositary.GetCurSel()==-1) {AfxMessageBox("存放地点不能为空!");m_CtrlCBDepositary.SetFocus();return;}
	if(m_CtrlCBSort.GetCurSel()==-1) {AfxMessageBox("资产类别不能为空!");m_CtrlCBSort.SetFocus();return;}
    if(m_strUseInfo.IsEmpty()) {AfxMessageBox("使用情况不能为空!");m_CtrlCBUseInfo.SetFocus();return;}
    if(m_CtrlCBAddType.GetCurSel()==-1) {AfxMessageBox("增加方式不能为空!");m_CtrlCBAddType.SetFocus();return;}
	if(m_CtrlCBKeeper.GetCurSel()==-1) {AfxMessageBox("保管人员不能为空!");m_CtrlCBKeeper.SetFocus();return;}
 
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	int Sort,Department,Depositary,AddType,Keeper;
	
	CString strSql;

	if(AddModify)//添加	
	{
	   CPromptDlg dlg;
	   dlg.m_Prompt="\n添加该信息?";
	   if(dlg.DoModal()==IDCANCEL) return;
	   Sort=m_CtrlCBSort.GetItemData(m_CtrlCBSort.GetCurSel());     //资产类别
	   Department=m_CtrlCBDepartment.GetItemData(m_CtrlCBDepartment.GetCurSel());//部门
	   Depositary=m_CtrlCBDepositary.GetItemData(m_CtrlCBDepositary.GetCurSel());//存放地点
	   AddType=m_CtrlCBAddType.GetItemData(m_CtrlCBAddType.GetCurSel());//增加方式
	   Keeper=m_CtrlCBKeeper.GetItemData(m_CtrlCBKeeper.GetCurSel());//保管人员
	   CString LFDate,InDate,Depreciation;
	   LFDate.Format("%d %d %d",m_LFDate.GetYear(),m_LFDate.GetMonth(),m_LFDate.GetDay());//出厂日期
	   InDate.Format("%d %d %d",m_InDate.GetYear(),m_InDate.GetMonth(),m_InDate.GetDay());//购买日期
       m_CtrlCBDepreciation.GetLBText(m_CtrlCBDepreciation.GetCurSel(),Depreciation);                 //折旧方式
	   	//将数据加入数据库
       strSql.Format("insert into 资产信息(资产名称,资产类别ID,型号,生产厂家,出厂日期,国际编号,购买日期,\
			净残值率,使用年限,原值,净值,折旧方式,资产编号,使用情况,使用部门ID,存放地点ID,增加方式ID,保管人员ID,\
			备注) values('%s',%d,'%s','%s','%s','%s','%s',%0.3f,%d,%f,%f,'%s','%s','%s',%d,%d,%d,%d,'%s')",m_strName,\
			Sort,m_strType,m_strFactory,LFDate,m_strInterID,InDate,m_dLRatio,m_nYearNum,m_dOrigValue,\
			m_LeftValue,Depreciation,m_strAssetID,m_strUseInfo,Department,Depositary,AddType,Keeper,m_strRemark);	
	try{
    	if(m_pDatabase->CanUpdate())
		{
			m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);
		}
	}
	catch(CDaoException* e){
		MessageBox("资产编号不能重复!\n  添加信息失败","添加提示");//提示资产编号不能重复
		e->Delete();
		m_strAssetID=_T("");
	    UpdateData(0);
		return;}
	Refresh();                   
	//使新添加的记录处于选中状态
    int nSelectIndex=m_CtrlList.GetItemCount();
	m_CtrlList.EnsureVisible(nSelectIndex-1,nSelectIndex+5);
	m_CtrlList.SetItemState(nSelectIndex-1, LVIS_SELECTED, LVIS_SELECTED);
	m_strAssetID=_T("");
	UpdateData(0);
	}
	else//修改
	{
	     CPromptDlg dlg;
	     dlg.m_Prompt="\n修改该信息?";
	     if(dlg.DoModal()==IDCANCEL)
		 {
			 Refresh();
			 return;
		 }
		 int nSelectIndex=m_CtrlList.GetNextItem(-1,LVNI_SELECTED);
		 Sort=m_CtrlCBSort.GetItemData(m_CtrlCBSort.GetCurSel());     //资产类别
	     Department=m_CtrlCBDepartment.GetItemData(m_CtrlCBDepartment.GetCurSel());//部门
	     Depositary=m_CtrlCBDepositary.GetItemData(m_CtrlCBDepositary.GetCurSel());//存放地点
	     AddType=m_CtrlCBAddType.GetItemData(m_CtrlCBAddType.GetCurSel());//增加方式
	     Keeper=m_CtrlCBKeeper.GetItemData(m_CtrlCBKeeper.GetCurSel());//保管人员
	     CString LFDate,InDate,Depreciation;
	     LFDate.Format("%d %d %d",m_LFDate.GetYear(),m_LFDate.GetMonth(),m_LFDate.GetDay());//出厂日期
	     InDate.Format("%d %d %d",m_InDate.GetYear(),m_InDate.GetMonth(),m_InDate.GetDay());//购买日期
         m_CtrlCBDepreciation.GetLBText(m_CtrlCBDepreciation.GetCurSel(),Depreciation);                 //折旧方式 
	    strSql.Format("update 资产信息 set 资产名称='%s',资产类别ID=%d,型号='%s',生产厂家='%s',出厂日期='%s',国际编号='%s',购买日期='%s',\
			净残值率=%0.3f,使用年限=%d,原值=%f,净值=%f,折旧方式='%s',资产编号='%s',使用情况='%s',使用部门ID=%d,存放地点ID=%d,增加方式ID=%d,保管人员ID=%d,\
			备注='%s' where 资产ID=%d",m_strName,Sort,m_strType,m_strFactory,LFDate,m_strInterID,InDate,m_dLRatio,m_nYearNum,m_dOrigValue,\
			m_LeftValue,Depreciation,m_strAssetID,m_strUseInfo,Department,Depositary,AddType,Keeper,m_strRemark,atoi(m_ID));
	     try{
    	    if(m_pDatabase->CanUpdate())
			{
			   m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);
			   Refresh();
			   //使刚刚修改过的内容处于选中状态
			   m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+5);
			   m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);
		       Empty();      //清空控件中的内容
			}
		 }
	     catch(CDaoException* e){
		    MessageBox("资产编号不能重复!\n  添加信息失败","修改提示");//提示资产编号不能重复
		    e->Delete();
			m_strAssetID=_T("");
        	UpdateData(0);
			return;}
		 
	}
}

void CAddModifyAssets::OnRefreshDelet() 
{
   	if(AddModify)//刷新
	{
	   Refresh();
	   Empty();
	}
	else//删除
	{
	   UpdateData(1);
	   if(!m_pDatabase->IsOpen()) return;
	   if(!m_pRecordset) return;
	   if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	   CString strSql;
	   UINT  uSelectedCount = m_CtrlList.GetSelectedCount();
       int  nItemIndex = -1,nSelectIndex=-1;
       // Update all of the selected items.
       if (uSelectedCount > 0)
	   {
          while((nItemIndex=m_CtrlList.GetNextItem(nItemIndex,LVNI_SELECTED ) ) != -1 )
		  {
             m_ID=m_CtrlList.GetItemText ( nItemIndex, 0 );
			 nSelectIndex=nItemIndex;
             CPromptDlg dlg;
			 bool DelFlag=0;
	         CString sql;
	         sql.Format("Select 资产ID From 借出还入资产 where 资产ID=%d",atoi(m_ID));
	         try{
		         m_pRecordset->Open(dbOpenDynaset,sql);
		         while (!m_pRecordset->IsEOF())
				 {
		            DelFlag=1;
		            break;
				 }
                 m_pRecordset->Close();
			 }   
	             catch(CDaoException* e){
	                 e->Delete();}
             if(!DelFlag)
			 {
			      sql.Format("Select 资产ID From 清理资产 where 资产ID=%d",atoi(m_ID));
	              try{
		               m_pRecordset->Open(dbOpenDynaset,sql);
		               while (!m_pRecordset->IsEOF())
					   {
		                   DelFlag=1;
		                   break;
					   }
                     m_pRecordset->Close();
				  }   
	                catch(CDaoException* e){
	                    e->Delete();}
			 }
			 if(!DelFlag)
			 {
			      sql.Format("Select 资产ID From 维修资产 where 资产ID=%d",atoi(m_ID));
	              try{
		               m_pRecordset->Open(dbOpenDynaset,sql);
		               while (!m_pRecordset->IsEOF())
					   {
		                   DelFlag=1;
		                   break;
					   }
                     m_pRecordset->Close();
				  }   
	                catch(CDaoException* e){
	                    e->Delete();}
			 }
			 if(DelFlag)
	              dlg.m_Prompt.Format("有其他项与%s关联,删除后所有与该项相关联的记录都将被标识为“该项已删除”,是否继续删除?",m_CtrlList.GetItemText(nItemIndex, 1));
	         else
	               dlg.m_Prompt.Format("\n删除资产%s  ?",m_CtrlList.GetItemText(nItemIndex, 1));
			 Fill(nItemIndex);
			 if(dlg.DoModal()==IDCANCEL)
			 {  
	             
				 continue;
			 }  
             strSql.Format("delete from 资产信息 where  资产ID=%d",atoi(m_ID));
             try{
                  if(m_pDatabase->CanUpdate())
				  { 
			         m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
			         
			         Empty();
				  } 
			 }   
	         catch(CDaoException* e){
		       e->ReportError();
		       e->Delete();}
		  } 
		  
		  Refresh();
		  //使删除记录的下一条处于选中状态
		  if(nSelectIndex>=m_CtrlList.GetItemCount())
			  nSelectIndex=m_CtrlList.GetItemCount()-1;
		  m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+1);
		  m_CtrlList.SetItemState(nSelectIndex,LVIS_SELECTED, LVIS_SELECTED);
	   }
      else
	  { MessageBox("请选择记录中的一项","删除提示");return;}
	}
}

void CAddModifyAssets::OnItemchangedAmList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->uNewState&LVIS_SELECTED)
	{  
		int iCurrent = pNMListView->iItem;
		Fill(iCurrent);
		if(!AddModify)  
		  SetEditable(1);
	}	
	else
	{
	   m_ID=_T("");
	   if(!AddModify&&m_CtrlList.GetSelectedCount()<=0)  
	   {
		   SetEditable(0);
	       Empty();
	   }
	}
	*pResult = 0;
}
void CAddModifyAssets::Fill(int iCurrent)
{
        char pContent[50] ;
		CString temp;
        m_CtrlList.GetItemText(iCurrent,0,pContent,50);
		m_ID.Format("%s", pContent);
        m_CtrlList.GetItemText(iCurrent,1,pContent,50);
		m_strAssetID.Format("%s", pContent);
		m_CtrlList.GetItemText(iCurrent,2,pContent,50);
		m_strName.Format("%s", pContent);
		m_CtrlList.GetItemText(iCurrent,4,pContent,50);
		m_strType.Format("%s",pContent);
        m_CtrlList.GetItemText(iCurrent,5,pContent,50);
		m_strFactory.Format("%s",pContent);
		m_CtrlList.GetItemText(iCurrent,7,pContent,50);
		m_strInterID.Format("%s",pContent);
        m_CtrlList.GetItemText(iCurrent,9,pContent,50);
		temp.Format("%s",pContent);
		m_dLRatio=atof(temp);
		m_CtrlList.GetItemText(iCurrent,10,pContent,50);
		temp.Format("%s",pContent);
		m_nYearNum=atoi(temp);
		m_CtrlList.GetItemText(iCurrent,11,pContent,50);
		temp.Format("%s",pContent);
		m_dOrigValue=atof(temp);
		m_CtrlList.GetItemText(iCurrent,12,pContent,50);
		temp.Format("%s",pContent);
		m_LeftValue=atof(temp);
		m_CtrlList.GetItemText(iCurrent,14,pContent,50);
		m_strUseInfo.Format("%s",pContent);
		m_CtrlList.GetItemText(iCurrent,19,pContent,50);
		m_strRemark.Format("%s",pContent);
		CString str,year,month,day;
		m_CtrlList.GetItemText(iCurrent,3,pContent,50); //资产类别
		str.Format("%s",pContent);
		m_CtrlCBSort.SetCurSel(m_CtrlCBSort.FindString(0,str));
		m_CtrlList.GetItemText(iCurrent,6,pContent,50); // 出厂日期
		str.Format("%s",pContent);
		if(str.GetAt(6)=='0') 
			year.Format("20%c%c",str.GetAt(6),str.GetAt(7));
		else
			year.Format("19%c%c",str.GetAt(6),str.GetAt(7));
		month.Format("%c%c",str.GetAt(0),str.GetAt(1));
		day.Format("%c%c",str.GetAt(3),str.GetAt(4));
		CTime time1(atoi(year),atoi(month),atoi(day),0,0,0);
		m_LFDate=time1;
		m_CtrlList.GetItemText(iCurrent,8,pContent,50); // 购买日期
		str.Format("%s",pContent);
		if(str.GetAt(6)=='0') 
			year.Format("20%c%c",str.GetAt(6),str.GetAt(7));
		else
			year.Format("19%c%c",str.GetAt(6),str.GetAt(7));
		month.Format("%c%c",str.GetAt(0),str.GetAt(1));
		day.Format("%c%c",str.GetAt(3),str.GetAt(4));
		CTime time2(atoi(year),atoi(month),atoi(day),0,0,0);
		m_InDate=time2;
		m_CtrlList.GetItemText(iCurrent,13,pContent,50); //折旧方式
		str.Format("%s",pContent);
		m_CtrlCBDepreciation.SetCurSel(m_CtrlCBDepreciation.FindString(0,str));
        m_CtrlList.GetItemText(iCurrent,15,pContent,50); //使用部门
		str.Format("%s",pContent);
		m_CtrlCBDepartment.SetCurSel(m_CtrlCBDepartment.FindString(0,str));
		m_CtrlList.GetItemText(iCurrent,16,pContent,50); //存放地点
		str.Format("%s",pContent);
		m_CtrlCBDepositary.SetCurSel(m_CtrlCBDepositary.FindString(0,str));
		m_CtrlList.GetItemText(iCurrent,17,pContent,50); //增加方式
		str.Format("%s",pContent);
		m_CtrlCBAddType.SetCurSel(m_CtrlCBAddType.FindString(0,str));
		m_CtrlList.GetItemText(iCurrent,18,pContent,50); //保管人员
		str.Format("%s",pContent);
		m_CtrlCBKeeper.SetCurSel(m_CtrlCBKeeper.FindString(0,str));
		UpdateData(FALSE);
}
void CAddModifyAssets::OnChangeAmOrigvalue() 
{
	UpdateData(1);
	m_LeftValue=m_dOrigValue;
	UpdateData(0);
}

BOOL CAddModifyAssets::DestroyWindow() 
{
    m_pDatabase->Close();
	delete m_pDatabase;
	m_pDatabase=NULL;	
	return CDialog::DestroyWindow();
}

void CAddModifyAssets::OnChangeAmLeftvalue() 
{
	UpdateData(1);
}

void CAddModifyAssets::OnChangeLratio() 
{
	UpdateData(1);
}

void CAddModifyAssets::OnChangeAmYearnum() 
{
	UpdateData(1);
}

void CAddModifyAssets::OnSelchangeAmAddtype() 
{
    CString str;
	m_CtrlCBAddType.GetLBText(m_CtrlCBAddType.GetCurSel(),str);
	if(str=="融资租入")
	{
		m_CtrlCBDepreciation.SetCurSel(4);
	}
}

⌨️ 快捷键说明

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