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

📄 rentdlg.cpp

📁 影碟出租系统~vc++进行数据库sql管理的经典程序..已调好
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		AfxMessageBox(e->ErrorMessage());
    }
 }
void CrentDlg::OnButtonQuery() 
{
    UpdateData(TRUE);
	_RecordsetPtr	pQueryRecordset;
    pQueryRecordset.CreateInstance(__uuidof(Recordset));
	CString strDateFrom,strDateTo,strDVD;
	CString strSQL,temp;
    m_comboDVD.GetWindowText(strDVD);

	if((!m_check_Date)&&(m_name.IsEmpty())&&(strDVD.IsEmpty()))
		strSQL="select 序号,车牌号, 车主姓名,收费站名称,收费日期,收费标准 from 收费信息,车主信息,收费站 where 收费信息.收费站ID=收费站.收费站ID and 收费信息.车主ID=车主信息.车主ID";
	else strSQL="select 序号,车牌号, 车主姓名,收费站名称,收费日期,收费标准 from 收费信息,车主信息,收费站 where 收费信息.收费站ID=收费站.收费站ID and 收费信息.车主ID=车主信息.车主ID and ";

	
	if(m_check_Date)
    {
	  CTime timeFrom,timeTo;
      m_DateFrom.GetTime(timeFrom);
	  m_DateTo.GetTime(timeTo);
	  m_DateFrom.GetWindowText(strDateFrom);
	  m_DateTo.GetWindowText(strDateTo);
	
	 if(timeFrom.GetMonth()>timeTo.GetMonth())
	 {
		MessageBox("Date set is wrong!");
		return;
	 }
	 else if(timeFrom.GetMonth()==timeTo.GetMonth())
	 {
		if(timeFrom.GetDay()>timeTo.GetDay())
		{
			MessageBox("Date set is wrong!");
		    return;
		}
	 }	 
	 
	 temp.Format("收费日期>='%s' and 收费日期<='%s'",strDateFrom,strDateTo);
	 strSQL+=temp;
	}    
 
	if(!m_name.IsEmpty())
	{
		if(m_check_Date)
		   temp.Format("and 车主姓名='%s'",m_name);
		else
			temp.Format("车主姓名='%s'",m_name);
		strSQL+=temp;
	}
	
	if(!strDVD.IsEmpty())
	{   
		if((!m_check_Date)&&(m_name.IsEmpty()))
			
			temp.Format("车牌号=%s",strDVD);
		else
		    temp.Format("and 车牌号=%s",strDVD);

		strSQL+=temp;
	}
   	try
	{  
		pQueryRecordset->Open(_variant_t(strSQL), 
			m_pConnection.GetInterfacePtr(),	
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
        return ;
	}  
  
   if((pQueryRecordset->adoBOF)&&(pQueryRecordset->adoEOF))
       MessageBox("there is no records!");
   else{
	_variant_t var;
	CString strValue;
	int curItem=0;
	
	m_rentinfoList.DeleteAllItems();
   try{	
	while(!pQueryRecordset->adoEOF)
	{  
		var = pQueryRecordset->GetCollect("序号");
		if(var.vt != VT_NULL)
			strValue = (LPCSTR)_bstr_t(var);
        m_rentinfoList.InsertItem(curItem,strValue);

		var = pQueryRecordset->GetCollect("车牌号");
		if(var.vt != VT_NULL)
			strValue = (LPCSTR)_bstr_t(var);
        m_rentinfoList.SetItemText(curItem,1,strValue);
		
		var = pQueryRecordset->GetCollect("车主姓名");
		if(var.vt != VT_NULL)
			strValue = (LPCSTR)_bstr_t(var);
        m_rentinfoList.SetItemText(curItem,2,strValue);
		
		var = pQueryRecordset->GetCollect("收费站名称");
		if(var.vt != VT_NULL)
			strValue = (LPCSTR)_bstr_t(var);
		m_rentinfoList.SetItemText(curItem,3,strValue);
	
		var = pQueryRecordset->GetCollect("收费日期");
		if(var.vt != VT_NULL)
			strValue = (LPCSTR)_bstr_t(var);
        m_rentinfoList.SetItemText(curItem,4,strValue);

		var = pQueryRecordset->GetCollect("收费标准");
		if(var.vt != VT_NULL)
			strValue = (LPCSTR)_bstr_t(var);

        m_rentinfoList.SetItemText(curItem,5,strValue);		
		pQueryRecordset->MoveNext();
		curItem++;

	}
   }
    catch(_com_error *e)
	{
	 AfxMessageBox(e->ErrorMessage());
	} 
   }
	pQueryRecordset->Close();
		pQueryRecordset=NULL;
}
//int CrentDlg::QueryDVDID(CString dvdName)
//{
//	_RecordsetPtr	pDVDIDRecordset;
//    pDVDIDRecordset.CreateInstance(__uuidof(Recordset));   
//	int value;
//	CString strSQL,strValue;
//	strSQL.Format("select DVDID from tbdvdinfo where DVDNAME='%s'",dvdName);
//	try
//	{	pDVDIDRecordset->Open(_variant_t(strSQL), 
//		                      m_pConnection.GetInterfacePtr(),	
//		                      adOpenDynamic,
//			                  adLockOptimistic,
//			                  adCmdText);
//	}
//	catch(_com_error *e)
//	{	AfxMessageBox(e->ErrorMessage());
//        value=-1;
//		return value;
//	}  
//	_variant_t var;
//    var = pDVDIDRecordset->GetCollect("DVDID");
//	if(var.vt != VT_NULL)
//	{	strValue = (LPCSTR)_bstr_t(var);
//		
//	    value=atoi(strValue);
//	}
//	else value=-1;
//
//	pDVDIDRecordset->Close();
//	pDVDIDRecordset=NULL;
//	return value;
//}

void CrentDlg::wm_lbuttondown()
{
	// TODO: 在此添加控件通知处理程序代码
	OnButtonQuery();
}

void CrentDlg::OnBnClickedCheck3()
{
	// TODO: 在此添加控件通知处理程序代码
OnCheckDate();
}


void CrentDlg::OnButtonRent()
{
	CRentDVDDlg dlg;
 //如果出租则更新LIST控件的数据

	//CRentDVDDlg.DoModal());
	
	if(IDOK == dlg.DoModal())
	//ShowWindow(IDD_DIALOG_RENT);
		UpdateList();
}
void CrentDlg::UpdateList()
{m_rentinfoList.DeleteAllItems();
InitListCtr();
}

//void CrentDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
//{
//	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
//	// TODO: 在此添加控件通知处理程序代码
//	*pResult = 0;
//}
void CrentDlg::AddDVDNum(CString strDVDID)
{
	_RecordsetPtr	pDVDRecordset;
    pDVDRecordset.CreateInstance(__uuidof(Recordset));	
	_bstr_t vSQL;
    vSQL="select * from tbdvdinfo where DVDID="+strDVDID;    
	try
	{
		pDVDRecordset->Open(vSQL,
			m_pConnection.GetInterfacePtr(),	 
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
		return;
	}  
	if((pDVDRecordset->adoBOF)&&(pDVDRecordset->adoEOF))
	{ MessageBox("error!");
	  pDVDRecordset->Close();
	  pDVDRecordset=NULL;
      return;
	}	
	_variant_t var;
	CString strValue;
	int dvdNum;
	try 
	{	
	   var=pDVDRecordset->GetCollect("Num");
	  if(var.vt != VT_NULL)
	  {
		strValue = (LPCSTR)_bstr_t(var);
		dvdNum=atoi(strValue);
		dvdNum+=1;
		strValue.Format("%d",dvdNum);
		pDVDRecordset->PutCollect("Num",_variant_t(strValue));
		pDVDRecordset->Update();
	  }
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}  
	pDVDRecordset->Close();
	pDVDRecordset=NULL;

}
void CrentDlg::DeleteRecord(CString ID,CString dvdName)
{
	HRESULT hr;
	_bstr_t vSQL;
	vSQL="delete from tbrentinfo where ID="+ID;
	_variant_t RecordsAffected;
	try
	{
		hr=m_pConnection->Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText);
		if(SUCCEEDED(hr))
		{
			//int dvdID=QueryDVDID(dvdName);
			//调用使用存储过程的函数
			int dvdID=QueryDVDIDSP(dvdName);
			CString strDVDID;
			strDVDID.Format("%d",dvdID);
			//修改tbDVDInfo表中Num字段的值
			AddDVDNum(strDVDID);   
		}
	}
	catch (_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
        return ;
	}  
}

void CrentDlg::DeleteRecordTran(CString ID)
{
	_bstr_t vSQL;
	_variant_t RecordsAffected;
    //pDVDRecordset.CreateInstance(__uuidof(Recordset));
	//获得影碟编号DVDID
	//strDVDID.Format("%d",dvdID);

	vSQL="delete from 收费信息 where 序号="+ID;
	try
	{	m_pConnection->BeginTrans();

		m_pConnection->Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText);
		m_pConnection->CommitTrans();
	}
	catch(_com_error *e)
	{
		m_pConnection->RollbackTrans();
		AfxMessageBox(e->ErrorMessage());
	}
}
int CrentDlg::QueryDVDIDSP(CString dvdName)
{    
	_CommandPtr pIDCommand;
	pIDCommand.CreateInstance(__uuidof(Command));
	_bstr_t storeproc("getIDbyName");
	_variant_t var;
	CString strValue;
	int IDvalue;
 try{	
	pIDCommand->ActiveConnection=m_pConnection;
	pIDCommand->CommandText=storeproc;
	pIDCommand->CommandType=adCmdStoredProc;
	pIDCommand->Parameters->Refresh();
    pIDCommand->Parameters->Item[_variant_t((long)1)]->Value=_variant_t((LPCTSTR)dvdName);
	_RecordsetPtr pIDRecordset;
	pIDRecordset.CreateInstance(__uuidof(Recordset));
	
    pIDRecordset=pIDCommand->Execute(NULL,NULL,adCmdStoredProc);
	if((pIDRecordset->adoBOF)&&(pIDRecordset->adoEOF))
	{
		MessageBox("error!");
		pIDRecordset->Close();
		pIDRecordset=NULL;
		return -1;
	}
	var=pIDRecordset->GetCollect("DVDID");
	pIDRecordset->Close();
	pIDRecordset=NULL;

 }
 catch(_com_error *e)
 {
	AfxMessageBox(e->ErrorMessage());
    return -1;
 } 

 if(var.vt != VT_NULL)
	{
	 strValue = (LPCSTR)_bstr_t(var);
	 IDvalue=atoi(strValue);
	 return IDvalue;
	}
   else return-1;
}   


CString CrentDlg::QueryDVDNameSP(CString dvdID)
{
	_CommandPtr pNameCommand;
	pNameCommand.CreateInstance(__uuidof(Command));
	_bstr_t storeproc("getNamebyID");
	_variant_t var;
	long ID=atol(dvdID);
	CString strValue="";
	try{	
		pNameCommand->ActiveConnection=m_pConnection;
		pNameCommand->CommandText=storeproc;
		pNameCommand->CommandType=adCmdStoredProc;
		pNameCommand->Parameters->Refresh();
		pNameCommand->Parameters->Item[_variant_t((long)1)]->Value=_variant_t(ID);
		_RecordsetPtr pNameRecordset;
		pNameRecordset.CreateInstance(__uuidof(Recordset));
		
		pNameRecordset=pNameCommand->Execute(NULL,NULL,adCmdStoredProc);
		if((pNameRecordset->adoBOF)&&(pNameRecordset->adoEOF))
		{
			MessageBox("error!");
			pNameRecordset->Close();
			pNameRecordset=NULL;
			return strValue;
		}
		var=pNameRecordset->GetCollect("DVDNAME");
		pNameRecordset->Close();
		pNameRecordset=NULL;
		
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
		return strValue;
	} 
	
	if(var.vt != VT_NULL)
	{
		strValue = (LPCSTR)_bstr_t(var);	
	}
	return strValue;
	
}
void CrentDlg::OnBnClickedCdelete()
{
	OnButtonDelete1();// TODO: 在此添加控件通知处理程序代码
}
void CrentDlg::OnButtonDelete1()
{
	// TODO: 在此添加控件通知处理程序代码
	//OnCancel();
	int sel=m_rentinfoList.GetSelectionMark();
	if(sel>=0 && AfxMessageBox("是否删除?",MB_YESNO) == IDYES)
	{
		CString rentid=m_rentinfoList.GetItemText(sel,0);
		//DeleteRecord(rentid,dvdName);
		DeleteRecordTran(rentid);
		m_rentinfoList.DeleteItem(sel);		
	}
	else if(sel<0) MessageBox("列表中无选中记录!");
}

⌨️ 快捷键说明

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