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

📄 tabkh.cpp

📁 进销存管理系统介绍了企业的现状以及进销存数据管理系统的特点、功能和使用对象
💻 CPP
字号:
// TabKH.cpp: implementation of the CTabKH class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "a1.h"
#include "TabKH.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTabKH::CTabKH(int s_n,bool iskh)
:CBaseTabCtrl(s_n),m_dataKh(iskh)
{

}

CTabKH::~CTabKH()
{
	delete []	m_statics;
	delete []	m_edits;
	delete		m_list;
	delete []	m_btn;

	m_statics=NULL;
	m_edits=NULL;
	m_list=NULL;
	m_btn=NULL;
}
BEGIN_MESSAGE_MAP(CTabKH, CBaseTabCtrl)
	//{{AFX_MSG_MAP(CTabKH)
	ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)//NM_DBLCLK
	ON_BN_CLICKED(ID_BUTTONS_1+3,OnBaoCunClick)
	ON_BN_CLICKED(ID_BUTTONS_1,OnZengJiaClick)
	ON_BN_CLICKED(ID_BUTTONS_1+2,OnShanChuClick)
	ON_BN_CLICKED(ID_BUTTONS_1+1,OnXiuGaiClick)
	ON_BN_CLICKED(ID_BUTTONS_1+4,OnCancelClick)
	ON_BN_CLICKED(ID_BUTTONCHAXUN,OnChaXun)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CTabKH::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
	int i=this->GetCurSel();
	switch(i)
	{
	case 0:
		m_check.SetCheck(0);
		this->m_dataKh.RefreshListView(PrepareSQL());
		this->ShowBaseInfo(SW_HIDE);
		this->ShowListChaXun(SW_SHOW);
		break;
	case 1:
		this->ShowBaseInfo(SW_SHOW);
		this->ShowListChaXun(SW_HIDE);
		if(!this->baseinfo_state)
			this->SetKey(this->m_list->GetSelectionMark());
		break;
	}
	*pResult = 0;
}
void CTabKH::OnCancelClick()
{
	if(!this->SetValuesIntoEdits())
	{
		for(int i=0;i<mc_iNumber;i++)
		{
		this->m_edits[i].SetWindowText("");
		}
	}

	EnableBaseInfo(false);
	baseinfo_state=NORMAL;
	CBaseTabCtrl::OnCancelClick();
}
void CTabKH::OnXiuGaiClick()
{

	CString str;
	m_edits[0].GetWindowText(str);
	if(str=="")
	{
		MessageBox("请选择某条纪录");
		return;
	}
	CBaseTabCtrl::OnXiuGaiClick();
	m_edits[0].SetReadOnly();
	m_edits[1].SetFocus();
	m_edits[1].SetSel(0,-1);
}
void CTabKH::OnShanChuClick()
{	CString str;
	m_edits[0].GetWindowText(str);
	if(str=="")
	{
		MessageBox("请选择某条纪录");
		return;
	}
	
	if(MessageBox("确定要删除吗?删除后不可恢复,并且相关的库存信息也将被删除!","注意!",
		MB_YESNO)!=IDYES)
		return ;
	this->GetValuesFromEdits();
	if(!this->m_dataKh.DeleteCurValue())return;
	CBaseTabCtrl::OnShanChuClick();
	this->m_dataKh.data=CDataKH::data_kh();
}
void CTabKH::OnZengJiaClick()
{
	CBaseTabCtrl::OnZengJiaClick();
	CString str=(m_dataKh.m_bKh? ChanShengIDKH() : ChanShengIDGYS());

	m_edits[0].SetWindowText(str);
	m_edits[0].SetReadOnly();
	m_edits[1].SetFocus();
}
void CTabKH::OnChaXun()
{
this->m_dataKh.RefreshListView(this->PrepareSQL());

}
bool CTabKH::InitList()
{
	CBaseTabCtrl::InitList();
	CString sub_str;
	POSITION pos=this->m_dataKh.m_pstrlistFields_Names[1].GetHeadPosition();
	for(int i=0;i<this->mc_iNumber;i++)
	{
		m_list->InsertColumn(i,m_dataKh.m_pstrlistFields_Names[1].GetNext(pos));
	}

	for(i=0;i<this->mc_iNumber;i++)
		m_list->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);

	m_list->Invalidate();

if(m_dataKh.m_bKh)
{
	m_combofields.AddString("客户编号");
	m_combofields.AddString("客户名称");
	m_combofields.AddString("简称");
	m_combofields.AddString("地址");
	m_combofields.AddString("所在地区");
	m_combofields.SetCurSel(0);
}
else
{
	m_combofields.AddString("供应商编号");
	m_combofields.AddString("供应商名称");
	m_combofields.AddString("简称");
	m_combofields.AddString("地址");
	m_combofields.AddString("所在地区");
	m_combofields.SetCurSel(0);
}
	for(i=0;i<6;i++)
		m_combofuhao.AddString(m_sFuhao[i]);
	m_combofuhao.SetCurSel(5);
	
	state=STRINGQUERY;

	CString sql;
	sql.Format("delete from  %s",m_sTempTables[0]);
	m_dataKh.m_runsql.RunSQL(sql);
/*
	m_sTable="tabgys";
	m_sTempTables[0]="lsgys0";
	m_sTempTables[1]="lsgys1";
	*/
	m_check.SetCheck(0);
	sql.Format("INSERT INTO %s SELECT * FROM %s",m_sTempTables[0],m_sTable);
	m_dataKh.m_runsql.RunSQL(sql);
	sql.Format("select * from %s",m_sTempTables[0]);

	m_dataKh.SelectListCtrl(m_list);
	m_dataKh.RefreshListView(sql);

	m_iCurTable=0;
	return true;
}
bool CTabKH::InitSelf()
{
	CBaseTabCtrl::InitSelf();
	SetItemSize(CSize(50,20));
if(m_dataKh.m_bKh)
{
	CTabCtrl::InsertItem(0,"客户信息查询");
	CTabCtrl::InsertItem(1,"客户信息管理");
}
else
{
	CTabCtrl::InsertItem(0,"供应商信息查询");
	CTabCtrl::InsertItem(1,"供应商信息管理");

}
	return true;
}
bool CTabKH::InitValues()
{
	m_sFuhao[0]="=";
	m_sFuhao[1]=">";
	m_sFuhao[2]="<";
	m_sFuhao[3]=">=";
	m_sFuhao[4]="<=";
	m_sFuhao[5]="LIKE";
if(m_dataKh.m_bKh)
{
	m_sTable="tabkh";
	m_sTempTables[0]="lskh0";
	m_sTempTables[1]="lskh1";
}
else
{
	m_sTable="tabgys";
	m_sTempTables[0]="lsgys0";
	m_sTempTables[1]="lsgys1";
}
return true;
}

void CTabKH::OnBaoCunClick()
{
	CString value;
	this->GetValuesFromEdits();
	if(this->baseinfo_state==ZENGJIA)
	{
		if(!this->m_dataKh.InsertCurValue())
		{
			MessageBox("增加数据错误","错误");
			return;
		}
	}
	else if(this->baseinfo_state==XIUGAI)
	{
		if(!this->m_dataKh.UpdateCurValue())
		{
			MessageBox("修改数据错误","错误");
			return;
		}
	}
	else
		return;

	CBaseTabCtrl::OnBaoCunClick();
	baseinfo_state=NORMAL;
}
CString CTabKH::PrepareSQL()
{
	CString field_name,field,fuhao,value,inputtable,outputtable,sql;
	this->PrepareTables(outputtable,inputtable);
	m_combofields.GetWindowText(field_name);
	field=this->m_dataKh.GetFieldFromName(field_name);
	m_combofuhao.GetWindowText(fuhao);
	m_editvalue.GetWindowText(value);
	if(fuhao=="LIKE")value="%"+value+"%";
	sql.Format("INSERT INTO %s SELECT * FROM %s WHERE %s %s '%s'",inputtable,outputtable,field,fuhao,value);

	m_dataKh.m_runsql.RunSQL(sql);
	
	sql.Format("select * from %s",inputtable);
	return sql;
}
bool CTabKH::PrepareTables(CString &output, CString &input)
{
	int sel=m_check.GetCheck( );
	if(sel)
	{
		output=m_sTempTables[m_iCurTable];
		input=m_sTempTables[!m_iCurTable];
		m_iCurTable=!m_iCurTable;
	}
	else
	{
		output=m_sTable;
		input=m_sTempTables[m_iCurTable];
	}
	CString sql;
	sql.Format("delete from %s",input);
	this->m_dataKh.m_runsql.RunSQL(sql);
	return true;	
}
bool CTabKH::SetValuesIntoEdits()
{CString value;
value=this->m_dataKh.data.kh_id;if(value=="")return false;	this->m_edits[0].SetWindowText(value);	
value=	this->m_dataKh.data.kh_name;						this->m_edits[1].SetWindowText(value);
value=	this->m_dataKh.data.jc;							this->m_edits[2].SetWindowText(value);
value=	this->m_dataKh.data.address;							this->m_edits[3].SetWindowText(value);
value=	this->m_dataKh.data.area;							this->m_edits[4].SetWindowText(value);
value=	this->m_dataKh.data.mail;							this->m_edits[5].SetWindowText(value);
value=	this->m_dataKh.data.phone;							this->m_edits[6].SetWindowText(value);
value=	this->m_dataKh.data.fax;							this->m_edits[7].SetWindowText(value);
value=	this->m_dataKh.data.linkman;						this->m_edits[8].SetWindowText(value);
value=	this->m_dataKh.data.lm_phone;					this->m_edits[9].SetWindowText(value);
value=	this->m_dataKh.data.bank;							this->m_edits[10].SetWindowText(value);
value=	this->m_dataKh.data.accounts;						this->m_edits[11].SetWindowText(value);
value=	this->m_dataKh.data.taxpayer;						this->m_edits[12].SetWindowText(value);
value=	this->m_dataKh.data.email;							this->m_edits[13].SetWindowText(value);

return true;
}
bool CTabKH::GetValuesFromEdits()
{		CString value;
		this->m_edits[0].GetWindowText(value);if(value=="")return false;this->m_dataKh.data.kh_id=value;
		this->m_edits[1].GetWindowText(value);this->m_dataKh.data.kh_name=value;
		this->m_edits[2].GetWindowText(value);this->m_dataKh.data.jc=value;
		this->m_edits[3].GetWindowText(value);this->m_dataKh.data.address=value;
		this->m_edits[4].GetWindowText(value);this->m_dataKh.data.area=value;
		this->m_edits[5].GetWindowText(value);this->m_dataKh.data.mail=value;
		this->m_edits[6].GetWindowText(value);this->m_dataKh.data.phone=value;
		this->m_edits[7].GetWindowText(value);this->m_dataKh.data.fax=value;
		this->m_edits[8].GetWindowText(value);this->m_dataKh.data.linkman=value;
		this->m_edits[9].GetWindowText(value);this->m_dataKh.data.lm_phone=value;
		this->m_edits[10].GetWindowText(value);this->m_dataKh.data.bank=value;
		this->m_edits[11].GetWindowText(value);this->m_dataKh.data.accounts=value;
		this->m_edits[12].GetWindowText(value);this->m_dataKh.data.taxpayer=value;
		this->m_edits[13].GetWindowText(value);this->m_dataKh.data.email=value;


return true;
}

void CTabKH::SetTheBaseInfoFocus()
{	HWND hwnd=::GetFocus();
	int iID=::GetDlgCtrlID(hwnd);
//	enum{ID_EDITS_1=161};

//	enum{ID_BUTTONS_1=201};
	if(iID==160+mc_iNumber)
		goto jumpbtn;
	if(iID>160&&iID<160+mc_iNumber)
	{
			int pID=iID+1;
			if(this->GetDlgItem(pID)->IsWindowEnabled())
			{
				CEdit* a=(CEdit*)GetDlgItem(pID);
				a->SetFocus();
				a->SetSel(0,-1);
				return;
			}
	}	
	else return;
jumpbtn:

	for(int i=0;i<5;i++)
		if(this->m_btn[i].IsWindowEnabled())
		{
			m_btn[i].SetFocus();
			break;
		}

}
void CTabKH::SetTheFocus()
{
		HWND hwnd=::GetFocus();
	int iID=::GetDlgCtrlID(hwnd);
	const int theID=this->GetDlgCtrlID();

//	enum{ID_EDITS_1=161};

//	enum{ID_BUTTONS_1=201};
	if(iID==205)
	{
		this->SetFocus();return;
	}
	else if(iID==theID||(iID>200&&iID<206))
	{
		int pID=iID+1;
		if(iID==theID)pID=201;
		int n=206-pID;
		for(int i=0;i<n;i++)
		{
			if(this->GetDlgItem(pID)->IsWindowEnabled())
			{
				GetDlgItem(pID)->SetFocus();
				return;
			}
			pID++;
		}
		if(i==n)
		{
			this->SetFocus();
		}
	}
}
void CTabKH::SetKey(int mark)
{
	this->m_btn[3].EnableWindow(false);
	this->m_btn[4].EnableWindow(false);
	int i=3;
	while(i--)
	{
		m_btn[i].EnableWindow(true);
	}
	this->EnableBaseInfo(false);
	if(mark<0)return;
	for(i=0;i<mc_iNumber;i++)
	{
		this->m_edits[i].SetWindowText(this->m_list->GetItemText(mark,i));
	}
	this->GetValuesFromEdits();
//	this->EnableBaseInfo(false);
}

bool CTabKH::InitBaseInfo()
{
	TRACE("InitBaseInfo\n");
	CRect rect;
	this->GetClientRect(&rect);

	int height=25;
	int top=60;
	int wid=rect.Width()/4;

	CRect rect1,rect2,rect3,rect4;
	rect1.top=top;
	rect1.bottom=top+20;
	rect1.left=10;
	rect1.right=(long)rect.Width()/8;
	rect2.top=top;
	rect2.bottom=top+20;
	rect2.left=(long)rect.Width()/8+10;
	rect2.right=(long)rect.Width()/2-10;

	rect3.top=top;
	rect3.bottom=top+20;
	rect3.left=rect.Width()/2+10;
	rect3.right=(long)rect.Width()*5/8;
	rect4.top=top;
	rect4.bottom=top+20;
	rect4.left=(long)rect.Width()*5/8+10;
	rect4.right=(long)rect.Width()-10;

	POSITION pos=NULL;
	pos=this->m_dataKh.m_pstrlistFields_Names[1].GetHeadPosition();
	for(int i=0;i<7;i++)
	{

		this->m_statics[i*2].Create(this->m_dataKh.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
		this->m_statics[i*2+1].Create(m_dataKh.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect3,this,ID_STATICS_1+i*2+1);

		this->m_edits[i*2].Create(WS_CHILD|ES_AUTOHSCROLL|WS_BORDER,rect2,this,ID_EDITS_1+i*2);
		this->m_edits[i*2+1].Create(WS_CHILD|ES_AUTOHSCROLL|WS_BORDER,rect4,this,ID_EDITS_1+i*2+1);

		rect1.OffsetRect(0,height);
		rect2.OffsetRect(0,height);
		rect3.OffsetRect(0,height);
		rect4.OffsetRect(0,height);
	}
//		this->m_statics[i*2].Create(m_dataKh.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
//		this->m_edits[i*2].Create(WS_CHILD|ES_AUTOHSCROLL|WS_BORDER,rect2,this,ID_EDITS_1+i*2);
	baseinfo_state=NORMAL;
	return true;
}

CString CTabKH::ChanShengIDKH()
{
	CString sql;
	sql.Format("select kh_id from tabkh order by kh_id asc");

	if(!this->m_dataKh.m_runsql.CheckSQLResult(sql))
	{
		return CString("KH00001");
	}
	_variant_t value;int i;
	CString result;
	for(i=1;i<99999;i++)
	{
		value=m_dataKh.m_runsql.m_recordset->GetCollect("kh_id");
		CString str=(char*)(_bstr_t)value;
		CString sub=str.Mid(2);
		int number=atoi(sub);
		if(number!=i)
		{
			break;
		}
		m_dataKh.m_runsql.m_recordset->MoveNext();
		if(m_dataKh.m_runsql.m_recordset->adoEOF)
		{
			i++;
			break;
		}
	}
	if(i==99999)
	{
		MessageBox("员工数量大于99999了","错误");
		return CString("");
	}
	result.Format("KH%05d",i);
	return result;

}

CString CTabKH::ChanShengIDGYS()
{
	CString sql;
	sql.Format("select gys_id from tabgys order by gys_id asc");

	if(!this->m_dataKh.m_runsql.CheckSQLResult(sql))
	{
		return CString("GYS00001");
	}
	_variant_t value;int i;
	CString result;
	for(i=1;i<99999;i++)
	{
		value=m_dataKh.m_runsql.m_recordset->GetCollect("gys_id");
		CString str=(char*)(_bstr_t)value;
		CString sub=str.Mid(3);
		int number=atoi(sub);
		if(number!=i)
		{
			break;
		}
		m_dataKh.m_runsql.m_recordset->MoveNext();
		if(m_dataKh.m_runsql.m_recordset->adoEOF)
		{
			i++;
			break;
		}
	}
	if(i==99999)
	{
		MessageBox("员工数量大于99999了","错误");
		return CString("");
	}
	result.Format("GYS%05d",i);
	return result;

}

⌨️ 快捷键说明

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