📄 attendmisdlg.cpp
字号:
m_listLeave.DeleteAllItems();
CDStrs leFields;
//获取请假数据
g_odbcDB.ExecuteQuery("select a.id,a.personid,b.name,start_time,end_time "
"from leave_info_tab a, person_info_tab b where a.personid=b.personid order by a.id",leFields);
for(i = 0 ; i < leFields.size() ; i++)
{
CStrs strs = leFields[i];
InsertDataToList(m_listLeave,strs[0],strs[1],strs[2],
strs[3],strs[4]);
}
CDStrs errFields;
//获取出差信息数据
g_odbcDB.ExecuteQuery("select a.id,a.personid,b.name,start_time,end_time "
"from errand_info_tab a, person_info_tab b where a.personid=b.personid order by a.id",errFields);
for(i = 0 ; i < errFields.size() ; i++)
{
CStrs strs = errFields[i];
InsertDataToList(m_listErrand,strs[0],strs[1],strs[2],
strs[3],strs[4]);
}
}
void CAttendMISDlg::InsertDataToList(CListCtrl&listCtl,CString item0,CString item1,CString item2,
CString item3,CString item4)
{
//获取当前的纪录条数.
int nIndex = listCtl.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex; //行数
lvItem.iSubItem = 0;
lvItem.pszText = (char*)(LPCTSTR)item0; //第一列
//在最后一行插上班记录值.
listCtl.InsertItem(&lvItem);
//设置该的其他列的值.
listCtl.SetItemText(nIndex,1,item1);
listCtl.SetItemText(nIndex,2,item2);
listCtl.SetItemText(nIndex,3,item3);
listCtl.SetItemText(nIndex,4,item4);
}
void CAttendMISDlg::OnChangeEditPeridAtt()
{
if(!UpdateData())
return;
m_strPerNameAtt = "";
CString sql;
//获取姓名信息
sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDAtt);
g_odbcDB.ExecuteQueryValue(sql,m_strPerNameAtt);
UpdateData(FALSE);
}
void CAttendMISDlg::OnChangeEditPeridErrand()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
m_strPerNameErrand = "";
CString sql;
//获取姓名信息
sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDErrand);
g_odbcDB.ExecuteQueryValue(sql,m_strPerNameErrand);
UpdateData(FALSE);
}
void CAttendMISDlg::OnChangeEditPeridLeave()
{
if(!UpdateData())
return;
m_strPerNameLeave = "";
CString sql;
//获取姓名信息
sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDLeave);
g_odbcDB.ExecuteQueryValue(sql,m_strPerNameLeave);
UpdateData(FALSE);
}
void CAttendMISDlg::OnChangeEditPeridOvertime()
{
if(!UpdateData())
return;
m_strPerNameOT = "";
CString sql;
//获取姓名信息
sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDOT);
g_odbcDB.ExecuteQueryValue(sql,m_strPerNameOT);
UpdateData(FALSE);
}
void CAttendMISDlg::OnBtnAttAdd()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
if(m_strPerNameAtt.IsEmpty()){
AfxMessageBox("没有此职员");
return;
}
//构造出勤时间
CString strDate = m_dtIODate.Format("%Y-%m-%d")
+ " " + m_dtIOTime.Format("%H:%M:%S");
CString sql;
//打开数据库,获取最大的系列ID
CString strID ;
//获取最大的ID
g_odbcDB.ExecuteQueryValue("Select max(id) from attend_info_tab",strID);
int attID = atoi(strID)+1;
//插入新的记录.
sql.Format("Insert into attend_info_tab(id,"
"personid,in_out,io_time)"
" values("
"%d,'%s',%d,to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
attID,m_strPerIDAtt,m_bInChecked,strDate);
TRACE(sql);
g_odbcDB.ExecuteSQL(sql);
//向出勤列表框控件中添加一条新的记录信息.
InsertDataToList(m_listAtt,Int2Str(attID),m_strPerIDAtt,m_strPerNameAtt,
m_bInChecked==1?"上班":"下班",strDate);
}
void CAttendMISDlg::OnBtnAttDel()
{
// TODO: Add your control notification handler code here
int nItem = m_listAtt.GetNextItem(-1, LVNI_SELECTED);
//如果没有选择要修改的纪录,返回.
if(nItem == -1){
AfxMessageBox("没有选择要修改的信息");
return;
}
CString strID = m_listAtt.GetItemText(nItem,0);
CString deletedSql;
//删除信息
deletedSql.Format("delete from attend_info_tab where id = %d",atoi(strID));
g_odbcDB.ExecuteSQL(deletedSql);
//从界面中删除记录信息.
m_listAtt.DeleteItem(nItem);
}
void CAttendMISDlg::OnBtnAttQuery()
{
// TODO: Add your control notification handler code here
m_listAtt.DeleteAllItems();
CDStrs attFields;
CString sql;
//打开所有的出勤信息
sql.Format("select a.id,a.personid,b.name,IN_OUT,IO_TIME "
"from attend_info_tab a, person_info_tab b "
"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDAtt);
g_odbcDB.ExecuteQuery(sql,attFields);
for(int i = 0 ; i < attFields.size() ; i++)
{
CStrs strs = attFields[i];
InsertDataToList(m_listAtt,strs[0],strs[1],strs[2],
atoi(strs[3])==1?"上班":"下班",strs[4]);
}
}
void CAttendMISDlg::OnBtnAttStat()
{
// TODO: Add your control notification handler code here
CDlgStat dlg;
//给对话框赋初始值
dlg.m_dtAMStart = m_dtAMStart;
dlg.m_dtAMEnd = m_dtAMEnd;
dlg.m_dtPMStart = m_dtPMStart;
dlg.m_dtPMEnd = m_dtPMEnd;
//打开数据库对话框
dlg.DoModal();
}
void CAttendMISDlg::OnBtnOtAdd()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
if(m_strPerNameOT.IsEmpty()){
AfxMessageBox("没有此职员");
return;
}
//构造加班日期
CString strDate = m_dtIODate.Format("%Y-%m-%d");
//打开数据库,获取最大的系列ID
CString strID ;
//获取最大的ID
g_odbcDB.ExecuteQueryValue("Select max(id) from overtime_info_tab",strID);
int otID = atoi(strID)+1;
//插入新的记录.
CString strOTHour;
strOTHour.Format("%3.1f",m_fOTHour);
CString sql;
sql.Format("Insert into overtime_info_tab(id,"
"personid,ot_hours,ot_date)"
" values("
"%d,'%s',%s,to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
otID,m_strPerIDOT,strOTHour,strDate);
TRACE(sql);
g_odbcDB.ExecuteSQL(sql);
//向列表框控件添加一条新的记录信息.
InsertDataToList(m_listOT,Int2Str(otID),m_strPerIDOT,m_strPerNameOT,
strOTHour,strDate);
}
void CAttendMISDlg::OnBtnOtDel()
{
// TODO: Add your control notification handler code here
int nItem = m_listOT.GetNextItem(-1, LVNI_SELECTED);
//如果没有选择要修改的纪录,返回.
if(nItem == -1){
AfxMessageBox("没有选择要修改的信息");
return;
}
CString strID = m_listOT.GetItemText(nItem,0);
CString deletedSql;
//删除信息
deletedSql.Format("delete from overtime_info_tab where id = %d",atoi(strID));
g_odbcDB.ExecuteSQL(deletedSql);
//从界面中删除记录信息.
m_listOT.DeleteItem(nItem);
}
void CAttendMISDlg::OnBtnOtQuery()
{
m_listOT.DeleteAllItems();
CDStrs otFields;
CString sql;
//打开所有的加班信息
sql.Format("select a.id,a.personid,b.name,work_hours,work_date "
"from overtime_info_tab a, person_info_tab b "
"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDOT);
g_odbcDB.ExecuteQuery(sql,otFields);
for(int i = 0 ; i < otFields.size() ; i++)
{
CStrs strs = otFields[i];
InsertDataToList(m_listOT,strs[0],strs[1],strs[2],
strs[3],strs[4].Left(10));
}
}
void CAttendMISDlg::OnBtnLeaveAdd()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
if(m_strPerNameLeave.IsEmpty()){
AfxMessageBox("没有此职员");
return;
}
//构造请假时间
CString strStartDT = m_dtLeStartDate.Format("%Y-%m-%d")
+ " " + m_dtLeStartTime.Format("%H:%M:%S");
CString strEndDT = m_dtLeEndDate.Format("%Y-%m-%d")
+ " " + m_dtLeEndTime.Format("%H:%M:%S");
//打开数据库,获取最大的系列ID
CString strID ;
//获取最大的ID
g_odbcDB.ExecuteQueryValue("Select max(id) from leave_info_tab",strID);
int leID = atoi(strID)+1;
//插入新的记录.
CString sql;
sql.Format("Insert into leave_info_tab(id,"
"personid,start_time,end_time)"
" values("
"%d,'%s',to_date('%s','yyyy-mm-dd hh24:mi:ss'),"
"to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
leID,m_strPerIDLeave,strStartDT,strEndDT);
TRACE(sql);
g_odbcDB.ExecuteSQL(sql);
//向列表框控件添加一条新的记录信息.
InsertDataToList(m_listLeave,Int2Str(leID),m_strPerIDLeave,m_strPerNameLeave,
strStartDT,strEndDT);
}
void CAttendMISDlg::OnBtnLeaveDel()
{
// TODO: Add your control notification handler code here
int nItem = m_listLeave.GetNextItem(-1, LVNI_SELECTED);
//如果没有选择要修改的纪录,返回.
if(nItem == -1){
AfxMessageBox("没有选择要修改的信息");
return;
}
CString strID = m_listLeave.GetItemText(nItem,0);
CString deletedSql;
//删除设信息
deletedSql.Format("delete from leave_info_tab where id = %d",atoi(strID));
g_odbcDB.ExecuteSQL(deletedSql);
//从界面中删除记录信息.
m_listLeave.DeleteItem(nItem);
}
void CAttendMISDlg::OnBtnLeaveQuery()
{
// TODO: Add your control notification handler code here
m_listLeave.DeleteAllItems();
CDStrs leFields;
//打开所有的请假信息记录.
CString sql;
sql.Format("select a.id,a.personid,b.name,start_time,end_time "
"from leave_info_tab a, person_info_tab b "
"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDLeave);
g_odbcDB.ExecuteQuery(sql,leFields);
for(int i = 0 ; i < leFields.size() ; i++)
{
CStrs strs = leFields[i];
InsertDataToList(m_listLeave,strs[0],strs[1],strs[2],
strs[3],strs[4]);
}
}
void CAttendMISDlg::OnBtnErrandAdd()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
if(m_strPerNameErrand.IsEmpty()){
AfxMessageBox("没有此职员");
return;
}
//构造出差时间
CString strStartDT = m_dtErStartDate.Format("%Y-%m-%d")
+ " " + m_dtErStartTime.Format("%H:%M:%S");
CString strEndDT = m_dtErEndDate.Format("%Y-%m-%d")
+ " " + m_dtErEndTime.Format("%H:%M:%S");
//打开数据库,获取最大的系列ID
CString strID ;
//获取最大的ID
g_odbcDB.ExecuteQueryValue("Select max(id) from errand_info_tab",strID);
int erID = atoi(strID)+1;
//插入新的记录.
CString sql;
sql.Format("Insert into errand_info_tab(id,"
"personid,start_time,end_time)"
" values("
"%d,'%s',to_date('%s','yyyy-mm-dd hh24:mi:ss'),"
"to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
erID,m_strPerIDErrand,strStartDT,strEndDT);
TRACE(sql);
g_odbcDB.ExecuteSQL(sql);
//向列表框控件添加一条新的记录信息.
InsertDataToList(m_listErrand,Int2Str(erID),m_strPerIDErrand,m_strPerNameErrand,
strStartDT,strEndDT);
}
void CAttendMISDlg::OnBtnErrandDel()
{
// TODO: Add your control notification handler code here
int nItem = m_listErrand.GetNextItem(-1, LVNI_SELECTED);
//如果没有选择要修改的纪录,返回.
if(nItem == -1){
AfxMessageBox("没有选择要修改的信息");
return;
}
CString strID = m_listErrand.GetItemText(nItem,0);
CString deletedSql;
//删除信息
deletedSql.Format("delete from errand_info_tab where id = %d",atoi(strID));
g_odbcDB.ExecuteSQL(deletedSql);
//从界面中删除记录信息.
m_listErrand.DeleteItem(nItem);
}
void CAttendMISDlg::OnBtnErrandQuery()
{
// TODO: Add your control notification handler code here
CDStrs errFields;
//获取收入类型数据
//打开所有的出勤信息记录.
CString sql;
sql.Format("select a.id,a.personid,b.name,start_time,end_time "
"from errand_info_tab a, person_info_tab b "
"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDErrand);
g_odbcDB.ExecuteQuery(sql,errFields);
for(int i = 0 ; i < errFields.size() ; i++)
{
CStrs strs = errFields[i];
InsertDataToList(m_listAtt,strs[0],strs[1],strs[2],
strs[3],strs[4]);
}
}
void CAttendMISDlg::OnBtnPersonAdd()
{
// TODO: Add your control notification handler code here
CPersonDlg dlg;
//打开人员对话框
if(dlg.DoModal() == IDOK){
CString strPersonID = dlg.m_strPersonID;
CString strName= dlg.m_strName;
CString strDept = dlg.m_strDept;
//打开数据库,获取最大的系列ID
CString strID ;
//获取最大的ID
g_odbcDB.ExecuteQueryValue("Select max(id) from person_info_tab",strID);
int sID = atoi(strID)+1;
//插入新的记录.
CString sql;
sql.Format("Insert into person_info_tab(id,"
"personid,name,department)"
" values("
"%d,'%s','%s','%s')",
sID,strPersonID,strName,strDept);
TRACE(sql);
g_odbcDB.ExecuteSQL(sql);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -