?? associatordlg.cpp
字號:
// AssociatorDlg.cpp : 實現文件
//
#include "stdafx.h"
#include "BoardingSys.h"
#include "AssociatorDlg.h"
#include ".\associatordlg.h"
// CAssociatorDlg 對話框
IMPLEMENT_DYNAMIC(CAssociatorDlg, CDialog)
CAssociatorDlg::CAssociatorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAssociatorDlg::IDD, pParent)
, m_TicketID(0)
, m_Fi(_T(""))
, m_Date(_T(""))
, m_Agio(0)
, m_CurVoyage(0)
, m_AssoID(0)
, m_Voyage(0)
, m_Number(0)
, m_Type(_T(""))
, m_SeatType(_T(""))
, m_NameC(_T(""))
{
}
CAssociatorDlg::~CAssociatorDlg()
{
}
void CAssociatorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_TicketID);
DDX_Text(pDX, IDC_EDIT2, m_Fi);
DDX_Text(pDX, IDC_EDIT3, m_Date);
DDX_Text(pDX, IDC_EDIT4, m_Agio);
DDX_Text(pDX, IDC_EDIT8, m_CurVoyage);
DDX_Text(pDX, IDC_EDIT5, m_AssoID);
DDX_Text(pDX, IDC_EDIT6, m_Voyage);
DDX_Text(pDX, IDC_EDIT7, m_Number);
DDX_Text(pDX, IDC_EDIT9, m_Type);
DDX_Control(pDX, IDC_BUTTON4, m_BtAddAoyage);
DDX_Text(pDX, IDC_EDIT10, m_SeatType);
DDX_Text(pDX, IDC_EDIT11, m_NameC);
}
BEGIN_MESSAGE_MAP(CAssociatorDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
END_MESSAGE_MAP()
// CAssociatorDlg 消息處理程序
void CAssociatorDlg::SetTicketID( long id )
{
m_TicketID = id;
}
BOOL CAssociatorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加額外的初始化
if( m_TicketID != 0 )
{
GetVoyageInfo( m_TicketID );
}
m_BtAddAoyage.EnableWindow(false);
return TRUE; // return TRUE unless you set the focus to a control
// 異常: OCX 屬性頁應返回 FALSE
}
// 根據機票編號確定里程信息
bool CAssociatorDlg::GetVoyageInfo( long id )
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
CString sql,temp;
try
{
HRESULT hr;
// 創建Connection對象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 連接數據庫
hr = pConnection->Open(m_pDlg->m_DBData.Linkbuf.GetBuffer(),
m_pDlg->m_DBData.UserName.GetBuffer(),m_pDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("創建數據庫連接失敗","失敗",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "連接數據庫失敗","失敗",MB_OK);
return false;
}
try
{
// 生成Recordset實例
pRecordset.CreateInstance("ADODB.Recordset");
sql.Format("SELECT SaleTicketNote.ID, SaleTicketNote.FlightID, SaleTicketNote.Date, SaleTicketNote.Agio, SaleTicketNote.SeatType, FlightIDInfo.Distance FROM SaleTicketNote INNER JOIN FlightIDInfo ON SaleTicketNote.FlightID = FlightIDInfo.FlightID WHERE (((SaleTicketNote.ID)=%d) AND ((SaleTicketNote.FlightID)=[FlightIDInfo].[FlightID]) AND ((SaleTicketNote.Date)=[FlightIDInfo].[Date]))",id);
pRecordset->Open( sql.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"異常",MB_OK );
return false;
}
_variant_t value;
COleDateTime t;
bool b = true;
if( !pRecordset->adoEOF )
{
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_Date.Format("%d-%02d-%02d",t.GetYear(),t.GetMonth(),t.GetDay());
value = pRecordset->GetCollect("Agio");
if( value.vt != VT_NULL )
m_Agio = (float)value.dblVal;
else
m_Agio = 0;
value = pRecordset->GetCollect("SeatType");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_SeatType = temp.Trim();
value = pRecordset->GetCollect("Distance");
if( value.vt != VT_NULL )
m_CurVoyage = value.lVal;
else
m_CurVoyage = 0;
}
catch(...)
{
MessageBox("讀取記錄異常","異常",MB_OK );
b = false;
}
}
else
{
b = false;
}
// 計算里程
double m = 1.0;
if( m_SeatType == "頭等艙")
m = 1.5;
else if( m_SeatType == "公務艙" )
m = 1.3;
m_CurVoyage = (long)(((double)m_CurVoyage * m_Agio )*m);
UpdateData(false);
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失敗",MB_OK );
b = false;
}
return b;
}
void CAssociatorDlg::OnBnClickedButton2()
{
if( UpdateData() == false )
return;
if( m_AssoID == 0 )
{
MessageBox("請輸入會員ID號");
return;
}
if( FindAssoInfo( m_AssoID ) )
m_BtAddAoyage.EnableWindow(true);
}
// 檢索會員信息
bool CAssociatorDlg::FindAssoInfo( long id )
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
CString sql,temp;
try
{
HRESULT hr;
// 創建Connection對象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 連接數據庫
hr = pConnection->Open(m_pDlg->m_DBData.Linkbuf.GetBuffer(),
m_pDlg->m_DBData.UserName.GetBuffer(),m_pDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("創建數據庫連接失敗","失敗",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "連接數據庫失敗","失敗",MB_OK);
return false;
}
try
{
// 生成Recordset實例
pRecordset.CreateInstance("ADODB.Recordset");
sql.Format("SELECT AssociatorInfo.AssociatorID, AssociatorInfo.Voyage, AssociatorInfo.Number, AssociatorInfo.Type, PassagerInfo.Name FROM AssociatorInfo INNER JOIN PassagerInfo ON (AssociatorInfo.IDCard = PassagerInfo.IDCard) AND (AssociatorInfo.AssociatorID = PassagerInfo.AssociatorID) WHERE (((AssociatorInfo.AssociatorID)=%d) AND ((AssociatorInfo.IDCard)=[PassagerInfo].[IDCard]))",id);
pRecordset->Open( sql.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"異常",MB_OK );
return false;
}
_variant_t value;
COleDateTime t;
bool b = true;
if( !pRecordset->adoEOF )
{
try
{
value = pRecordset->GetCollect("Voyage");
if( value.vt != VT_NULL )
m_Voyage = value.lVal;
else
m_Voyage = 0;
value = pRecordset->GetCollect("Number");
if( value.vt != VT_NULL )
m_Number = value.lVal;
else
m_Number = 0;
value = pRecordset->GetCollect("Type");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_Type = temp;
value = pRecordset->GetCollect("Name");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_NameC = temp.Trim();
}
catch(...)
{
MessageBox("讀取記錄異常","異常",MB_OK );
b = false;
}
}
else
{
b = false;
}
UpdateData(false);
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失敗",MB_OK );
b = false;
}
return b;
}
// 添加里程
void CAssociatorDlg::OnBnClickedButton4()
{
if( AddVoyage() )
{
m_BtAddAoyage.EnableWindow(false);
MessageBox("里程添加成功");
}
else
{
MessageBox("里程添加失敗");
}
}
// 添加里程
bool CAssociatorDlg::AddVoyage()
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
CString sql,temp;
try
{
HRESULT hr;
// 創建Connection對象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 連接數據庫
hr = pConnection->Open(m_pDlg->m_DBData.Linkbuf.GetBuffer(),
m_pDlg->m_DBData.UserName.GetBuffer(),m_pDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("創建數據庫連接失敗","失敗",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "連接數據庫失敗","失敗",MB_OK);
return false;
}
try
{
// 生成Recordset實例
pRecordset.CreateInstance("ADODB.Recordset");
sql.Format("SELECT * FROM AssociatorInfo WHERE AssociatorID = %d",m_AssoID);
pRecordset->Open( sql.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"異常",MB_OK );
return false;
}
_variant_t value;
COleDateTime t;
bool b = true;
long num,v;
if( !pRecordset->adoEOF )
{
try
{
// 讀出當前的飛行次數和里程數
value = pRecordset->GetCollect("Number");
if( value.vt != VT_NULL )
num = value.lVal;
else
num = 0;
num++;
m_Number = num;
value = pRecordset->GetCollect("Voyage");
if( value.vt != VT_NULL )
v = value.lVal;
else
v = 0;
v += m_CurVoyage;
m_Voyage = v;
// 輸入新的飛行次數和里程數
pRecordset->PutCollect("Number",variant_t( num ) );
pRecordset->PutCollect("Voyage",variant_t( v ) );
pRecordset->Update();
}
catch(...)
{
MessageBox("讀取記錄異常","異常",MB_OK );
b = false;
}
}
else
{
b = false;
}
UpdateData(false);
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失敗",MB_OK );
b = false;
}
return b;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -