www.gusucode.com > VC++毕业设计-库存管理系统(Access)-源码程序 > VC++毕业设计-库存管理系统(Access)-源码程序/code/源程序/商品库存管理系统.cpp
//Download by http://www.NewXing.com // 商品库存管理系统.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "商品库存管理系统.h" #include "MainDlg.h" #include "DLogin.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMyApp BEGIN_MESSAGE_MAP(CMyApp, CWinApp) //{{AFX_MSG_MAP(CMyApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMyApp construction CMyApp::CMyApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CMyApp object CMyApp theApp; _ConnectionPtr cnn; CString UserName; ///////////////////////////////////////////////////////////////////////////// // CMyApp initialization BOOL CMyApp::InitInstance() { AfxEnableControlContainer(); ::CoInitialize(NULL); cnn=NULL; cnn.CreateInstance(__uuidof(Connection)); cnn->ConnectionString="uid=admin;pwd=111;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=spkc.mdb;"; cnn->Open(L"",L"",L"",adCmdUnspecified); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif CDlogin dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } void CMyApp::ADOError(_RecordsetPtr ADORecordset) { ErrorsPtr pErrors=cnn->GetErrors(); for (int i=0;i<pErrors->GetCount();i++) { _bstr_t desc=pErrors->GetItem((long)i)->GetDescription(); AfxMessageBox(desc); } } int CMyApp::GetRecordCount(_RecordsetPtr rRecord) { int recordcount=0; try{ rRecord->MoveFirst(); } catch(...) { return 0; } if(rRecord->_EOF) return 0; while (!rRecord->_EOF) { rRecord->MoveNext(); recordcount=recordcount+1; } return recordcount; } CString CMyApp::AutoNumber(CString TableName, CString sLater, int nflg) { CTime _time,_CurrentTime; CString MaxNumber,_sDay,_sYear,_sMonth,NewNumber,ReturnNumber,sSQL; int _Day,_Year,_Month; _RecordsetPtr AutoNumber_Rst; AutoNumber_Rst.CreateInstance(__uuidof(Recordset)); ::CoInitialize(NULL); _variant_t value; if(sLater.GetLength()>2) sLater=sLater.Left(2); if(nflg==1) { sSQL.Format("SELECT MAX(编号) as 最大编号 FROM %s",TableName); AutoNumber_Rst = cnn->Execute((_bstr_t)sSQL,NULL,adCmdText); value=AutoNumber_Rst->GetCollect("最大编号"); if(value.vt==VT_NULL) { ReturnNumber.Format("%s00000001",sLater); } else { MaxNumber=(char*)(_bstr_t)value; MaxNumber=MaxNumber.Mid(3); NewNumber.Format("%d",atoi(MaxNumber)+1); ReturnNumber.Format("%s%s",sLater,this->Padl(NewNumber,8,"0")); } } else { _time=_CurrentTime.GetCurrentTime(); _Year=_time.GetYear(); _Month=_time.GetMonth(); _Day=_time.GetDay(); _sDay.Format("%d",_Day); _sDay=this->Padl(_sDay,2,"0"); _sMonth.Format("%d",_Month); _sMonth=this->Padl(_sMonth,2,"0"); _sYear.Format("%d",_Year); _sYear=_sYear.Mid(2); sSQL.Format("SELECT MAX(票号) as 最大编号 FROM %s",TableName); AutoNumber_Rst = cnn->Execute((_bstr_t)sSQL,NULL,adCmdText); if(AutoNumber_Rst->_EOF) { ReturnNumber.Format("%s%s%s%s-000001 ",sLater,_sYear,_sMonth,_sDay); goto retu; } value=AutoNumber_Rst->GetCollect("最大编号");//取出最大编号 if(value.vt==VT_NULL) { ReturnNumber.Format("%s%s%s%s-000001 ",sLater,_sYear,_sMonth,_sDay); } else { CString sOldDate,sNewDate; sOldDate=(char*)(_bstr_t)value; sOldDate=sOldDate.Mid(2,6); sNewDate.Format("%s%s%s",_sYear,_sMonth,_sDay); if(sOldDate==sNewDate) { MaxNumber.Format((char*)(_bstr_t)value); MaxNumber=MaxNumber.Mid(9); NewNumber.Format("%d",atoi(MaxNumber)+1); ReturnNumber.Format("%s%s%s%s-%s",sLater,_sYear,_sMonth,_sDay,this->Padl(NewNumber,6,"0")); } else { ReturnNumber.Format("%s%s%s%s-000001 ",sLater,_sYear,_sMonth,_sDay); } } } retu: AutoNumber_Rst->Close(); return ReturnNumber; } int CMyApp::NumberTOName(CString TableName, CString field, CString value) { _RecordsetPtr NumberTOName_rst; CString cSQL; _bstr_t val; int backnumber=0; NumberTOName_rst.CreateInstance(__uuidof(Recordset)); cSQL.Format("SELECT * FROM %s WHERE %s='%s'",TableName,field,value); NumberTOName_rst=cnn->Execute((_bstr_t)cSQL,NULL,adCmdText); if(NumberTOName_rst->_EOF) goto end; else { val=NumberTOName_rst->GetCollect("编号"); backnumber=atoi((char*)(_bstr_t)val); } end: NumberTOName_rst->Close(); return backnumber; } CString CMyApp::NumberTOName(CString TableName, CString Returnfield, CString field, CString value, int nflg) { _RecordsetPtr NumberTOName_rst2; CString cSQL,backnumber; _bstr_t val; NumberTOName_rst2.CreateInstance(__uuidof(Recordset)); cSQL.Format("SELECT * FROM %s WHERE %s='%s'",TableName,field,value); NumberTOName_rst2=cnn->Execute((_bstr_t)cSQL,NULL,adCmdText); if(NumberTOName_rst2->_EOF) backnumber.Format("WRONG"); else { if(nflg==1) { val=NumberTOName_rst2->GetCollect("编号"); } else { val=NumberTOName_rst2->GetCollect((_variant_t)Returnfield); } backnumber.Format((char*)(_bstr_t)val); } NumberTOName_rst2->Close(); return backnumber; } CString CMyApp::CharToLetterCode(CString string) { unsigned short i; //无符号短整型 CString value,ReturnValue; char chr[3]; BYTE bHeight; BYTE bLow; for(int m=0;m<=string.GetLength()-1;m=m+2) { if(m%2!=0) { if(m<string.GetLength()-1) m=m+1; } chr[0]=string.GetAt(m); if((((BYTE)chr[0]>=0x20&&(BYTE)chr[0]<=0x80)||(BYTE)chr[0]==0xbf)) { int StringLength=string.GetLength(); if(m+1<StringLength) { chr[1]=string.GetAt(m+1); if(chr[1]<0) { chr[2]=0; bHeight=chr[1]; bLow=chr[0]; i=bHeight+bLow*256; if(i==((unsigned short)'科')) value.Format("%s","K"); } else { chr[1]=0; chr[2]=0; value.Format(""); m++; } } else { chr[1]=0; chr[2]=0; value.Format(""); m++; } } else { chr[1]=string.GetAt(m+1); chr[2]=0; bHeight=chr[1]; bLow=chr[0]; i=bHeight+bLow*256; if(i < (unsigned short)'啊') value.Format("%s ",chr); if( i>= (unsigned short)'啊'&& i<(unsigned short)'芭') value.Format("A"); if( i>= (unsigned short)'芭'&& i<(unsigned short)'擦') value.Format("B"); if( i>= (unsigned short)'擦'&& i<(unsigned short)'搭') value.Format("C"); if( i>= (unsigned short)'搭'&& i<(unsigned short)'蛾') value.Format("D"); if( i>= (unsigned short)'蛾'&& i<(unsigned short)'发') value.Format("E"); if( i>= (unsigned short)'发'&& i<(unsigned short)'噶') value.Format("F"); if( i>= (unsigned short)'噶'&& i<(unsigned short)'哈') value.Format("G"); if( i>= (unsigned short)'哈'&& i<(unsigned short)'击') value.Format("H"); if(( i>= (unsigned short)'击'&& i<(unsigned short)'喀')|| i==(unsigned short)'科') value.Format("J"); if( i>= (unsigned short)'喀'&& i<(unsigned short)'垃') value.Format("K"); if( i>= (unsigned short)'垃'&& i<(unsigned short)'妈') value.Format("L"); if( i>= (unsigned short)'妈'&& i<(unsigned short)'拿') value.Format("M"); if( i>= (unsigned short)'拿'&& i<(unsigned short)'哦') value.Format("N"); if( i>= (unsigned short)'哦'&& i<(unsigned short)'啪') value.Format("O"); if( i>= (unsigned short)'啪'&& i<(unsigned short)'期') value.Format("P"); if( i>= (unsigned short)'期'&& i<(unsigned short)'然') value.Format("Q"); if( i>= (unsigned short)'然'&& i<(unsigned short)'撒') value.Format("R"); if( i>= (unsigned short)'撒'&& i<(unsigned short)'塌') value.Format("S"); if( i>= (unsigned short)'塌'&& i<(unsigned short)'挖') value.Format("T"); if( i>= (unsigned short)'挖'&& i<(unsigned short)'昔') value.Format("W"); if( i>= (unsigned short)'昔'&& i<(unsigned short)'压') value.Format("X"); if( i>= (unsigned short)'压'&& i<(unsigned short)'匝') value.Format("Y"); if( i>= (unsigned short)'匝' && i!=(unsigned short)'炜' && i!=(unsigned short)'馨' && i!=(unsigned short)'懿') value.Format("Z"); } ReturnValue=ReturnValue+value; } return ReturnValue; } int CMyApp::AutoNumber(int nflg, CString TableName) { _RecordsetPtr AutoNumber_Rst2; AutoNumber_Rst2.CreateInstance(__uuidof(Recordset)); CString sSQL; _variant_t value; int nNumber=1; sSQL.Format("SELECT MAX(编号) as 最大编号 FROM %s",TableName); AutoNumber_Rst2 = cnn->Execute((_bstr_t)sSQL,NULL,adCmdText); value=AutoNumber_Rst2->GetCollect("最大编号"); if(value.vt==VT_NULL) { nNumber=1; } else { nNumber=atoi((char*)(_bstr_t)value)+1; } AutoNumber_Rst2->Close(); return nNumber; } CString CMyApp::Padl(CString String, int digit, CString Fill, int Way) { int Padl_n; CString Padl_string; Padl_string.Empty(); for(Padl_n=1;Padl_n<=digit-String.GetLength();Padl_n++) { Padl_string=Padl_string+Fill; } if(Way==1) return Padl_string+String; else return String+Padl_string; } CTime CMyApp::CStringTOCTime(CString cDate) { int nYear,nMonth,nDay; char cYear[5],cMonth[3],cDay[3]; CTime tDate; cYear[0]=cDate.GetAt(0); cYear[1]=cDate.GetAt(1); cYear[2]=cDate.GetAt(2); cYear[3]=cDate.GetAt(3); cYear[4]=NULL; cMonth[0]=cDate.GetAt(5); cMonth[1]=cDate.GetAt(6); cMonth[2]=NULL; cDay[0]=cDate.GetAt(8); cDay[1]=cDate.GetAt(9); cDay[2]=NULL; nYear=atoi(&cYear[0]); nMonth=atoi(&cMonth[0]); nDay=atoi(&cDay[0]); tDate=CTime::CTime(nYear,nMonth,nDay,0,0,0); return tDate; } CString CMyApp::CTimeToCString(CTime date) { int nYear,nMonth,nDay; CString sMonth,sDay,sDate; nYear=date.GetYear(); nMonth=date.GetMonth(); nDay=date.GetDay(); sMonth.Format("%d",nMonth); sMonth=theApp.Padl(sMonth,2,"0"); sDay.Format("%d",nDay); sDay=theApp.Padl(sDay,2,"0"); sDate.Format("%d-%s-%s",nYear,sMonth,sDay); return sDate; }