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

📄 department.cpp

📁 基于VC+SQL SERVER环境开发的企业商品销售系统.完整的数据库和原代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Department.cpp : implementation file
//

#include "stdafx.h"
#include "Sale.h"
#include "Department.h"
#include "Affirm.h"

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

/////////////////////////////////////////////////////////////////////////////
// Department dialog


Department::Department(CWnd* pParent /*=NULL*/)
	: CDialog(Department::IDD, pParent)
{
	//{{AFX_DATA_INIT(Department)
	m_departmentID = _T("");
	m_departmentName = _T("");
	m_departmentManager = _T("");
	m_departmentPhone = _T("");
	m_departmentFunction = _T("");
	TreeCurrent="0";
	//}}AFX_DATA_INIT
}


void Department::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Department)
	DDX_Control(pDX, IDC_TREE1, m_departmentTree);
	DDX_Text(pDX, IDC_departmentID, m_departmentID);
	DDX_Text(pDX, IDC_departmentName, m_departmentName);
	DDX_Text(pDX, IDC_departmentManager, m_departmentManager);
	DDX_Text(pDX, IDC_departmentPhone, m_departmentPhone);
	DDX_Text(pDX, IDC_departmentFunction, m_departmentFunction);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Department, CDialog)
	//{{AFX_MSG_MAP(Department)
	ON_BN_CLICKED(IDC_addSameLevel, OnAddSameLevel)
	ON_BN_CLICKED(IDC_addChildLevel, OnAddChildLevel)
	ON_BN_CLICKED(IDC_modify, OnModify)
	ON_BN_CLICKED(IDC_delete, OnDelete)
	ON_BN_CLICKED(IDC_save, OnSave)
	ON_BN_CLICKED(IDC_BUTTON6, OnExit)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedDepartmentTree)
	ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickDepartmentTree)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Department message handlers

BOOL Department::OnInitDialog() 
{
	CDialog::OnInitDialog();
	flag=0;

	bt_delete=GetDlgItem(IDC_delete);
	bt_addSameLevel=GetDlgItem(IDC_addSameLevel);
	bt_addChildLevel=GetDlgItem(IDC_addChildLevel);
	bt_modify=GetDlgItem(IDC_modify);
	bt_save=GetDlgItem(IDC_save);

	tx_departmentID=GetDlgItem(IDC_departmentID);
	tx_departmentName=GetDlgItem(IDC_departmentName);
	tx_departmentManager=GetDlgItem(IDC_departmentManager);
	tx_departmentPhone=GetDlgItem(IDC_departmentPhone);
	tx_departmentFunction=GetDlgItem(IDC_departmentFunction);

	bt_delete->EnableWindow(false);
	bt_addSameLevel->EnableWindow(false);
	bt_addChildLevel->EnableWindow(false);
	bt_modify->EnableWindow(false);
	bt_save->EnableWindow(false);

	tx_departmentID->EnableWindow(false);
	tx_departmentName->EnableWindow(false);
	tx_departmentManager->EnableWindow(false);
	tx_departmentPhone->EnableWindow(false);
	tx_departmentFunction->EnableWindow(false);

	TVINSERTSTRUCT tvInsert;
	HTREEITEM hParent;
	tvInsert.hParent = NULL;
	tvInsert.hInsertAfter = NULL;
	tvInsert.item.mask = TVIF_TEXT;
//-----------------创建图象标签----------------------------
	m_TreeBootImage.Create ( IDB_TreeBootImage,20,1,ILC_COLOR8);
	m_departmentTree.SetImageList ( &m_TreeBootImage,TVSIL_NORMAL );
	m_departmentTree.SetTextColor (RGB(7,145,13));
//--------添加根目录----------------------------------------
	tvInsert.item.pszText = _T("all");
	hParent = m_departmentTree.InsertItem(&tvInsert);
	TreeAddSubTree("all","1",hParent);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void Department::TreeAddSubTree(CString ParTree, CString strChildTree, HTREEITEM hPartItem)
{
	if (strChildTree!="0")
	{
		//----------------使用到的变量进行定义----------
		_RecordsetPtr m_pTreeRecordset;    //用于创建一个查询记录集
		_variant_t vChild;

		HTREEITEM hCurrent;
	
		CString strSQL,strCurItem;

		strSQL="SELECT * FROM department where parentDepartmentID = '" ;		
		strSQL=strSQL+ParTree+"'";

		try
		{
			HRESULT hTRes;
			hTRes = m_pTreeRecordset.CreateInstance(_T("ADODB.Recordset"));
			if (SUCCEEDED(hTRes))
			{
				//----------------------------------------------------
				hTRes = m_pTreeRecordset->Open((LPTSTR)strSQL.GetBuffer(130),
					((CSaleApp*)AfxGetApp())->m_pConn.GetInterfacePtr(),
					adOpenDynamic,adLockPessimistic,adCmdText);
				if(SUCCEEDED(hTRes))
				{
					TRACE(_T("连接成功!\n"));
					
					//------------------------------------------
					m_pTreeRecordset->MoveFirst();
					if (!(m_pTreeRecordset->adoEOF))
					{
						
						while(!m_pTreeRecordset->adoEOF)
						{
							_variant_t vIndex=(long)0;
							hCurrent = m_departmentTree.InsertItem(
								((CSaleApp*)AfxGetApp())->GetStringFromVariant(m_pTreeRecordset->GetCollect("departmentName")),
								hPartItem, NULL);						
						
							if(TreeSumRecordCount(
								VariantToCString(m_pTreeRecordset->GetCollect(vIndex)))>0)
							{
								TreeAddSubTree(VariantToCString(
									m_pTreeRecordset->GetCollect(vIndex)),
									(VariantToCString(m_pTreeRecordset->GetCollect(vIndex))),
									hCurrent);
							}
				
							if (!(m_pTreeRecordset->adoEOF))
							{
								m_pTreeRecordset->MoveNext();
							}
						}		
					}
					//---------------------------------------
				}
			}
		}
		catch(_com_error e)///捕捉异常
		{
			CString errormessage;
			MessageBox("创建department1记录集失败!",ParTree+strChildTree);
		}
	}
}

//-----------------实现了VARIANT类型的值转换成CString类型--------------
CString Department::VariantToCString(VARIANT var)
{
	CString strValue;
	_variant_t var_t;
	_bstr_t bst_t;
	time_t cur_time;
	CTime time_value;
	COleCurrency var_currency;
	switch(var.vt)
	{
	case VT_EMPTY:strValue=_T("");break;
	case VT_UI1:strValue.Format ("%d",var.bVal);break;
	case VT_I2:strValue.Format ("%d",var.iVal );break;
	case VT_I4:strValue.Format ("%d",var.lVal);break;
	case VT_R4:strValue.Format ("%f",var.fltVal);break;
	case VT_R8:strValue.Format ("%f",var.dblVal);break;
	case VT_CY:
		var_currency=var;
		strValue=var_currency.Format(0);
		break;
	case VT_BSTR:
		var_t=var;
		bst_t=var_t;
		strValue.Format ("%s",(const char*)bst_t);
		break;
	case VT_NULL:strValue=_T("");break;
	case VT_DATE:
		cur_time=var.date;
		time_value=cur_time;
		strValue=time_value.Format("%A,%B%d,%Y");
		break;
	case VT_BOOL:strValue.Format ("%d",var.boolVal );break;
	default:strValue=_T("");break;
	}
	return strValue;
}

int Department::TreeSumRecordCount(CString strFieldValue)
{
	int Sum=0;
	_RecordsetPtr m_pRecordset;    //用于创建一个查询记录集
	_variant_t vChild;
	
	CString strSQL,strCurItem;
		//-----------------------------------------------
	strSQL="SELECT * FROM department where parentDepartmentID like '%" ;
	strSQL=strSQL+strFieldValue+"%'";
	try
	{
		HRESULT hTRes;
		hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
		if (SUCCEEDED(hTRes))
		{
		   hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(130),
			    _variant_t((IDispatch *)(((CSaleApp*)AfxGetApp())->m_pConn),true),
				 adOpenDynamic,adLockPessimistic,adCmdText);
	       if(SUCCEEDED(hTRes))
		   {
				TRACE(_T("连接成功!\n"));
				if(!m_pRecordset->BOF )
				{
					m_pRecordset->MoveFirst ();
					while(!m_pRecordset->adoEOF)
					{
						Sum+=1;
						m_pRecordset->MoveNext ();
					}
				}
			}
		}
	}
	catch(_com_error e)///捕捉异常
	{
		CString errormessage;
		MessageBox("求符合条件的记录总数出错!",strFieldValue);
	}
	return Sum;
}

void Department::OnAddSameLevel() 
{
	UpdateData(true);
	flag=11;
	TreeParentID=m_departmentID;
	int departmentID=((CSaleApp*)AfxGetApp())->m_pIDRecordset->GetCollect("departmentID").intVal;
	if(departmentID<10)
		m_departmentID.Format("department0000%d",departmentID);
	else if(departmentID<100&&departmentID>9)
		m_departmentID.Format("department000%d",departmentID);
	else if(departmentID<1000&&departmentID>99)
		m_departmentID.Format("department00%d",departmentID);

	CString str;
	str.Format("%d",departmentID+1);
	((CSaleApp*)AfxGetApp())->m_pIDRecordset->PutCollect("departmentID",_variant_t(str));
	((CSaleApp*)AfxGetApp())->m_pIDRecordset->Update();

	bt_addChildLevel->EnableWindow(false);
	bt_addSameLevel->EnableWindow(false);
	bt_modify->EnableWindow(false);
	bt_save->EnableWindow(true);

	tx_departmentID->EnableWindow(false);
	tx_departmentName->EnableWindow(true);
	tx_departmentManager->EnableWindow(true);
	tx_departmentPhone->EnableWindow(true);
	tx_departmentFunction->EnableWindow(true);

	UpdateData(false);
}

void Department::OnAddChildLevel() 
{
	UpdateData(true);
	flag=12;
	TreeCurrentID=m_departmentID;

	int departmentID=((CSaleApp*)AfxGetApp())->m_pIDRecordset->GetCollect("departmentID").intVal;
	if(departmentID<10)
		m_departmentID.Format("department0000%d",departmentID);
	else if(departmentID<100&&departmentID>9)
		m_departmentID.Format("department000%d",departmentID);

⌨️ 快捷键说明

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