?? takeouteditdlg.cpp
字號:
// TakeOutEditDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Stock.h"
#include "TakeOutEditDlg.h"
#include "COMDEF.H"
#include "Columns.h"
#include "Column.h"
#include "_recordset.h"
#include "ProInStore.h"
#include "TakeOut.h"
extern CUsers curUser;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTakeOutEditDlg dialog
CTakeOutEditDlg::CTakeOutEditDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTakeOutEditDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTakeOutEditDlg)
m_OptDate = _T("");
m_Pprice = _T("");
m_User = _T("");
m_Pnum1 = _T("");
m_Pnum = 0;
//}}AFX_DATA_INIT
}
void CTakeOutEditDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTakeOutEditDlg)
DDX_Control(pDX, IDC_TYPE_COMBO, m_Type);
DDX_Control(pDX, IDC_CLTTYPE_COMBO, m_CltType);
DDX_Control(pDX, IDC_ADODC1, m_adodc1);
DDX_Control(pDX, IDC_ADODC2, m_adodc2);
DDX_Control(pDX, IDC_ADODC3, m_adodc3);
DDX_Control(pDX, IDC_ADODC4, m_adodc4);
DDX_Control(pDX, IDC_CLIENT_DATACOMBO, m_Client);
DDX_Control(pDX, IDC_DATAGRID2, m_datagrid);
DDX_Text(pDX, IDC_OPTDATE_STATIC, m_OptDate);
DDX_Control(pDX, IDC_PNAME_DATACOMBO, m_Pname);
DDX_Text(pDX, IDC_PPRICE_STATIC, m_Pprice);
DDX_Control(pDX, IDC_PROTYPE1_DATACOMBO, m_ProType1);
DDX_Control(pDX, IDC_PROTYPE2_DATACOMBO, m_ProType2);
DDX_Control(pDX, IDC_STOREHOUSE_DATACOMBO, m_Storehouse);
DDX_Text(pDX, IDC_USER_STATIC, m_User);
DDX_Control(pDX, IDC_ADODC5, m_adodc5);
DDX_Control(pDX, IDC_ADODC6, m_adodc6);
DDX_Text(pDX, IDC_Pnum_STATIC, m_Pnum1);
DDX_Text(pDX, IDC_PNUM_EDIT, m_Pnum);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTakeOutEditDlg, CDialog)
//{{AFX_MSG_MAP(CTakeOutEditDlg)
ON_CBN_SELCHANGE(IDC_CLTTYPE_COMBO, OnSelchangeClttypeCombo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTakeOutEditDlg message handlers
void CTakeOutEditDlg::Refresh_Data()
{
CString cPid; //保存當前選擇的產品編號
if (m_Pname.GetBoundText() == "")
cPid = "0";
else
cPid = m_Pname.GetBoundText();
CString cSid; //保存當前選擇的倉庫編號
if (m_Storehouse.GetBoundText() == "")
cSid = "0";
else
cSid = m_Storehouse.GetBoundText();
//設置SELECT語句
CString cSource;
cSource = "SELECT SpId, Pprice As 產品入庫單價, Pnum As 庫存數量, MakeDate As 生產日期";
cSource += " FROM ProInStore WHERE Pid=" + cPid + " AND Sid=" + cSid;
//設置記錄源
m_adodc6.SetRecordSource(cSource);
m_adodc6.Refresh();
//設置表格列寬度
_variant_t vIndex;
vIndex = long(0);
m_datagrid.GetColumns().GetItem(vIndex).SetWidth(0);
vIndex = long(1);
m_datagrid.GetColumns().GetItem(vIndex).SetWidth(130);
vIndex = long(2);
m_datagrid.GetColumns().GetItem(vIndex).SetWidth(130);
vIndex = long(3);
m_datagrid.GetColumns().GetItem(vIndex).SetWidth(130);
}
BOOL CTakeOutEditDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_CltType.SetCurSel(0); //設置客戶類型
m_Type.SetCurSel(0); //設置出庫類型
CTime t = CTime::GetCurrentTime(); //讀取當前系統日期
m_User = curUser.GetUserName(); //自動設置操作人
m_OptDate = t.Format("%Y-%m-%d"); //自動設置操作時間
UpdateData(FALSE);
//刷新庫存產品表格
Refresh_Data();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTakeOutEditDlg::OnSelchangeClttypeCombo()
{
//設置查詢客戶的SELECT語句
CString cSource;
cSource = "SELECT * FROM Client";
//根據客戶類別設置查詢條件
if (m_CltType.GetCurSel() == 0)
cSource += " WHERE Ctype = 1";
else
cSource += " WHERE Ctype = 2";
m_Client.SetText(""); //清除客戶組合框的顯示內容
m_adodc1.SetRecordSource(cSource); //設置數據源,重新客戶列表
m_adodc1.Refresh();
}
BEGIN_EVENTSINK_MAP(CTakeOutEditDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTakeOutEditDlg)
ON_EVENT(CTakeOutEditDlg, IDC_PROTYPE1_DATACOMBO, -600 /* Click */, OnClickProtype1Datacombo, VTS_I2)
ON_EVENT(CTakeOutEditDlg, IDC_PROTYPE2_DATACOMBO, -600 /* Click */, OnClickProtype2Datacombo, VTS_I2)
ON_EVENT(CTakeOutEditDlg, IDC_PNAME_DATACOMBO, -600 /* Click */, OnClickPnameDatacombo, VTS_I2)
ON_EVENT(CTakeOutEditDlg, IDC_STOREHOUSE_DATACOMBO, -600 /* Click */, OnClickStorehouseDatacombo, VTS_I2)
ON_EVENT(CTakeOutEditDlg, IDC_DATAGRID2, -600 /* Click */, OnClickDatagrid2, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CTakeOutEditDlg::OnClickProtype1Datacombo(short Area)
{
//讀取一級產品類別編號
CString cUpperId;
cUpperId = m_ProType1.GetBoundText();
if (cUpperId == "")
cUpperId = "0";
//設置查詢二級產品類型的SELECT語句
CString cSource;
cSource = "SELECT * FROM ProType WHERE UpperId=" + cUpperId;
m_ProType2.SetText("");
//設置m_adodc3,從而刷新二級產品類別的列表
m_adodc3.SetRecordSource(cSource);
m_adodc3.Refresh();
//設置產品列表框,因為沒有選中二級產品類別,所以要清空產品列表框
cSource = "SELECT * FROM Product WHERE TypeId=0";
m_Pname.SetText("");
//設置m_adodc3,從而刷新二級產品類別的列表
m_adodc4.SetRecordSource(cSource);
m_adodc4.Refresh();
//刷新庫存產品表格
Refresh_Data();
}
void CTakeOutEditDlg::OnClickProtype2Datacombo(short Area)
{
// TODO: Add your control notification handler code here
//讀取二級產品類別編號
CString cTypeId;
cTypeId = m_ProType2.GetBoundText();
if (cTypeId == "")
cTypeId = "0";
//設置查詢二級產品類型的SELECT語句
CString cSource;
cSource = "SELECT * FROM Product WHERE TypeId=" + cTypeId;
m_Pname.SetText("");
//設置m_adodc3,從而刷新二級產品類別的列表
m_adodc4.SetRecordSource(cSource);
m_adodc4.Refresh();
//刷新庫存產品表格
Refresh_Data();
}
void CTakeOutEditDlg::OnClickPnameDatacombo(short Area)
{
//刷新庫存產品表格
Refresh_Data();
}
void CTakeOutEditDlg::OnClickStorehouseDatacombo(short Area)
{
//刷新庫存產品表格
Refresh_Data();
}
void CTakeOutEditDlg::OnClickDatagrid2()
{
// TODO: Add your control notification handler code here
if (m_adodc6.GetRecordset().GetEof())
{
m_Pprice = "0"; //產品價格設置為0
m_Pnum1 = "0"; //產品數量設置為0
}
else
{
m_Pprice = m_datagrid.GetItem(1); //從表格中讀取產品價格
m_Pnum1 = m_datagrid.GetItem(2); //從表格中讀取產品庫存數量
}
UpdateData(FALSE);
}
void CTakeOutEditDlg::OnOK()
{
UpdateData(TRUE); //將輸入數據讀取到成員變量
//判斷輸入數據是否有效
if (m_Client.GetBoundText() == "")
{
MessageBox("請選擇客戶");
return;
}
if (m_Pname.GetBoundText() == "")
{
MessageBox("請選擇產品");
return;
}
if (m_Storehouse.GetBoundText() == "")
{
MessageBox("請選擇倉庫");
return;
}
if (m_Pnum == 0)
{
MessageBox("請輸入出庫產品數量");
return;
}
if (m_adodc6.GetRecordset().GetEof())
{
MessageBox("請選擇要出庫的庫存產品記錄");
return;
}
// 從庫存產品表中讀取當前的產品數量
// 因為此庫存產品可能在其他客戶端被出庫,從而導致庫存數量變量
CProInStore pi;
pi.GetData(m_datagrid.GetItem(0));
if (m_Pnum > pi.GetPnum())
{
MessageBox("出庫數量大于庫存數量");
m_Pnum1 = pi.GetPnum(); //顯示新的庫存數量
UpdateData(FALSE);
return;
}
//保存出庫信息
CTakeOut to;
int index;
index = m_Type.GetCurSel();
CString cType;
m_Type.GetLBText(index, cType);
to.SetTtype(cType); //出庫類型
to.SetPid(atoi(m_Pname.GetBoundText())); //產品編號
to.SetPprice(atof(m_Pprice)); //單價
to.SetPnum(m_Pnum); //數量
to.SetCid(atoi(m_Client.GetBoundText())); //客戶編號
to.SetSid(atoi(m_Storehouse.GetBoundText())); //倉庫編號
to.SetEmpName(m_User); //操作用戶
to.SetOptDate(m_OptDate); //操作日期
//插入出庫數量
to.sql_insert();
//@@@@@ 保存庫存產品信息 @@@@@
pi.SetPid(atoi(m_Pname.GetBoundText())); //產品編號
pi.SetPprice(atof(m_Pprice)); //單價
pi.SetPnum(m_Pnum * (-1)); //數量(因為要減去庫存,所以乘以-1)
CString cMakeDate;
cMakeDate = m_datagrid.GetItem(3);
pi.SetMakeDate(cMakeDate); //生產日期
pi.SetSid(atoi(m_Storehouse.GetBoundText())); //倉庫編號
//如果不存在當前庫存產品,則插入新記錄,否則更新庫存數量
CString cPid;
cPid.Format("%d", pi.GetPid());
CString cSid;
cSid.Format("%d", pi.GetSid());
if (pi.HaveData(cPid, m_Pprice, pi.GetMakeDate(), cSid) == 1)
pi.sql_updateDiff(cPid, m_Pprice, pi.GetMakeDate(), cSid);
else
pi.sql_insert();
CDialog::OnOK();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -