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

📄 tabyp.cpp

📁 这是一个信息管理系统的源代码
💻 CPP
字号:
// TabYP.cpp: implementation of the CTabYP class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "a1.h"
#include "TabYP.h"

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

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

CTabYP::CTabYP(int e_n)
:CBaseTabCtrl(e_n)
{

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

	m_statics=NULL;
	m_edits=NULL;
	m_list=NULL;
	m_btn=NULL;

	CString sql;
	sql.Format("delete from  %s",m_sTempTables[0]);
	m_dataYp.m_runsql.RunSQL(sql);

	sql.Format("delete from  %s",m_sTempTables[1]);
	m_dataYp.m_runsql.RunSQL(sql);
}
//	ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)//NM_DBLCLK
//	ON_NOTIFY(NM_DBLCLK, ID_TABLIST, OnDblclkList)
BEGIN_MESSAGE_MAP(CTabYP, CBaseTabCtrl)
	//{{AFX_MSG_MAP(CTabYP)
	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()
/////////////////////////////////////////////////////////////////////////////
// CBaseTabCtrl message handlers
bool CTabYP::InitList()
{
	CBaseTabCtrl::InitList();
	CString sub_str;
	POSITION pos=this->m_dataYp.m_pstrlistFields_Names[1].GetHeadPosition();
	for(int i=0;i<17;i++)
	{
		m_list->InsertColumn(i,m_dataYp.m_pstrlistFields_Names[1].GetNext(pos));
	}

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

	m_list->Invalidate();
	
	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_dataYp.m_runsql.RunSQL(sql);

	m_check.SetCheck(0);
	sql.Format("INSERT INTO lsypinfo0 SELECT * FROM tabypinfo");
	m_dataYp.m_runsql.RunSQL(sql);
	sql.Format("select * from lsypinfo0");

	this->m_dataYp.SelectListCtrl(this->m_list);
	this->m_dataYp.RefreshListView(sql);
	m_iCurTable=0;

	return true;
}

bool CTabYP::InitValues()
{
	m_sFuhao[0]="=";
	m_sFuhao[1]=">";
	m_sFuhao[2]="<";
	m_sFuhao[3]=">=";
	m_sFuhao[4]="<=";
	m_sFuhao[5]="LIKE";

	m_sTable="tabypinfo";
	m_sTempTables[0]="lsypinfo0";
	m_sTempTables[1]="lsypinfo1";
	return true;
}
CString CTabYP::PrepareSQL()
{
	CString field_name,field,fuhao,value,inputtable,outputtable,sql;

	this->PrepareTables(outputtable,inputtable);
	m_combofields.GetWindowText(field_name);

	field=m_dataYp.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_dataYp.m_runsql.RunSQL(sql);
	
	sql.Format("select * from %s",inputtable);
	return sql;
}

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

	CBaseTabCtrl::OnBaoCunClick();
	baseinfo_state=NORMAL;
}

bool CTabYP::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_dataYp.m_pstrlistFields_Names[1].GetHeadPosition();
	for(int i=0;i<8;i++)
	{

		this->m_statics[i*2].Create(this->m_dataYp.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
		this->m_statics[i*2+1].Create(m_dataYp.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_dataYp.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;
}

bool CTabYP::InitSelf()
{
	SetItemSize(CSize(50,20));
	this->InsertItem(0,"药品信息查询");
	this->InsertItem(1,"药品信息管理");
	return true;
}

void CTabYP::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 CTabYP::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 CTabYP::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 CTabYP::OnShanChuClick()
{
	CString str;
	m_edits[0].GetWindowText(str);
	if(str=="")
	{
		MessageBox("请选择某条纪录");
		return;
	}
	if(MessageBox("确定要删除吗?删除后不可恢复,并且相关的库存信息也将被删除!","注意!",
		MB_YESNO)!=IDYES)
		return ;

	this->GetValuesFromEdits();
	if(this->m_dataYp.DeleteCurValue())
	CBaseTabCtrl::OnShanChuClick();			//进行界面操作
	else
	{
		MessageBox("删除失败!","错误");
		return;
	}
	this->m_dataYp.data=CDataYP::data_yp();//删除后的数据被初始为0;
}
void CTabYP::OnZengJiaClick()
{	
	CBaseTabCtrl::OnZengJiaClick();
	m_edits[0].SetWindowText(this->ChanShengID());
	m_edits[0].SetReadOnly();
	m_edits[1].SetFocus();

}

void CTabYP::SetTheBaseInfoFocus()
{
	HWND hwnd=::GetFocus();
	int iID=::GetDlgCtrlID(hwnd);

	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;
		}

}

bool CTabYP::GetValuesFromEdits()
{
		CString value;
		this->m_edits[0].GetWindowText(value);if(value=="")return false;this->m_dataYp.data.yp_id=value;
		this->m_edits[1].GetWindowText(value);this->m_dataYp.data.yp_name=value;
		this->m_edits[2].GetWindowText(value);this->m_dataYp.data.yp_jc=value;
		this->m_edits[3].GetWindowText(value);this->m_dataYp.data.jixing=value;
		this->m_edits[4].GetWindowText(value);this->m_dataYp.data.huowei=value;
		this->m_edits[5].GetWindowText(value);this->m_dataYp.data.chandi=value;
		this->m_edits[6].GetWindowText(value);this->m_dataYp.data.guige=value;
		this->m_edits[7].GetWindowText(value);this->m_dataYp.data.danwei=value;
		this->m_edits[8].GetWindowText(value);this->m_dataYp.data.shangbiao=value;
		this->m_edits[9].GetWindowText(value);this->m_dataYp.data.pizhunwenhao=value;

		this->m_edits[10].GetWindowText(value);this->m_dataYp.data.jinjia=atof(value);
		this->m_edits[11].GetWindowText(value);this->m_dataYp.data.pifajia=atof(value);
		this->m_edits[12].GetWindowText(value);this->m_dataYp.data.lingshoujia=atof(value);

		this->m_edits[13].GetWindowText(value);this->m_dataYp.data.pihao=value;
		this->m_edits[14].GetWindowText(value);this->m_dataYp.data.baozhiqi=value;
		this->m_edits[15].GetWindowText(value);this->m_dataYp.data.huoyuan=value;
		this->m_edits[16].GetWindowText(value);this->m_dataYp.data.beizhu=value;

		return true;
}

bool CTabYP::SetValuesIntoEdits()
{
CString value;
value=this->m_dataYp.data.yp_id;if(value=="")return false;	this->m_edits[0].SetWindowText(value);		
//this->m_edits[1].GetWindowText(value);this->m_dataYp.data.yp_name=value;
value=	this->m_dataYp.data.yp_name;						this->m_edits[1].SetWindowText(value);
value=	this->m_dataYp.data.yp_jc;							this->m_edits[2].SetWindowText(value);
value=	this->m_dataYp.data.jixing;							this->m_edits[3].SetWindowText(value);
value=	this->m_dataYp.data.huowei;							this->m_edits[4].SetWindowText(value);
value=	this->m_dataYp.data.chandi;							this->m_edits[5].SetWindowText(value);
value=	this->m_dataYp.data.guige;							this->m_edits[6].SetWindowText(value);
value=	this->m_dataYp.data.danwei;							this->m_edits[7].SetWindowText(value);
value=	this->m_dataYp.data.shangbiao;						this->m_edits[8].SetWindowText(value);
value=	this->m_dataYp.data.pizhunwenhao;					this->m_edits[9].SetWindowText(value);
value.Format("%0.2f",this->m_dataYp.data.jinjia);				this->m_edits[10].SetWindowText(value);
value.Format("%0.2f",this->m_dataYp.data.pifajia);				this->m_edits[11].SetWindowText(value);
value.Format("%0.2f",this->m_dataYp.data.lingshoujia);			this->m_edits[12].SetWindowText(value);
value=	this->m_dataYp.data.pihao;							this->m_edits[13].SetWindowText(value);
value=	this->m_dataYp.data.baozhiqi;						this->m_edits[14].SetWindowText(value);
value=	this->m_dataYp.data.huoyuan;						this->m_edits[15].SetWindowText(value);
value=	this->m_dataYp.data.beizhu;							this->m_edits[16].SetWindowText(value);

return true;
}



void CTabYP::OnChaXun()
{
this->m_dataYp.RefreshListView(this->PrepareSQL());
}

void CTabYP::SetKey(int mark)
{
	this->EnableBaseInfo(false);
	this->m_btn[3].EnableWindow(false);
	this->m_btn[4].EnableWindow(false);
	int i=3;
	while(i--)
	{
		m_btn[i].EnableWindow(true);
	}
	if(mark<0)return;
	for(i=0;i<17;i++)
	{
		this->m_edits[i].SetWindowText(this->m_list->GetItemText(mark,i));
	}
	this->GetValuesFromEdits();
}

bool CTabYP::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_dataYp.m_runsql.RunSQL(sql);
	return true;	
}
void CTabYP::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
	int i=this->GetCurSel();
	switch(i)
	{
	case 0:
		m_check.SetCheck(0);
		this->m_dataYp.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;
}

CString CTabYP::ChanShengID()
{
	CString sql;
	sql.Format("select yp_id from tabypinfo order by yp_id asc");//按升序排列

	if(!this->m_dataYp.m_runsql.CheckSQLResult(sql))
	{
		return CString("YP00001");
	}
	_variant_t value;int i;
	CString result;
	for(i=1;i<99999;i++)					//按顺序检索
	{
		value=m_dataYp.m_runsql.m_recordset->GetCollect("yp_id");
		CString str=(char*)(_bstr_t)value;
		CString sub=str.Mid(2);
		int number=atoi(sub);
		if(number!=i)
		{
			break;
		}
		m_dataYp.m_runsql.m_recordset->MoveNext();
		if(m_dataYp.m_runsql.m_recordset->adoEOF)
		{
			i++;
			break;
		}
	}
	if(i==99999)
	{
		MessageBox("药品数量大于99999了","错误");
		return CString("");
	}
//	CString s="%"+str+"d";
	result.Format("YP%05d",i);
	return result;

	
}

⌨️ 快捷键说明

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