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

📄 dlgproductsinfo.cpp

📁 用VC编写的立体仓库的管理软件源程序和设计说明书。
💻 CPP
字号:
// DlgProductsInfo.cpp : implementation file
//

#include "stdafx.h"
#include "Manage_WH.h"
#include "DlgProductsInfo.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgProductsInfo dialog


CDlgProductsInfo::CDlgProductsInfo(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgProductsInfo::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgProductsInfo)
	m_code = _T("");
	m_name = _T("");
	m_price = _T("");
	m_remark = _T("");
	m_spec = _T("");
	m_weight = _T("");
	//}}AFX_DATA_INIT
	m_iAddOrChange = 0;
	m_hIcon = AfxGetApp()->LoadIcon(IDI_MYICON);
}


void CDlgProductsInfo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgProductsInfo)
	DDX_Control(pDX, IDCANCEL, m_ButExit);
	DDX_Control(pDX, IDC_UNDO, m_ButUndo);
	DDX_Control(pDX, IDC_SAVE, m_ButSave);
	DDX_Control(pDX, IDC_LIST, m_list);
	DDX_Control(pDX, IDC_DEL, m_ButDel);
	DDX_Control(pDX, IDC_CHANGE, m_ButEdit);
	DDX_Control(pDX, IDC_ADD, m_ButAdd);
	DDX_Text(pDX, IDC_CODE, m_code);
	DDV_MaxChars(pDX, m_code, 128);
	DDX_Text(pDX, IDC_NAME, m_name);
	DDV_MaxChars(pDX, m_name, 100);
	DDX_Text(pDX, IDC_PRICE, m_price);
	DDV_MaxChars(pDX, m_price, 10);
	DDX_Text(pDX, IDC_REMARK, m_remark);
	DDX_Text(pDX, IDC_SPEC, m_spec);
	DDV_MaxChars(pDX, m_spec, 10);
	DDX_Text(pDX, IDC_WEIGHT, m_weight);
	DDV_MaxChars(pDX, m_weight, 10);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgProductsInfo, CDialog)
	//{{AFX_MSG_MAP(CDlgProductsInfo)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_CHANGE, OnChange)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_BN_CLICKED(IDC_UNDO, OnUndo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgProductsInfo message handlers

BOOL CDlgProductsInfo::PreTranslateMessage(MSG* pMsg) 
{
	if (pMsg->message==WM_KEYDOWN && (pMsg->wParam==13 || pMsg->wParam==27))
		return TRUE;
	return CDialog::PreTranslateMessage(pMsg);
}

BOOL CDlgProductsInfo::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	SetIcon(m_hIcon,TRUE);

	m_list.InsertColumn(0,"商品编码",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(1,"商品名称",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(2,"商品颜色",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(3,"商品价格",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(4,"商品规格",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(5,"商品重量",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(6,"计量单位",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(7,"供货商",LVCFMT_LEFT,180,-1);
	m_list.InsertColumn(8,"录入日期",LVCFMT_LEFT,120,-1);
	m_list.InsertColumn(9,"更新日期",LVCFMT_LEFT,120,-1);
	m_list.InsertColumn(10,"备注信息",LVCFMT_LEFT,200,-1);
	m_list.SetExtendedStyle( LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT );

	gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_SUPPLIER)),"T_Suppliers","F_CompanyName");
	gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_COLOR)),"T_Colors","F_Color");
	gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_UNIT)),"T_Units","F_Unit");

	Refresh();
	
	return TRUE;
}

void CDlgProductsInfo::Refresh()
{
	CAdoConnection cn;
	if (cn.OpenUDLFile(gstrConSQLSer))
	{
		CAdoRecordSet rs;
		rs.SetAdoConnection(&cn);
		rs.Open("select F_Code,F_Name,F_Color,F_Price,F_Spec,F_Weight,F_Unit,F_Supplier,F_ReadInTime,F_UpdateTime,F_ProductMemo from T_Products",adCmdText);
		if (rs.GetRecordCount() != 0)
		{
			int row(0);
			CString sVal;
			rs.MoveFirst();
			m_list.DeleteAllItems();
			while (!rs.IsEOF())
			{
				row = m_list.InsertItem(row,"");
				for (int i=0;i<11;i++)
				{
					rs.GetCollect(i,sVal);
					m_list.SetItemText(row,i,sVal);
				}
				rs.MoveNext();
				row++;
			}
		}
		rs.Close();
		cn.Close();
	}
	else
	{
		MessageBox("数据库连接失败!","系统提示",MB_ICONSTOP|MB_OK);
	}
}

void CDlgProductsInfo::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	for (int i = 0; i < m_list.GetItemCount(); i++)
	{
		if (m_list.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED)
		{
			static_cast<CEdit *>(GetDlgItem(IDC_CODE))->SetWindowText(m_list.GetItemText(i,0));
			static_cast<CEdit *>(GetDlgItem(IDC_NAME))->SetWindowText(m_list.GetItemText(i,1));
			static_cast<CComboBox *>(GetDlgItem(IDC_COLOR))->SetCurSel(static_cast<CComboBox *>(GetDlgItem(IDC_COLOR))->FindString(-1,m_list.GetItemText(i,2)));
			static_cast<CEdit *>(GetDlgItem(IDC_PRICE))->SetWindowText(m_list.GetItemText(i,3));
			static_cast<CEdit *>(GetDlgItem(IDC_SPEC))->SetWindowText(m_list.GetItemText(i,4));
			static_cast<CEdit *>(GetDlgItem(IDC_WEIGHT))->SetWindowText(m_list.GetItemText(i,5));
			static_cast<CComboBox *>(GetDlgItem(IDC_UNIT))->SetCurSel(static_cast<CComboBox *>(GetDlgItem(IDC_UNIT))->FindString(-1,m_list.GetItemText(i,6)));
			static_cast<CComboBox *>(GetDlgItem(IDC_SUPPLIER))->SetCurSel(static_cast<CComboBox *>(GetDlgItem(IDC_SUPPLIER))->FindString(-1,m_list.GetItemText(i,7)));
			static_cast<CEdit *>(GetDlgItem(IDC_REMARK))->SetWindowText(m_list.GetItemText(i,10));
			break;
		}
	}				
	*pResult = 0;
}

void CDlgProductsInfo::Enabled(BOOL bEnabled)
{
	m_list.EnableWindow(!bEnabled);

	static_cast<CEdit *>(GetDlgItem(IDC_CODE))->EnableWindow(bEnabled);
	static_cast<CEdit *>(GetDlgItem(IDC_NAME))->EnableWindow(bEnabled);
	static_cast<CComboBox *>(GetDlgItem(IDC_COLOR))->EnableWindow(bEnabled);
	static_cast<CEdit *>(GetDlgItem(IDC_PRICE))->EnableWindow(bEnabled);
	static_cast<CEdit *>(GetDlgItem(IDC_SPEC))->EnableWindow(bEnabled);
	static_cast<CEdit *>(GetDlgItem(IDC_WEIGHT))->EnableWindow(bEnabled);
	static_cast<CComboBox *>(GetDlgItem(IDC_UNIT))->EnableWindow(bEnabled);
	static_cast<CComboBox *>(GetDlgItem(IDC_SUPPLIER))->EnableWindow(bEnabled);
	static_cast<CEdit *>(GetDlgItem(IDC_REMARK))->EnableWindow(bEnabled);
	m_ButUndo.EnableWindow(bEnabled);
	m_ButSave.EnableWindow(bEnabled);
	m_ButExit.EnableWindow(!bEnabled);
	m_ButDel.EnableWindow(!bEnabled);
	m_ButEdit.EnableWindow(!bEnabled);
	m_ButAdd.EnableWindow(!bEnabled);
}

void CDlgProductsInfo::ClearFrom()
{
	static_cast<CEdit *>(GetDlgItem(IDC_CODE))->SetWindowText("");
	static_cast<CEdit *>(GetDlgItem(IDC_NAME))->SetWindowText("");
	static_cast<CComboBox *>(GetDlgItem(IDC_COLOR))->SetCurSel(-1);
	static_cast<CEdit *>(GetDlgItem(IDC_PRICE))->SetWindowText("");
	static_cast<CEdit *>(GetDlgItem(IDC_SPEC))->SetWindowText("");
	static_cast<CEdit *>(GetDlgItem(IDC_WEIGHT))->SetWindowText("");
	static_cast<CComboBox *>(GetDlgItem(IDC_UNIT))->SetCurSel(-1);
	static_cast<CComboBox *>(GetDlgItem(IDC_SUPPLIER))->SetCurSel(-1);
	static_cast<CEdit *>(GetDlgItem(IDC_REMARK))->SetWindowText("");
}

void CDlgProductsInfo::OnAdd() 
{
	ClearFrom();
	Enabled(true);
	static_cast<CEdit *>(GetDlgItem(IDC_CODE))->SetFocus();
	m_iAddOrChange = 1;	
}

void CDlgProductsInfo::OnChange() 
{
	UpdateData(TRUE);
	if (m_name.IsEmpty())
	{
		MessageBox("请在列表中选择要修改的商品!","系统提示",MB_ICONSTOP|MB_OK);
		return;
	}
	Enabled(true);
	static_cast<CEdit *>(GetDlgItem(IDC_CODE))->EnableWindow(false);
	static_cast<CEdit *>(GetDlgItem(IDC_NAME))->EnableWindow(false);	
	m_iAddOrChange = 2;	
}

void CDlgProductsInfo::OnDel() 
{
	UpdateData(TRUE);
	if (m_name.IsEmpty())
	{
		MessageBox("请在列表中选择要删除的商品!\n","系统提示",MB_ICONSTOP|MB_OK);
		return;
	}
	if (gstrPopedom == "普通用户")
	{
		MessageBox("对不起,您没有执行删除操作的权限!","系统提示",MB_ICONQUESTION|MB_OK);
		return;
	}

	if (MessageBox("是否删除["+m_name+"]的记录信息?","系统提示",MB_ICONINFORMATION|MB_YESNO) == IDNO)
		return;

	//判断当前库存中是否存在要删除的商品,不存在删除
	int iNowNum;
	CAdoConnection cn;
	if (cn.OpenUDLFile(gstrConSQLSer))
	{
		CAdoRecordSet  rs;
		rs.SetAdoConnection(&cn);
		rs.Open("select * from T_Stock where F_Name = '"+m_name+"'",adCmdText);
		rs.GetCollect("F_NowNum",iNowNum);
		rs.Close();

		if (iNowNum == 0)
		{
			cn.Execute("delete from T_Products where F_Name = '"+m_name+"'",adCmdText);
			cn.Execute("delete from T_Stock where F_Name = '"+m_name+"'",adCmdText);
			cn.Close();
			AddLog("删除商品["+m_name+"]的记录信息!");
			Enabled(false);
			ClearFrom();
			Refresh();
		}
		else
		{
			cn.Close();
			MessageBox("无法执行删除操作,当前"+m_name+"的库存数量不为零!","系统提示",MB_ICONSTOP|MB_OK);
		}
	}
	else
	{
		MessageBox("数据库连接失败!","系统提示",MB_ICONSTOP|MB_OK);
	}	
}

void CDlgProductsInfo::OnSave() 
{
	if(MessageBox("确定要保存此商品的信息吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;

	//取出文本框中的值
	UpdateData(TRUE);
	CAdoConnection cn;
	CAdoRecordSet  rs;
	int iType=0;
	CString sSQL,sColor,sUnit,sSupplier,sWarning,sReadInTime,sUpdateTime,sOperator;
	
	sOperator = gstrOperator;
	sUpdateTime = GetDate(1);
	static_cast<CComboBox *>(GetDlgItem(IDC_COLOR))->GetWindowText(sColor);
	static_cast<CComboBox *>(GetDlgItem(IDC_UNIT))->GetWindowText(sUnit);
	static_cast<CComboBox *>(GetDlgItem(IDC_SUPPLIER))->GetWindowText(sSupplier);

	if (m_code.IsEmpty())								sWarning = "商品编码不能为空,请输入!";
	else if (m_name.IsEmpty())							sWarning = "商品名称不能为空,请输入!";
	else if (sSupplier.IsEmpty())						sWarning = "供货商不能为空,请输入!";
	else if (m_iAddOrChange==1 && IsHave(m_name,m_code))sWarning = "该商品的信息已存在!";
	
	if (!sWarning.IsEmpty())
	{
		MessageBox(sWarning,"系统提示",MB_ICONSTOP|MB_OK);
		return;
	}

	switch (m_iAddOrChange)
	{
	case 1:
		iType = GetProductKind();
		sReadInTime = GetDate(1);
		sSQL.Format("INSERT INTO T_Products VALUES(%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",iType,m_code,m_name,sColor,m_price,m_spec,m_weight,sUnit,sSupplier,sReadInTime,sUpdateTime,sOperator,m_remark);
		break;
	case 2:
		sSQL = "UPDATE T_Products SET F_Color = '"+sColor+"',F_Price = '"+m_price+"',F_Spec = '"+m_spec+"',F_Weight = '"+m_weight+"',F_Unit = '"+sUnit+"',F_Supplier = '"+sSupplier+"',F_UpdateTime = '"+sUpdateTime+"',F_Operator = '"+sOperator+"',F_ProductMemo = '"+m_remark+"' WHERE F_Name = '"+m_name+"'";
		break;
	}
	
	if (cn.OpenUDLFile(gstrConSQLSer))
	{
		cn.Execute(sSQL,adCmdText);
		cn.Close();
		switch(m_iAddOrChange)
		{
		case 1:
			AddLog("添加商品["+m_name+"]的信息!");
			MessageBox("商品信息添加成功!","系统提示",MB_ICONINFORMATION|MB_OK);
			break;
		case 2:
			AddLog("修改商品["+m_name+"]的信息!");
			MessageBox("商品信息修改成功!","系统提示",MB_ICONINFORMATION|MB_OK);
		}
		Enabled(false);
		ClearFrom();
		Refresh();
	}
	else
	{
		MessageBox("数据库连接失败!","系统提示",MB_ICONSTOP|MB_OK);
	}	
}

BOOL CDlgProductsInfo::IsHave(const CString &sName, const CString &sCode)
{
	BOOL bHave;
	CAdoConnection cn;
	CAdoRecordSet  rs;
	cn.OpenUDLFile(gstrConSQLSer);
	rs.SetAdoConnection(&cn);
	rs.Open("select * from T_Products where F_Name = '"+sName+"' or F_Code = '"+sCode+"'",adCmdText);
	if (rs.GetRecordCount() != 0)
		bHave = true;
	else
		bHave = false;
	rs.Close();
	cn.Close();
	return bHave;
}

int CDlgProductsInfo::GetProductKind()
{
	int iKind;
	CAdoConnection cn;
	CAdoRecordSet  rs;
	cn.OpenUDLFile(gstrConSQLSer);
	rs.SetAdoConnection(&cn);
	rs.Open("T_Products",adCmdTable);
	if (rs.GetRecordCount() == 0)
	{
		iKind = 1;
	}
	else
	{
		rs.MoveLast();
		rs.GetCollect("F_Type",iKind);
		iKind++;
	}
	rs.Close();
	cn.Close();
	return iKind;
}

void CDlgProductsInfo::OnUndo() 
{
	ClearFrom();
	Enabled(false);
	Refresh();	
}

⌨️ 快捷键说明

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