?? tabkh.cpp
字號:
// TabKH.cpp: implementation of the CTabKH class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "a1.h"
#include "TabKH.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTabKH::CTabKH(int s_n,bool iskh)
:CBaseTabCtrl(s_n),m_dataKh(iskh)
{
}
CTabKH::~CTabKH()
{
delete [] m_statics;
delete [] m_edits;
delete m_list;
delete [] m_btn;
m_statics=NULL;
m_edits=NULL;
m_list=NULL;
m_btn=NULL;
}
BEGIN_MESSAGE_MAP(CTabKH, CBaseTabCtrl)
//{{AFX_MSG_MAP(CTabKH)
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()
void CTabKH::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
int i=this->GetCurSel();
switch(i)
{
case 0:
m_check.SetCheck(0);
this->m_dataKh.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;
}
void CTabKH::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 CTabKH::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 CTabKH::OnShanChuClick()
{ CString str;
m_edits[0].GetWindowText(str);
if(str=="")
{
MessageBox("請選擇某條紀錄");
return;
}
if(MessageBox("確定要刪除嗎?刪除后不可恢復,并且相關的庫存信息也將被刪除!","注意!",
MB_YESNO)!=IDYES)
return ;
this->GetValuesFromEdits();
if(!this->m_dataKh.DeleteCurValue())return;
CBaseTabCtrl::OnShanChuClick();
this->m_dataKh.data=CDataKH::data_kh();
}
void CTabKH::OnZengJiaClick()
{
CBaseTabCtrl::OnZengJiaClick();
CString str=(m_dataKh.m_bKh? ChanShengIDKH() : ChanShengIDGYS());
m_edits[0].SetWindowText(str);
m_edits[0].SetReadOnly();
m_edits[1].SetFocus();
}
void CTabKH::OnChaXun()
{
this->m_dataKh.RefreshListView(this->PrepareSQL());
}
bool CTabKH::InitList()
{
CBaseTabCtrl::InitList();
CString sub_str;
POSITION pos=this->m_dataKh.m_pstrlistFields_Names[1].GetHeadPosition();
for(int i=0;i<this->mc_iNumber;i++)
{
m_list->InsertColumn(i,m_dataKh.m_pstrlistFields_Names[1].GetNext(pos));
}
for(i=0;i<this->mc_iNumber;i++)
m_list->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
m_list->Invalidate();
if(m_dataKh.m_bKh)
{
m_combofields.AddString("客戶編號");
m_combofields.AddString("客戶名稱");
m_combofields.AddString("簡稱");
m_combofields.AddString("地址");
m_combofields.AddString("所在地區");
m_combofields.SetCurSel(0);
}
else
{
m_combofields.AddString("供應商編號");
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_dataKh.m_runsql.RunSQL(sql);
/*
m_sTable="tabgys";
m_sTempTables[0]="lsgys0";
m_sTempTables[1]="lsgys1";
*/
m_check.SetCheck(0);
sql.Format("INSERT INTO %s SELECT * FROM %s",m_sTempTables[0],m_sTable);
m_dataKh.m_runsql.RunSQL(sql);
sql.Format("select * from %s",m_sTempTables[0]);
m_dataKh.SelectListCtrl(m_list);
m_dataKh.RefreshListView(sql);
m_iCurTable=0;
return true;
}
bool CTabKH::InitSelf()
{
CBaseTabCtrl::InitSelf();
SetItemSize(CSize(50,20));
if(m_dataKh.m_bKh)
{
CTabCtrl::InsertItem(0,"客戶信息查詢");
CTabCtrl::InsertItem(1,"客戶信息管理");
}
else
{
CTabCtrl::InsertItem(0,"供應商信息查詢");
CTabCtrl::InsertItem(1,"供應商信息管理");
}
return true;
}
bool CTabKH::InitValues()
{
m_sFuhao[0]="=";
m_sFuhao[1]=">";
m_sFuhao[2]="<";
m_sFuhao[3]=">=";
m_sFuhao[4]="<=";
m_sFuhao[5]="LIKE";
if(m_dataKh.m_bKh)
{
m_sTable="tabkh";
m_sTempTables[0]="lskh0";
m_sTempTables[1]="lskh1";
}
else
{
m_sTable="tabgys";
m_sTempTables[0]="lsgys0";
m_sTempTables[1]="lsgys1";
}
return true;
}
void CTabKH::OnBaoCunClick()
{
CString value;
this->GetValuesFromEdits();
if(this->baseinfo_state==ZENGJIA)
{
if(!this->m_dataKh.InsertCurValue())
{
MessageBox("增加數據錯誤","錯誤");
return;
}
}
else if(this->baseinfo_state==XIUGAI)
{
if(!this->m_dataKh.UpdateCurValue())
{
MessageBox("修改數據錯誤","錯誤");
return;
}
}
else
return;
CBaseTabCtrl::OnBaoCunClick();
baseinfo_state=NORMAL;
}
CString CTabKH::PrepareSQL()
{
CString field_name,field,fuhao,value,inputtable,outputtable,sql;
this->PrepareTables(outputtable,inputtable);
m_combofields.GetWindowText(field_name);
field=this->m_dataKh.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_dataKh.m_runsql.RunSQL(sql);
sql.Format("select * from %s",inputtable);
return sql;
}
bool CTabKH::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_dataKh.m_runsql.RunSQL(sql);
return true;
}
bool CTabKH::SetValuesIntoEdits()
{CString value;
value=this->m_dataKh.data.kh_id;if(value=="")return false; this->m_edits[0].SetWindowText(value);
value= this->m_dataKh.data.kh_name; this->m_edits[1].SetWindowText(value);
value= this->m_dataKh.data.jc; this->m_edits[2].SetWindowText(value);
value= this->m_dataKh.data.address; this->m_edits[3].SetWindowText(value);
value= this->m_dataKh.data.area; this->m_edits[4].SetWindowText(value);
value= this->m_dataKh.data.mail; this->m_edits[5].SetWindowText(value);
value= this->m_dataKh.data.phone; this->m_edits[6].SetWindowText(value);
value= this->m_dataKh.data.fax; this->m_edits[7].SetWindowText(value);
value= this->m_dataKh.data.linkman; this->m_edits[8].SetWindowText(value);
value= this->m_dataKh.data.lm_phone; this->m_edits[9].SetWindowText(value);
value= this->m_dataKh.data.bank; this->m_edits[10].SetWindowText(value);
value= this->m_dataKh.data.accounts; this->m_edits[11].SetWindowText(value);
value= this->m_dataKh.data.taxpayer; this->m_edits[12].SetWindowText(value);
value= this->m_dataKh.data.email; this->m_edits[13].SetWindowText(value);
return true;
}
bool CTabKH::GetValuesFromEdits()
{ CString value;
this->m_edits[0].GetWindowText(value);if(value=="")return false;this->m_dataKh.data.kh_id=value;
this->m_edits[1].GetWindowText(value);this->m_dataKh.data.kh_name=value;
this->m_edits[2].GetWindowText(value);this->m_dataKh.data.jc=value;
this->m_edits[3].GetWindowText(value);this->m_dataKh.data.address=value;
this->m_edits[4].GetWindowText(value);this->m_dataKh.data.area=value;
this->m_edits[5].GetWindowText(value);this->m_dataKh.data.mail=value;
this->m_edits[6].GetWindowText(value);this->m_dataKh.data.phone=value;
this->m_edits[7].GetWindowText(value);this->m_dataKh.data.fax=value;
this->m_edits[8].GetWindowText(value);this->m_dataKh.data.linkman=value;
this->m_edits[9].GetWindowText(value);this->m_dataKh.data.lm_phone=value;
this->m_edits[10].GetWindowText(value);this->m_dataKh.data.bank=value;
this->m_edits[11].GetWindowText(value);this->m_dataKh.data.accounts=value;
this->m_edits[12].GetWindowText(value);this->m_dataKh.data.taxpayer=value;
this->m_edits[13].GetWindowText(value);this->m_dataKh.data.email=value;
return true;
}
void CTabKH::SetTheBaseInfoFocus()
{ HWND hwnd=::GetFocus();
int iID=::GetDlgCtrlID(hwnd);
// enum{ID_EDITS_1=161};
// enum{ID_BUTTONS_1=201};
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;
}
}
void CTabKH::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 CTabKH::SetKey(int mark)
{
this->m_btn[3].EnableWindow(false);
this->m_btn[4].EnableWindow(false);
int i=3;
while(i--)
{
m_btn[i].EnableWindow(true);
}
this->EnableBaseInfo(false);
if(mark<0)return;
for(i=0;i<mc_iNumber;i++)
{
this->m_edits[i].SetWindowText(this->m_list->GetItemText(mark,i));
}
this->GetValuesFromEdits();
// this->EnableBaseInfo(false);
}
bool CTabKH::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_dataKh.m_pstrlistFields_Names[1].GetHeadPosition();
for(int i=0;i<7;i++)
{
this->m_statics[i*2].Create(this->m_dataKh.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
this->m_statics[i*2+1].Create(m_dataKh.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_dataKh.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;
}
CString CTabKH::ChanShengIDKH()
{
CString sql;
sql.Format("select kh_id from tabkh order by kh_id asc");
if(!this->m_dataKh.m_runsql.CheckSQLResult(sql))
{
return CString("KH00001");
}
_variant_t value;int i;
CString result;
for(i=1;i<99999;i++)
{
value=m_dataKh.m_runsql.m_recordset->GetCollect("kh_id");
CString str=(char*)(_bstr_t)value;
CString sub=str.Mid(2);
int number=atoi(sub);
if(number!=i)
{
break;
}
m_dataKh.m_runsql.m_recordset->MoveNext();
if(m_dataKh.m_runsql.m_recordset->adoEOF)
{
i++;
break;
}
}
if(i==99999)
{
MessageBox("員工數量大于99999了","錯誤");
return CString("");
}
result.Format("KH%05d",i);
return result;
}
CString CTabKH::ChanShengIDGYS()
{
CString sql;
sql.Format("select gys_id from tabgys order by gys_id asc");
if(!this->m_dataKh.m_runsql.CheckSQLResult(sql))
{
return CString("GYS00001");
}
_variant_t value;int i;
CString result;
for(i=1;i<99999;i++)
{
value=m_dataKh.m_runsql.m_recordset->GetCollect("gys_id");
CString str=(char*)(_bstr_t)value;
CString sub=str.Mid(3);
int number=atoi(sub);
if(number!=i)
{
break;
}
m_dataKh.m_runsql.m_recordset->MoveNext();
if(m_dataKh.m_runsql.m_recordset->adoEOF)
{
i++;
break;
}
}
if(i==99999)
{
MessageBox("員工數量大于99999了","錯誤");
return CString("");
}
result.Format("GYS%05d",i);
return result;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -