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

📄 flightplandlg.cpp

📁 使用Visual C++ .NET实现简单了一个票务管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				value = pRecordset->GetCollect("index");
				if( value.vt == VT_NULL )
				{
					pRecordset->MoveNext();
					continue;
				}
				else
					m_Index[i] = value.lVal;

				value = pRecordset->GetCollect("FlightID");
				if( value.vt != VT_NULL )
					temp = value.bstrVal;
				else
					temp = "";
				m_FiInfo.InsertItem( i, temp, 0 );

				value = pRecordset->GetCollect("Date");
				if( value.vt != VT_NULL )
				{
					t = value.date;
					temp.Format("%d-%02d-%02d",t.GetYear(),t.GetMonth(),t.GetDay());
				}
				else
					temp = "";
				m_FiInfo.SetItemText( i, 1, temp );
				value = pRecordset->GetCollect("TakeoffPlace");
				if( value.vt != VT_NULL )
					temp = value.bstrVal;
				else
					temp = "";
				m_FiInfo.SetItemText( i, 2, temp );
				value = pRecordset->GetCollect("LandingPlace");
				if( value.vt != VT_NULL )
					temp = value.bstrVal;
				else
					temp = "";
				m_FiInfo.SetItemText( i, 3, temp );
				value = pRecordset->GetCollect("TakeoffAir");
				if( value.vt != VT_NULL )
					temp = value.bstrVal;
				else
					temp = "";
				m_FiInfo.SetItemText( i, 4, temp );
				value = pRecordset->GetCollect("LandingAir");
				if( value.vt != VT_NULL )
					temp = value.bstrVal;
				else
					temp = "";
				m_FiInfo.SetItemText( i, 5, temp );
				value = pRecordset->GetCollect("TakeoffTime");
				if( value.vt != VT_NULL )
				{
					t = value.date;
					temp.Format("%02d:%02d",t.GetHour(),t.GetMinute());
				}
				else
					temp = "";
				m_FiInfo.SetItemText( i, 6, temp );
				value = pRecordset->GetCollect("LandingTime");
				if( value.vt != VT_NULL )
				{
					t = value.date;
					temp.Format("%02d:%02d",t.GetHour(),t.GetMinute());
				}
				else
					temp = "";
				m_FiInfo.SetItemText( i, 7, temp );

				value = pRecordset->GetCollect("Plane");
				if( value.vt != VT_NULL )
					temp = value.bstrVal;
				else
					temp = "";
				m_FiInfo.SetItemText( i, 8, temp );
				value = pRecordset->GetCollect("MaxPassengerNum");
				if( value.vt != VT_NULL )
					temp.Format("%d",value.lVal);
				else
					temp = "0";
				m_FiInfo.SetItemText( i, 9, temp );
				value = pRecordset->GetCollect("PassengerNum");
				if( value.vt != VT_NULL )
					temp.Format("%d",value.lVal);
				else
					temp = "0";
				m_FiInfo.SetItemText( i, 10, temp );
				value = pRecordset->GetCollect("Distance");
				if( value.vt != VT_NULL )
					temp.Format("%d",value.lVal);
				else
					temp = "0";
				m_FiInfo.SetItemText( i, 11, temp );

				pRecordset->MoveNext();
			}
		}
		catch(...)
		{
			MessageBox("读取记录异常","异常",MB_OK );
			pRecordset->Close();
			pConnection->Close();
			return false;
		}
	}

	try
	{
		pRecordset->Close();
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
	}
	return true;
}

void CFlightPlanDlg::OnBnClickedBtslt()
{
	CString temp;
	COleDateTime t;
	m_SltTime.GetTime(t);
	temp.Format("DateSerial(%d,%d,%d)",t.GetYear(),t.GetMonth(),t.GetDay() );

	m_Sql.Format("SELECT * FROM FlightIDInfo WHERE (Date = %s)",temp);

	LoadPlan();
}
// 得到当前选择项
int CFlightPlanDlg::GetCurSltCount()
{
	// 是否有选中项
	if(m_FiInfo.GetSelectedCount() <= 0)
		return -1;

	for(int i =0;i<m_FiInfo.GetItemCount();i++ )
	{
		if(m_FiInfo.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)//选中状态。。
		{
			return i;
		}
	}

	return -1;  // 没有找到选中项
}

void CFlightPlanDlg::OnLvnItemchangedFiinfolist(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;

	int k = GetCurSltCount();
	if( k == -1 )
		return;
	m_CurSlt = m_Index[k];
	GetCurSltData();
}
// 将当前记录添入界面
bool CFlightPlanDlg::GetCurSltData()
{
	_ConnectionPtr pConnection;
	_RecordsetPtr pRecordset;

	try
	{
		HRESULT hr;

		// 创建Connection对象
		hr = pConnection.CreateInstance("ADODB.Connection");
		if( SUCCEEDED( hr ) )
		{
			// 连接数据库
			hr = pConnection->Open(m_DBData.Linkbuf.GetBuffer(),
				m_DBData.UserName.GetBuffer(),m_DBData.PassWord.GetBuffer(),
				adModeUnknown);
		}
		else
		{
			MessageBox("创建数据库连接失败","失败",MB_OK);
			return false;
		}
	}
	catch( ... )
	{
		MessageBox( "连接数据库失败","失败",MB_OK);
		return false;
	}

	CString temp;
	try
	{
		pRecordset.CreateInstance("ADODB.Recordset");

		temp.Format("SELECT * FROM FlightIDInfo WHERE (index = %d)",m_CurSlt);
		pRecordset->Open(temp.GetBuffer(),
			_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
	}
	catch( _com_error * e )
	{
		pConnection->Close();
		MessageBox( e->ErrorMessage(),"异常",MB_OK );
		return false;
	}

	if( !pRecordset->adoEOF )
	{
		_variant_t value;
		COleDateTime t;
		try
		{
			value = pRecordset->GetCollect("FlightID");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_Fi = temp.Trim();

			value = pRecordset->GetCollect("Date");
			if( value.vt != VT_NULL )
				t = value.date;
			m_FlightDate.SetTime(t);

			value = pRecordset->GetCollect("TakeoffPlace");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_StartCity = temp;
			value = pRecordset->GetCollect("LandingPlace");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_EndCity = temp;
			value = pRecordset->GetCollect("TakeoffAir");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_StartAir = temp;
			value = pRecordset->GetCollect("LandingAir");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_EndAir = temp;
			value = pRecordset->GetCollect("TakeoffTime");
			if( value.vt != VT_NULL )
				t = value.date;
			m_StartTime.SetTime(t);
			value = pRecordset->GetCollect("LandingTime");
			if( value.vt != VT_NULL )
				t = value.date;
			m_EndTime.SetTime(t);

			value = pRecordset->GetCollect("Plane");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_An = temp;
			value = pRecordset->GetCollect("MaxPassengerNum");
			if( value.vt != VT_NULL )
				m_MaxPassenger = value.lVal;
			else
				m_MaxPassenger = 0;
			value = pRecordset->GetCollect("PassengerNum");
			if( value.vt != VT_NULL )
				m_Passanger = value.lVal;
			else
				m_Passanger = 0;
			value = pRecordset->GetCollect("Distance");
			if( value.vt != VT_NULL )
				m_Length = value.lVal;
			else
				m_Length = 0;
		}
		catch(...)
		{
			MessageBox("读取记录异常","异常",MB_OK );
			pRecordset->Close();
			pConnection->Close();
			return false;
		}
	}

	try
	{
		pRecordset->Close();
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
	}
	UpdateData(false);
	return true;
}
// 更新当前记录
bool CFlightPlanDlg::UpdateCurDate()
{
	_ConnectionPtr pConnection;
	_RecordsetPtr pRecordset;

	try
	{
		HRESULT hr;

		// 创建Connection对象
		hr = pConnection.CreateInstance("ADODB.Connection");
		if( SUCCEEDED( hr ) )
		{
			// 连接数据库
			hr = pConnection->Open(m_DBData.Linkbuf.GetBuffer(),
				m_DBData.UserName.GetBuffer(),m_DBData.PassWord.GetBuffer(),
				adModeUnknown);
		}
		else
		{
			MessageBox("创建数据库连接失败","失败",MB_OK);
			return false;
		}
	}
	catch( ... )
	{
		MessageBox( "连接数据库失败","失败",MB_OK);
		return false;
	}

	CString temp;
	try
	{
		// 生成Recordset实例
		pRecordset.CreateInstance("ADODB.Recordset");

		temp.Format("SELECT * FROM FlightIDInfo WHERE (index = %d)",m_CurSlt);
		pRecordset->Open(temp.GetBuffer(),
			_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
	}
	catch( _com_error * e )
	{
		pConnection->Close();
		MessageBox( e->ErrorMessage(),"异常",MB_OK );
		return false;
	}

	try
	{
		COleDateTime t,t1;

		pRecordset->Update();
		m_FlightDate.GetTime( t1 );
		t.SetDate(t1.GetYear(),t1.GetMonth(),t1.GetDay());
		pRecordset->PutCollect( "Date", _variant_t(t) );
		pRecordset->PutCollect( "FlightID", _variant_t(m_Fi) );
		// 起飞时间
		m_StartTime.GetTime(t1);
		t.SetTime(t1.GetHour(),t1.GetMinute(),0);
		pRecordset->PutCollect( "TakeoffTime", _variant_t(t) );
		// 降落时间
		m_EndTime.GetTime(t1);
		t.SetTime(t1.GetHour(),t1.GetMinute(),0);
		pRecordset->PutCollect( "LandingTime", _variant_t(t) );
		// 出发城市
		pRecordset->PutCollect( "TakeoffPlace", _variant_t(m_StartCity) );
		// 降落城市
		pRecordset->PutCollect( "LandingPlace", _variant_t(m_EndCity) );
		// 起飞机场
		pRecordset->PutCollect( "TakeoffAir", _variant_t(m_StartAir) );
		// 降落机场
		pRecordset->PutCollect( "LandingAir", _variant_t(m_EndAir) );

		pRecordset->PutCollect( "Plane", _variant_t(m_An) );
		pRecordset->PutCollect( "MaxPassengerNum", _variant_t(m_MaxPassenger) );
		pRecordset->PutCollect( "PassengerNum", _variant_t(m_Passanger) );
		pRecordset->PutCollect( "Distance", _variant_t(m_Length) );
		pRecordset->Update();
	}
	catch(...)
	{
		MessageBox("添加记录异常","异常",MB_OK );
		pRecordset->Close();
		pConnection->Close();
		return false;
	}

	try
	{
		pRecordset->Close();
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
	}
	return true;
}

void CFlightPlanDlg::OnBnClickedBtaddfi2()
{
	if( UpdateData() == false )
		return;
	if( UpdateCurDate() == false )
	{
		MessageBox("记录修改失败");
	}
	else
	{
		MessageBox("记录修改成功");
		LoadPlan();
	}
}
// 删除
void CFlightPlanDlg::OnBnClickedBtaddfi3()
{
	CString temp;
	temp.Format("DELETE FROM FlightIDInfo WHERE (index = %d)",m_CurSlt);
	if( ExecuteSQL(temp) == false )
	{
		MessageBox("删除记录失败");
	}
	else
	{
		MessageBox("删除记录成功");
		LoadPlan();
	}
}
// 执行SQL语句
bool CFlightPlanDlg::ExecuteSQL( CString sql )
{
	_ConnectionPtr pConnection;
	_RecordsetPtr pRecordset;

	try
	{
		HRESULT hr;

		// 创建Connection对象
		hr = pConnection.CreateInstance("ADODB.Connection");
		if( SUCCEEDED( hr ) )
		{
			// 连接数据库
			hr = pConnection->Open(m_DBData.Linkbuf.GetBuffer(),
				m_DBData.UserName.GetBuffer(),m_DBData.PassWord.GetBuffer(),
				adModeUnknown);
		}
		else
		{
			MessageBox("创建数据库连接失败","失败",MB_OK);
			return false;
		}
	}
	catch( ... )
	{
		MessageBox( "连接数据库失败","失败",MB_OK);
		return false;
	}
	try
	{
		_variant_t RecordsAffected;
		pConnection->Execute( sql.GetBuffer(), &RecordsAffected,adCmdText);
	}
	catch( _com_error *e)
	{
		MessageBox(e->ErrorMessage());
		return false;
	}

	try
	{
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
	}
	return true;
}

⌨️ 快捷键说明

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