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

📄 findrepair.cpp

📁 C++ 固定资产管理系统
💻 CPP
字号:
// FindRepair.cpp : implementation file
//

#include "stdafx.h"
#include "FixedAssets.h"
#include "FindRepair.h"
#include "CRACK.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFindRepair dialog


CFindRepair::CFindRepair(CWnd* pParent /*=NULL*/)
	: CDialog(CFindRepair::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFindRepair)
	m_strAssetID = _T("");
	m_CKAssetID = FALSE;
	m_CKDate = FALSE;
	m_CKName = FALSE;
	m_CKSender = FALSE;
	m_CKSort = FALSE;
	m_CKType = FALSE;
	m_Date1 = -1;
	m_Date2 = -1;
	m_strName = _T("");
	m_strSender = _T("");
	m_strType = _T("");
	//}}AFX_DATA_INIT
	flag1=0;
	flag2=0;
}


void CFindRepair::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFindRepair)
	DDX_Control(pDX, IDC_FDSR_TYPE, m_CtrlCBType);
	DDX_Control(pDX, IDC_FDSR_SORT, m_CtrlCBSort);
	DDX_Control(pDX, IDC_FDSR_SENDER, m_CtrlCBSender);
	DDX_Control(pDX, IDC_FDSR_NAME, m_CtrlCBName);
	DDX_Control(pDX, IDC_FDSR_LIST, m_CtrlList);
	DDX_Control(pDX, IDC_FDSR_ASSETID, m_CtrlCBAssetID);
	DDX_CBString(pDX, IDC_FDSR_ASSETID, m_strAssetID);
	DDX_Check(pDX, IDC_FDSR_CKASSETID, m_CKAssetID);
	DDX_Check(pDX, IDC_FDSR_CKDATE, m_CKDate);
	DDX_Check(pDX, IDC_FDSR_CKNAME, m_CKName);
	DDX_Check(pDX, IDC_FDSR_CKSENDER, m_CKSender);
	DDX_Check(pDX, IDC_FDSR_CKSORT, m_CKSort);
	DDX_Check(pDX, IDC_FDSR_CKTYPE, m_CKType);
	DDX_DateTimeCtrl(pDX, IDC_FDSR_DATE1, m_Date1);
	DDX_DateTimeCtrl(pDX, IDC_FDSR_DATE2, m_Date2);
	DDX_CBString(pDX, IDC_FDSR_NAME, m_strName);
	DDX_CBString(pDX, IDC_FDSR_SENDER, m_strSender);
	DDX_CBString(pDX, IDC_FDSR_TYPE, m_strType);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFindRepair, CDialog)
	//{{AFX_MSG_MAP(CFindRepair)
	ON_BN_CLICKED(IDC_FDSR_CKDATE, OnFdsrCkdate)
	ON_BN_CLICKED(IDC_FDSR_CKNAME, OnFdsrCkname)
	ON_BN_CLICKED(IDC_FDSR_CKSORT, OnFdsrCksort)
	ON_BN_CLICKED(IDC_FDSR_CKASSETID, OnFdsrCkassetid)
	ON_BN_CLICKED(IDC_FDSR_CKTYPE, OnFdsrCktype)
	ON_BN_CLICKED(IDC_FDSR_CKSENDER, OnFdsrCksender)
	ON_BN_CLICKED(IDC_FDSR_FIND, OnFdsrFind)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFindRepair message handlers

int CFindRepair::DoModal() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DoModal();
}

BOOL CFindRepair::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	m_pDatabase->Close();
	delete m_pDatabase;
	m_pDatabase=NULL;
	return CDialog::DestroyWindow();
}

BOOL CFindRepair::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_CtrlList.SetExtendedStyle(LVS_EX_GRIDLINES); 
	//连接数据库
    m_pDatabase=new CDaoDatabase;
	try{
		m_pDatabase->Open("FixedAssets");
        m_pRecordset=new CDaoRecordset(m_pDatabase);
	}
	catch(CDaoException *e)
	{
		e->ReportError();
		delete m_pDatabase;
		m_pDatabase=NULL;
		e->Delete();
	}	
	if(!m_pDatabase->IsOpen()) return 0;
	if(!m_pRecordset) return 0;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	CString strSelect;
	try
	{   
		// 资产类别
		strSelect = _T("Select 资产类别ID,资产类别 From 资产类别");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaSort.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saSort.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
        
        strSelect = _T("Select DISTINCT 送修人 From 维修资产");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBSender.AddString(CCrack::strVARIANT(var));
            m_pRecordset->MoveNext();
		} 
	    m_pRecordset->Close();

        strSelect = _T("Select DISTINCT 资产名称 From 资产信息");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBName.AddString(CCrack::strVARIANT(var));
		    m_pRecordset->MoveNext();
	    }
	    m_pRecordset->Close();

	    strSelect = _T("Select DISTINCT 资产编号 From 资产信息");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBAssetID.AddString(CCrack::strVARIANT(var));
            m_pRecordset->MoveNext();
	    }
	    m_pRecordset->Close();
	
	    strSelect = _T("Select DISTINCT 型号 From 资产信息");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBType.AddString(CCrack::strVARIANT(var));
		    m_pRecordset->MoveNext();
	    }
	    m_pRecordset->Close();
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return 0;
	}
	int nIndex,i;
	for(i=0;i<m_saSort.GetSize();i++)  //初始化类别
	{
	   nIndex =m_CtrlCBSort.AddString(m_saSort.GetAt(i));
	   m_CtrlCBSort.SetItemData(nIndex, m_uaSort.GetAt(i));
	} 
	
	

	strSelect=_T("Select * From 维修资产");
	Refresh(strSelect);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CFindRepair::Refresh(CString strSelect)//刷新
{
    m_strTableName = _T("维修资产");
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	//清空list控件
	m_CtrlList.DeleteAllItems();
	while(m_CtrlList.DeleteColumn(0));
	CDaoFieldInfo fieldInfo;
	int nFields;

	CDaoTableDef td(m_pDatabase);
	try
	{
		td.Open(m_strTableName);
		nFields = td.GetFieldCount();
		int nWidth;
		for (int j=0; j < nFields; j++)
		{
			td.GetFieldInfo(j,fieldInfo);
			nWidth = m_CtrlList.GetStringWidth(fieldInfo.m_strName) + 15;
			if(j>=2)
			  m_CtrlList.InsertColumn(j+2,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
			else
			  m_CtrlList.InsertColumn(j,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
		}
		nWidth=100;
		m_CtrlList.InsertColumn(2,"资产编号", LVCFMT_LEFT, nWidth);
		m_CtrlList.InsertColumn(3,"资产名称", LVCFMT_LEFT, nWidth);
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return;
	}
	td.Close();

	int nItem = 0,i;
	try
	{
		CString select;
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
		    //判断送修日期是否在用户规定的时间内
            if(m_CKDate)   //送修日期
			{
	           if(m_Date1>m_Date2)
			   { 
	               CTime temp;
		           temp=m_Date1;m_Date1=m_Date2;m_Date2=temp;
			   } 
			   var = m_pRecordset->GetFieldValue(6);
	           CString year,month,day,str;
			   str=CCrack::strVARIANT(var);
			   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 time(atoi(year),atoi(month),atoi(day),m_Date1.GetHour(),m_Date1.GetMinute(),m_Date1.GetSecond());
	           if(time<m_Date1||time>m_Date2) 
			   {
			      m_pRecordset->MoveNext();
			      continue;
			   }
			}
			var = m_pRecordset->GetFieldValue(12);
			if(CCrack::strVARIANT(var)=="TRUE") 
			{   
				m_pRecordset->MoveNext();
				continue;
			}

			var = m_pRecordset->GetFieldValue(0);
			m_CtrlList.InsertItem(nItem,CCrack::strVARIANT(var));
			for (i=0; i < nFields; i++)
			{
				var = m_pRecordset->GetFieldValue(i);
				if(i>=2)
				{
				    m_CtrlList.SetItemText( nItem,i+2,CCrack::strVARIANT(var));
				}
				if(i==1)
                    m_CtrlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
			}
            CDaoRecordset *m_pSet;
			m_pSet=new CDaoRecordset(m_pDatabase);
			var = m_pRecordset->GetFieldValue(1);
			select.Format("select 资产编号,资产名称 from 资产信息 where 资产ID=%d",atoi(CCrack::strVARIANT(var)));
		 try{   
			m_pSet->Open(dbOpenDynaset,select);
			var = m_pSet->GetFieldValue(0);
            m_CtrlList.SetItemText( nItem,2,CCrack::strVARIANT(var));
			var = m_pSet->GetFieldValue(1);
            m_CtrlList.SetItemText( nItem,3,CCrack::strVARIANT(var));
            m_pSet->Close();
			}  
	       catch(CDaoException* e){
		       m_CtrlList.SetItemText( nItem,2,"该项已删除");
			   m_CtrlList.SetItemText( nItem,3,"该项已删除");
		       e->Delete();}
			m_pRecordset->MoveNext();
			nItem++;
		}
	} 
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return;
	}

} 

void CFindRepair::OnFdsrCkdate() 
{
   	UpdateData(1);
	if(!m_CKDate)
    {
		m_Date1=CTime::GetCurrentTime();
        m_Date2=CTime::GetCurrentTime();
        UpdateData(0);
        (CComboBox*)GetDlgItem(IDC_FDSR_DATE1)->EnableWindow(0);
		(CComboBox*)GetDlgItem(IDC_FDSR_DATE2)->EnableWindow(0);
	}
	else
	{
	    (CComboBox*)GetDlgItem(IDC_FDSR_DATE1)->EnableWindow(1);
		(CComboBox*)GetDlgItem(IDC_FDSR_DATE2)->EnableWindow(1);
	}
}

void CFindRepair::OnFdsrCkname() 
{
	// TODO: Add your control notification handler code here
	UpdateData(1);
	if(!m_CKName)
    {
		m_strName.Empty();
        UpdateData(0);
        (CComboBox*)GetDlgItem(IDC_FDSR_NAME)->EnableWindow(0);
	}
	else
	{
	    (CComboBox*)GetDlgItem(IDC_FDSR_NAME)->EnableWindow(1);	
	}
}

void CFindRepair::OnFdsrCksort() 
{
	// TODO: Add your control notification handler code here
	UpdateData(1);
	if(!m_CKSort)
    {
		m_CtrlCBSort.SetCurSel(-1);
        UpdateData(0);
        (CComboBox*)GetDlgItem(IDC_FDSR_SORT)->EnableWindow(0);
	}
	else
	{
	    (CComboBox*)GetDlgItem(IDC_FDSR_SORT)->EnableWindow(1);	
	}
}

void CFindRepair::OnFdsrCkassetid() 
{
	// TODO: Add your control notification handler code here
	UpdateData(1);
	if(!m_CKAssetID)
    {
		m_strAssetID.Empty();
        UpdateData(0);
        (CComboBox*)GetDlgItem(IDC_FDSR_ASSETID)->EnableWindow(0);
	}
	else
	{
	    (CComboBox*)GetDlgItem(IDC_FDSR_ASSETID)->EnableWindow(1);	
	}
}

void CFindRepair::OnFdsrCktype() 
{
	// TODO: Add your control notification handler code here
	UpdateData(1);
	if(!m_CKType)
    {
		m_strType.Empty();
        UpdateData(0);
        (CComboBox*)GetDlgItem(IDC_FDSR_TYPE)->EnableWindow(0);
	}
	else
	{
	    (CComboBox*)GetDlgItem(IDC_FDSR_TYPE)->EnableWindow(1);	
	}
}

void CFindRepair::OnFdsrCksender() 
{
	// TODO: Add your control notification handler code here
	UpdateData(1);
	if(!m_CKSender)
    {
		m_strType.Empty();
        UpdateData(0);
        (CComboBox*)GetDlgItem(IDC_FDSR_SENDER)->EnableWindow(0);
	}
	else
	{
	    (CComboBox*)GetDlgItem(IDC_FDSR_SENDER)->EnableWindow(1);	
	}
}

void CFindRepair::OnFdsrFind() 
{
    UpdateData(1);
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	CString sql,strSql="select * from 维修资产";
	if(m_CKSender)
	{
	   if(m_strSender.IsEmpty()==0)
	   {
	      sql.Format(" where 送修人 like '%s'",m_strSender);
          strSql+=sql;
		  flag1=1;
	   }
	}
	if(m_CKName||m_CKSort||m_CKType||m_CKAssetID)
	{
	   if(flag1)
         sql.Format(" and 资产ID in (select 资产ID from 资产信息");
	   else 
	     sql.Format(" where 资产ID in (select 资产ID from 资产信息");
       strSql+=sql;
	   if(m_CKName)
	   {  
           if(m_strName.IsEmpty()==0)
		   {
			   sql.Format( " where 资产名称= '%s'",m_strName );
			   flag2=1;
               strSql+=sql;
		   }

	   }
	   if(m_CKAssetID)
	   {
	       if(m_strAssetID.IsEmpty()==0)
		   {
		      if(flag2)
			    sql.Format( " and 资产编号 ='%s'",m_strAssetID );
			  else
                sql.Format( " where 资产编号= '%s'",m_strAssetID );
			  flag2=1;
              strSql+=sql;
		   }
	   }
	   if(m_CKType)
	   {
	       if(m_strType.IsEmpty()==0)
		   {
		      if(flag2)
			    sql.Format( " and 型号 = '%s'",m_strType );
			  else
                sql.Format( " where 型号= '%s'",m_strType );
			  flag2=1;
              strSql+=sql;
		   }
	   }
       if(m_CKSort)
	   {
	       if(m_CtrlCBSort.GetCurSel()!=-1)
		   {
		      if(flag2)
			    sql.Format( " and 资产类别ID=%d",m_CtrlCBSort.GetItemData(m_CtrlCBSort.GetCurSel()) );
			  else
                sql.Format( " where 资产类别ID=%d",m_CtrlCBSort.GetItemData(m_CtrlCBSort.GetCurSel()) );
			  flag2=1;
              strSql+=sql;
		   }
	   }
	   sql=")";
       strSql+=sql;
	}
	flag1=0;
	flag2=0;
	Refresh(strSql);	
}

⌨️ 快捷键说明

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