📄 wagesearch.cpp
字号:
// WageSearch.cpp : implementation file
//
#include "stdafx.h"
#include "salarymanagement.h"
#include "WageSearch.h"
#include "ADOConn.h"
#include "Gongzi.h"
#include "SalarySet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// WageSearch dialog
WageSearch::WageSearch(CWnd* pParent /*=NULL*/)
: CDialog(WageSearch::IDD, pParent)
{
EnableAutomation();
//{{AFX_DATA_INIT(WageSearch)
m_ID = _T("");
m_name = _T("");
m_bID = FALSE;
m_bMonth = FALSE;
m_bName = FALSE;
m_bDepartment = FALSE;
m_bSalary = FALSE;
//}}AFX_DATA_INIT
}
void WageSearch::OnFinalRelease()
{
// When the last reference for an automation object is released
// OnFinalRelease is called. The base class will automatically
// deletes the object. Add additional cleanup required for your
// object before calling the base class.
CDialog::OnFinalRelease();
}
void WageSearch::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(WageSearch)
DDX_Control(pDX, IDC_COMBOmonth, m_Month);
DDX_Control(pDX, IDC_LIST1, m_list);
DDX_Control(pDX, IDC_COMBOdepart, m_Depart);
DDX_Control(pDX, IDC_COMBOWageScope, m_WageScope);
DDX_Text(pDX, IDC_ID, m_ID);
DDX_Text(pDX, IDC_NAME, m_name);
DDX_Check(pDX, IDC_CHECK1, m_bID);
DDX_Check(pDX, IDC_CHECK3, m_bMonth);
DDX_Check(pDX, IDC_CHECK4, m_bName);
DDX_Check(pDX, IDC_CHECK5, m_bDepartment);
DDX_Check(pDX, IDC_CHECK2, m_bSalary);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(WageSearch, CDialog)
//{{AFX_MSG_MAP(WageSearch)
ON_BN_CLICKED(IDC_Kaishichaxun, OnSearch)
ON_BN_CLICKED(IDC_Show, OnShow)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_WM_SHOWWINDOW()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BEGIN_DISPATCH_MAP(WageSearch, CDialog)
//{{AFX_DISPATCH_MAP(WageSearch)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
// Note: we add support for IID_IWageSearch to support typesafe binding
// from VBA. This IID must match the GUID that is attached to the
// dispinterface in the .ODL file.
// {55CE4E68-F0A1-49C1-9121-9541FF48E779}
static const IID IID_IWageSearch =
{ 0x55ce4e68, 0xf0a1, 0x49c1, { 0x91, 0x21, 0x95, 0x41, 0xff, 0x48, 0xe7, 0x79 } };
BEGIN_INTERFACE_MAP(WageSearch, CDialog)
INTERFACE_PART(WageSearch, IID_IWageSearch, Dispatch)
END_INTERFACE_MAP()
/////////////////////////////////////////////////////////////////////////////
// WageSearch message handlers
BOOL WageSearch::OnInitDialog()
{
CDialog::OnInitDialog();
GetDlgItem(IDC_Show)->EnableWindow(false);
CString strw[4]={"1000元以下","1000~2000元","3000~4000元","4000元以上"};
for (int i =0; i<4; i++)
{
m_WageScope.AddString(strw[i]);
}
m_WageScope.SetCurSel(0);
CString strd[8]={"市场部","研发部","计划部","公关部","客户服务部",
"后勤部","财务部","人事部"};
for ( i=0; i<8; i++ )
{
m_Depart.AddString(strd[i]);
}
m_Depart.SetCurSel(0);
CString strmonth[12]={"01","02","03","04","05","06","07","08","09","10","11","12"};
for (i=0; i<12; i++)
{
m_Month.AddString(strmonth[i]);
}
m_Month.SetCurSel(0);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES |LVS_EX_INFOTIP );
CString str[]={"年份","月份","员工ID","姓名","所属部门","职位","奖金","计时工资","计件工资",
"职务补贴","其它福利","应发工资","考勤工资","违章罚款","所得税","实发工资"};
for (i=0;i<16;i++)
{
m_list.InsertColumn(i,str[i],LVCFMT_CENTER,100);
}
UpdateDataBase();
ShowData("Select * From Wage");
return TRUE;
}
void WageSearch::OnCancel()
{
((CDialog*)this->GetParent())->EndDialog(IDCANCEL);
CDialog::OnCancel();
}
void WageSearch::OnSearch()
{
UpdateData();
CString sql,str;
m_sql="Select * From Wage Where ";
_RecordsetPtr pRecordset;
BOOL isBegin=TRUE;//判断是否是第一个选项
BOOL isExist=TRUE;//如果选项中有员工ID或员工姓名,
//则查找员工ID或员工姓名在Wage表中是否存在记录
//如果不存在,则说明要查找的员工的实发工资=应发工资
extern isExsit;
if (m_bID)
{
if(m_ID=="")
{
MessageBox("请输入对于用户ID或取消该选项!!!");
return;
}
sql.Format("员工ID='%s'",m_ID);
m_sql+=sql;
isBegin=FALSE;
str.Format("Select * From Wage Where 员工ID='%s'",m_ID);
pRecordset=m_ado.GetRecordSet(str);
if(pRecordset->adoEOF)
isExist=FALSE;
}
if (m_bName)
{
//如果不是第一个选项,则在SQL语句中其之间要加and
if(!isBegin)
m_sql+=" And ";
if(m_name=="")
{
MessageBox("姓名不能为空,请输入姓名或取消该选项!!!");
return;
}
sql.Format("姓名='%s'",m_name);
m_sql+=sql;
isBegin=FALSE;
str.Format("Select * From Wage Where 姓名='%s'",m_name);
pRecordset=m_ado.GetRecordSet(str);
if(pRecordset->adoEOF)
isExist=FALSE;
}
//选择了应发工资选项
if (m_bSalary)
{
if(!isBegin)
m_sql+=" And ";
isBegin=FALSE;
int index=m_WageScope.GetCurSel();
if (index==0) m_sql+="应发工资<1000";
else if (index==1)
m_sql+="应发工资>=1000 and 应发工资<2000";
else if (index==2)
m_sql+="应发工资>=2000 and 应发工资<3000";
else if (index==3)
m_sql+="应发工资>=3000 and 应发工资<4000";
else m_sql+="应发工资>=4000";
}
if (m_bDepartment)
{
if(!isBegin)
m_sql+=" And ";
int index=m_Depart.GetCurSel();
CString str;
m_Depart.GetLBText(index,str);
sql.Format("所属部门='%s'",str);
m_sql+=sql;
isBegin=FALSE;
}
if (m_bMonth)
{
if(!isBegin)
m_sql+=" And ";
isBegin=FALSE;
int index=m_Month.GetCurSel();
CString str;
m_Month.GetLBText(index,str);
sql.Format("月份='%s'",str);
m_sql+=sql;
}
if(isBegin)
{
MessageBox("请至少选择一个查询的条件进行查询!");
return;
}
if(!ShowData(m_sql))
{
if(isExist)
AfxMessageBox("相关记录为空!!!");
else
{
//当所搜索的员工在Wage表中没有信息时,说明其应发工资=实发工资
//在下面显示其实发工资及具体细节
if(m_bID)
sql.Format("Select * From DepartmentSet,BasicInfomation Where "
"BasicInfomation.职位=DepartmentSet.职位 And BasicInfomation.部门名称=DepartmentSet.部门名称"
" And BasicInfomation.员工ID='%s'",m_ID);
if(m_bName)
sql.Format("Select * From DepartmentSet,BasicInfomation Where "
"BasicInfomation.职位=DepartmentSet.职位 And BasicInfomation.部门名称=DepartmentSet.部门名称"
" And 姓名='%s'",m_name);
else
sql.Format("Select * From DepartmentSet,BasicInfomation Where "
"BasicInfomation.职位=DepartmentSet.职位 And BasicInfomation.部门名称=DepartmentSet.部门名称"
" And BasicInfomation.员工ID='%s' And 姓名='%s'",m_ID,m_name);
m_recordset=m_ado.GetRecordSet(sql);
int nDixin=atoi((LPCTSTR)(_bstr_t)m_recordset->GetCollect("底薪"));
int nYangLaoJin=atoi((LPCTSTR)(_bstr_t)m_recordset->GetCollect("养老金"));
int nGongJiJin=atoi((LPCTSTR)(_bstr_t)m_recordset->GetCollect("公积金"));
int YingFa=nDixin+nYangLaoJin+nGongJiJin;
str.Format("该员工的实发工资=应发工资=%d元:\n底薪:%d\n养老金:%d元\n公积金:%d元\n"
"考勤工资和其它浮动工资为0",
YingFa,nDixin,nYangLaoJin,nGongJiJin);
}
}
}
BOOL WageSearch::ShowData(const CString& sql)
{
//将数据显示在列表控件上
try{
m_recordset=m_ado.GetRecordSet(sql);
if(m_recordset->adoEOF)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -