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

📄 fvjjtg.cpp

📁 我自己整理的一些VC源代码
💻 CPP
字号:
// FvJJTG.cpp : implementation file
//

#include "stdafx.h"
#include "SellMan.h"
#include "FvJJTG.h"
#include "TabCS.h"
#include "TabDL.h"
#include "TabJJ.h"
#include "TabXC.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFvJJTG
extern _ConnectionPtr connection;
extern BOOL bConnected;

IMPLEMENT_DYNCREATE(CFvJJTG, CFormView)

CFvJJTG::CFvJJTG()
	: CFormView(CFvJJTG::IDD)
{
	//{{AFX_DATA_INIT(CFvJJTG)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CFvJJTG::~CFvJJTG()
{
}

void CFvJJTG::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFvJJTG)
	DDX_Control(pDX, IDC_BT_QUERY, m_bt_query);
	DDX_Control(pDX, IDC_ST_STOP, m_st_stop);
	DDX_Control(pDX, IDC_ST_START, m_st_start);
	DDX_Control(pDX, IDC_DA_STOP, m_date_stop);
	DDX_Control(pDX, IDC_DA_START, m_date_start);
	DDX_Control(pDX, IDC_BT_EXIT, m_bt_close);
	DDX_Control(pDX, IDC_BT_START, m_bt_calc);
	DDX_Control(pDX, IDC_LIST_TGJL, m_list_tgjl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFvJJTG, CFormView)
	//{{AFX_MSG_MAP(CFvJJTG)
	ON_BN_CLICKED(IDC_BT_START, OnBtStart)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_BT_QUERY, OnBtQuery)
	ON_BN_CLICKED(IDC_BT_EXIT, OnBtExit)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFvJJTG diagnostics

#ifdef _DEBUG
void CFvJJTG::AssertValid() const
{
	CFormView::AssertValid();
}

void CFvJJTG::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFvJJTG message handlers
void CFvJJTG::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();

	SYSTEMTIME tm;
	CString strTime;

	SetScrollSizes( MM_TEXT, CSize( 0, 0 ) );
	GetLocalTime( &tm );
	strTime.Format( "%4d-%02d-%02d", tm.wYear, tm.wMonth + 1, tm.wDay );
	m_date_start.SetTime( tm );
	m_date_stop.SetWindowText( strTime );
	m_bt_calc.SetIcon( IDI_NEW );
	m_bt_close.SetIcon( IDI_EXIT16 );
	m_bt_query.SetIcon( IDI_PRINT_PREVIEW );

	CImageList m_imgList;
	m_list_tgjl.InsertColumn( 0, "员工姓名", LVCFMT_LEFT, 100 );
	m_list_tgjl.InsertColumn( 1, "奖金金额", LVCFMT_RIGHT, 70 );
	m_list_tgjl.InsertColumn( 2, "计算比例(%)", LVCFMT_RIGHT, 100 );
	m_list_tgjl.InsertColumn( 3, "被介绍代理商姓名", LVCFMT_RIGHT, 150 );


	HICON hIcon;
	m_imgList.Create (16, 16, true, 2, 1);
	hIcon= AfxGetApp()->LoadIcon ( IDI_MAN );
	m_imgList.Add (hIcon);
	m_list_tgjl.SetImageList( &m_imgList, LVSIL_SMALL );
	m_list_tgjl.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  );
	m_list_tgjl.SetTextColor( RGB( 0, 0, 128 ) );
}

void CFvJJTG::CalTGJL()
{
 	CTabCS		tabcs;
	CTabDL		tabdl;
	CTabJJ		tabjj;
	char		szSQL[250]; 
	double		ddi, ddifirst, dxian, dxianfirst, dxiang, dxiangfirst, dTmp, djj;
	long		lTmp, lcount ,lmax;
	CString	    strTmp1, strMsg, strDateTime; 
	SYSTEMTIME  systm;
    
	GetLocalTime( &systm );
	strDateTime.Format( "%04d%02d%02d",systm.wYear, systm.wMonth, systm.wDay );
	try
	{
	
		//1.取出结算比例
		memset( szSQL, 0, 250 );
		sprintf( szSQL, "WHERE CSBMBM = 'JJ' AND CSZDMC = 'JJHSDW'" );
		tabcs.Open( szSQL ); 
		while( tabcs.IsOpen && !tabcs.IsEOF() )
		{
			lTmp = atol( tabcs.CSZDXH.GetValue() );
			switch( lTmp )
			{
			case 1:
				ddifirst = atof( tabcs.CSSZQZ.GetValue() );
				break;
			case 2:
				ddi = atof( tabcs.CSSZQZ.GetValue() );
				break;
			case 3:
				dxianfirst = atof( tabcs.CSSZQZ.GetValue() );
				break;
			case 4:
				dxian = atof( tabcs.CSSZQZ.GetValue() );
				break;
			case 5:
				dxiangfirst = atof( tabcs.CSSZQZ.GetValue() );
				break;
			case 6:
				dxiang = atof( tabcs.CSSZQZ.GetValue() );
				break;
			}
			tabcs.MoveNext();
		}
			//2.读出未计算的推广人员信息
		memset( szSQL, 0, 250 );
		sprintf( szSQL, "WHERE DLJLZT = 1 " );
		tabdl.Open( szSQL );
		lcount = getCount();
		dlgpro.Create(IDD_PR, this);
		dlgpro.Open( lcount, "正准备开始计算推广员的奖励----" );
		lcount = 0;
		
		connection->BeginTrans();
		while( tabdl.IsOpen() && !tabdl.IsEOF() )
		{
			
			lcount++;
			lTmp = IsFirst( tabdl.DLTJRH.GetValue() );
			strTmp1 = tabdl.DLDLJB.GetValue();
			strMsg.Format( "正在计算[%s]推荐[%s]推荐费", tabdl.DLTJRH.GetValue(), tabdl.DLDLID.GetValue() );
			dlgpro.SetProgressMessage( strMsg, lcount );
			switch( lTmp )
			{
			case 0:
				if (strTmp1.Compare( "1" ))
					dTmp = ddifirst;
				else if (strTmp1.Compare( "2" ))
					dTmp = dxianfirst;
				else
					dTmp = dxiangfirst;
				break;
			case 1:
				if (strTmp1.Compare( "1" ))
					dTmp = ddi;
				else if (strTmp1.Compare( "2" ))
					dTmp = dxian;
				else
					dTmp = dxiang;
				break;
			}
			if ( lTmp == 2 ) continue;
			memset( szSQL, 0, 250 ); 
			sprintf( szSQL, "%s", tabdl.DLJHJE.GetValue()); 
			djj = dTmp*atof(szSQL);
			tabjj.JJYGBH.strValue = tabdl.DLTJRH.GetValue();
			strTmp1.Format( "%.2f", djj );
			tabjj.JJFFJE.strValue = strTmp1;
			tabjj.JJJJRX.strValue = "5";
			strTmp1.Format( "%.f", dTmp );
			tabjj.JJHSDW.strValue = strTmp1;
			tabjj.JJJLZT.strValue = "1";
			tabjj.JJJSDL.strValue = tabdl.DLDLID.GetValue();
			tabjj.JJJSQR.strValue = tabdl.DLJRRQ.GetValue();
			tabjj.JJJSJR.strValue = tabdl.DLJRRQ.GetValue();
			tabjj.JJFFRQ.strValue = strDateTime;

			lmax = GetMaxCount();
			if ( lmax > 0 )
			{
				strTmp1.Format( "%ld", lmax );
				tabjj.JJLSID.strValue = strTmp1;
				tabjj.AppendRecord();
				tabdl.DLJLZT.strValue = "2"; 
				tabdl.UpdateRecord();
			}
			else
				AfxMessageBox("当前记录计算不成功");
			tabdl.MoveNext();
		}
	
		dlgpro.Close( "计算完毕" );	
		connection->CommitTrans();
		
	}
	catch( _com_error &e )
	{
		connection->RollbackTrans();
		dlgpro.Close( "计算中断" );
		AfxMessageBox( e.ErrorMessage() );
	}

}
/**************************************
	0----首次
	1----不是首次
	2----读不出该信息
****************************************/
long CFvJJTG::IsFirst(CString strDLTJRH)
{
	CTabDL tabdl;
	char   szSQL[250];
	_RecordsetPtr recordset;
	HRESULT hr;
	Fields * fields = NULL;
	VARIANT var_value;
	CString strTmp;
	long   lreturn;
	
	memset( szSQL, 0, 250 );
	sprintf( szSQL,"SELECT COUNT( DLTJRH ) FROM DL WHERE DLJLZT =2 AND DLTJRH = '%s'", strDLTJRH );
	try
	{
		hr = recordset.CreateInstance( _uuidof( Recordset ) );
		if( SUCCEEDED(hr) )
		{
			_bstr_t query( szSQL );
			hr = recordset->Open( query, _variant_t((IDispatch*)connection, true), 
				adOpenDynamic, adLockOptimistic, adCmdText );
			if( SUCCEEDED(hr) )
			{
				recordset->get_Fields( &fields );
				fields->Item[ (long)0 ]->get_Value( &var_value );
				strTmp = VariantToString( var_value );
				if (!strTmp.GetLength())
				{
					lreturn = 2;
				}
				else if( !strTmp.Compare("0"))
				{
					lreturn = 0;
				}
				else
				{
					lreturn = 1;
				}
			}
		}
	}
	catch( _com_error &e )
	{
		AfxMessageBox( e.ErrorMessage() );
		lreturn = 2;
	}
	catch( ... )
	{
		lreturn = 2;
	}
	return lreturn;
}

long CFvJJTG::getCount()
{
	
	char   szSQL[250];
	_RecordsetPtr recordset;
	HRESULT hr;
	Fields * fields = NULL;
	VARIANT var_value;
	CString strTmp;
	long   lreturn;
	
	memset( szSQL, 0, 250 );
	sprintf( szSQL,"SELECT COUNT( DLTJRH ) FROM DL WHERE DLJLZT = 1 ");
	try
	{
		hr = recordset.CreateInstance( _uuidof( Recordset ) );
		if( SUCCEEDED(hr) )
		{
			_bstr_t query( szSQL );
			hr = recordset->Open( query, _variant_t((IDispatch*)connection, true), 
				adOpenDynamic, adLockOptimistic, adCmdText );
			if( SUCCEEDED(hr) )
			{
				recordset->get_Fields( &fields );
				fields->Item[ (long)0 ]->get_Value( &var_value );
				strTmp = VariantToString( var_value );
				memset( szSQL, 0, 250 );
				sprintf( szSQL, "%s", strTmp );
				lreturn = atol( szSQL );
			}
		}
	}
	catch( _com_error &e )
	{
		AfxMessageBox( e.ErrorMessage() );
		lreturn = -1;
	}
	catch( ... )
	{
		lreturn = -1;
	}
	return lreturn;
}

void CFvJJTG::OnBtStart() 
{
	// TODO: Add your control notification handler code here
	CalTGJL();
	Query();
}

long CFvJJTG::GetMaxCount()
{
	char   szSQL[250];
	_RecordsetPtr recordset;
	HRESULT hr;
	Fields * fields = NULL;
	VARIANT var_value;
	CString strTmp;
	long   lreturn;
	
	memset( szSQL, 0, 250 );
	sprintf( szSQL,"SELECT MAX( JJLSID ) + 1 FROM JJ ");
	try
	{
		hr = recordset.CreateInstance( _uuidof( Recordset ) );
		if( SUCCEEDED(hr) )
		{
			_bstr_t query( szSQL );
			hr = recordset->Open( query, _variant_t((IDispatch*)connection, true), 
				adOpenDynamic, adLockOptimistic, adCmdText );
			if( SUCCEEDED(hr) )
			{
				recordset->get_Fields( &fields );
				fields->Item[ (long)0 ]->get_Value( &var_value );
				strTmp = VariantToString( var_value );
				if ( !strTmp.GetLength() ) 
				{
					lreturn = 1;
				}
				else
				{
					memset( szSQL, 0, 250 );
					sprintf( szSQL, "%s", strTmp );
					lreturn = atol( szSQL );
				}
			}
		}
	}
	catch( _com_error &e )
	{
		AfxMessageBox( e.ErrorMessage() );
		lreturn = -1;
	}
	catch( ... )
	{
		lreturn = -1;
	}
	return lreturn;
}

void CFvJJTG::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	// TODO: Add your specialized code here and/or call the base class
	

}

void CFvJJTG::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	
	if( m_bt_calc.GetSafeHwnd() )
	{
		m_list_tgjl.SetWindowPos( 0, 0, 30, cx, cy - 75, SWP_NOZORDER );
		m_st_start.SetWindowPos( 0, 10, cy - 30, 15, 20, SWP_NOZORDER );
		m_date_start.SetWindowPos( 0, 35, cy - 35, 150, 20, SWP_NOZORDER );
		m_st_stop.SetWindowPos( 0, 190, cy - 30, 15, 20, SWP_NOZORDER );
		m_date_stop.SetWindowPos( 0, 215, cy - 35, 150, 20, SWP_NOZORDER );
		m_bt_calc.SetWindowPos( 0, 375, cy - 40, 100, 35, SWP_NOZORDER );
		m_bt_query.SetWindowPos( 0, 485, cy - 40, 100, 35, SWP_NOZORDER );
		m_bt_close.SetWindowPos( 0, 600, cy - 40, 100, 35, SWP_NOZORDER );
		
	}
	
}

void CFvJJTG::Query()
{
	CTabJJ		tabjj;
	CTabXC		tabxc;
	CTabDL      tabdl;
	CString		strStartDate, strStopDate;
	SYSTEMTIME  systime;
	char		szSQL[250];
	int         nindex;
	CString     strTmp;

	m_date_start.GetTime( &systime );
	strStartDate.Format( "%04d%02d%02d", systime.wYear, systime.wMonth, systime.wDay );
	m_date_stop.GetTime( &systime );
	strStopDate.Format( "%04d%02d%02d", systime.wYear, systime.wMonth, systime.wDay );
	memset( szSQL, 0, 250 );
	sprintf( szSQL, "WHERE JJJSQR >= '%s' AND JJJSQR <= '%s' AND JJJJRX = 5", 
		      strStartDate, strStopDate );
    try
	{	
		m_list_tgjl.DeleteAllItems();
		tabjj.Open( szSQL );
		nindex = 0;
		while( !tabjj.IsEOF() && tabjj.IsOpen() )
		{
			memset( szSQL, 0, 255 );
			sprintf( szSQL, "WHERE XCYGID = '%s'", tabjj.JJYGBH.GetValue() );
			tabxc.Open( szSQL );
			if ( tabxc.IsOpen() )
				m_list_tgjl.InsertItem( nindex, tabxc.XCYGMC.GetValue() );
			strTmp.Format( "%.2f", atof( tabjj.JJFFJE.GetValue().GetBuffer( 0 ) )/100 );
			m_list_tgjl.SetItemText( nindex, 1, strTmp  );
			m_list_tgjl.SetItemText( nindex, 2, tabjj.JJHSDW.GetValue() );
			sprintf( szSQL, "WHERE DLDLID = '%s'", tabjj.JJJSDL.GetValue() );
			tabdl.Open( szSQL );
			if ( tabdl.IsOpen() )
				m_list_tgjl.SetItemText( nindex, 3, tabdl.DLDLMC.GetValue() );
			nindex++;

			tabjj.MoveNext();
		}
	}
	catch( _com_error &e )
	{
		AfxMessageBox( e.ErrorMessage() );
		
	}
}

void CFvJJTG::OnBtQuery() 
{
	// TODO: Add your control notification handler code here
	Query();
}

void CFvJJTG::OnBtExit() 
{
	// TODO: Add your control notification handler code here
	GetParentFrame()->SendMessage( WM_CLOSE );
}

void CFvJJTG::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	AfxGetApp()->GetMainWnd()->SendMessage( WM_VIEW_ACTIVE, (WPARAM)this, (LPARAM)this );
	
	CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}

void CFvJJTG::OnDestroy() 
{
	CFormView::OnDestroy();
	
	AfxGetApp()->GetMainWnd()->SendMessage( WM_VIEW_CLOSE, (WPARAM)this, (LPARAM)this );
}

⌨️ 快捷键说明

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