www.pudn.com > LoadMachineCode111.rar > Loadmachcode.cpp


// Loadmachcode.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "loadmachinecode.h" 
#include "Loadmachcode.h" 
#include "SetParameter.h"                                
#include "CDatabaseOperate.h" 
 
#include "ComOperateNew.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CLoadmachcode dialog 
 
CCDatabaseOperate m_database; 
CSetParameter setDlg; 
CLoadmachcode::CLoadmachcode(CWnd* pParent /*=NULL*/) 
	: CDialog(CLoadmachcode::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CLoadmachcode) 
	m_fullcode = _T(""); 
	m_machinecode = _T(""); 
	//}}AFX_DATA_INIT 
	m_pView=NULL; 
} 
 
CLoadmachcode::CLoadmachcode(CView * pView) 
{ 
	m_pView=pView; 
} 
void CLoadmachcode::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CLoadmachcode) 
	DDX_Control(pDX, IDC_LIST, m_listMachcode); 
	DDX_Text(pDX, IDC_FULLCODE, m_fullcode); 
	DDX_Text(pDX, IDC_MACHINECODE, m_machinecode); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CLoadmachcode, CDialog) 
	//{{AFX_MSG_MAP(CLoadmachcode) 
	ON_BN_CLICKED(IDC_LOADMACHINECODE, OnLoadmachinecode) 
	ON_BN_CLICKED(IDC_SETPARAMETER, OnSetparameter) 
	ON_BN_CLICKED(IDC_DELRECORD, OnDelrecord) 
	//ON_BN_CLICKED(IDC_LOADEXCEL, OnLoadexcel) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CLoadmachcode message handlers 
 
BOOL CLoadmachcode::Create()  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	 
	return CDialog::Create(CLoadmachcode::IDD ); 
} 
 
void CLoadmachcode::OnCancel()  
{ 
	// TODO: Add extra cleanup here 
 
	CDialog::OnCancel(); 
	DestroyWindow(); 
} 
 
BOOL CLoadmachcode::OnInitDialog()  
{ 
	BOOL result; 
	 
	CDialog::OnInitDialog(); 
	m_listMachcode.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 
    m_listMachcode.InsertColumn(0,_T("序号"),LVCFMT_IMAGE|LVCFMT_LEFT,50); 
	m_listMachcode.InsertColumn(1,_T("机器编号"),LVCFMT_CENTER,100); 
	m_listMachcode.InsertColumn(2,_T("类型"),LVCFMT_CENTER,60); 
	m_listMachcode.InsertColumn(3,_T("型号"),LVCFMT_CENTER,60); 
	m_listMachcode.InsertColumn(4,_T("硬件版本"),LVCFMT_CENTER,80); 
	m_listMachcode.InsertColumn(5,_T("软件版本"),LVCFMT_CENTER,80); 
	m_listMachcode.InsertColumn(6,_T("生产编号"),LVCFMT_CENTER,120); 
    m_listMachcode.InsertColumn(7,_T("操作员编号"),LVCFMT_CENTER,100); 
	m_listMachcode.InsertColumn(8,_T("操作员姓名"),LVCFMT_CENTER,100); 
	m_listMachcode.InsertColumn(9,_T("操作时间"),LVCFMT_CENTER,100); 
	// TODO: Add extra initialization here 
	result=m_database.OpenDatabase("lijian","lijian","123456","loadmachinecode"); 
	if(result==TRUE) 
	{ 
		result=m_database.Openrecordset("loadmachinecode"); 
		if(result==TRUE) 
		{ 
			//_bstr_t strSQL="Select * from loadmachinecode"; 
			//m_database.m_pRecordset=m_database.m_pConnection->Execute(strSQL,&m_database.RecordsAffected,adCmdText); 
			//CString message; 
			//message.Format("%s",m_database.m_pRecordset->GetCollect((long)1)); 
			//AfxMessageBox(message); 
			//CString str1,str2; 
			int i=0; 
			if(!m_database.m_pRecordset->adoEOF) 
			{ 
				m_database.m_pRecordset->MoveFirst(); 
			} 
            while(!m_database.m_pRecordset->adoEOF) 
			{ 
				 
				//str1=(char*)(_bstr_t)m_database.m_pRecordset->Fields->GetItem("iNumber")->Value; 
				//str2=(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cMachineCode"); 
				//m_listMachcode.InsertItem(i,str2,0);  
				m_listMachcode.InsertItem(i,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("iNumber"),0); 
				m_listMachcode.SetItemText(i,1,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cMachineCode")); 
				m_listMachcode.SetItemText(i,2,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cType")); 
				m_listMachcode.SetItemText(i,3,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cModel")); 
				m_listMachcode.SetItemText(i,4,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cHardwareEdition")); 
				m_listMachcode.SetItemText(i,5,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cSoftwareEdition")); 
				m_listMachcode.SetItemText(i,6,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cProduceCode")); 
				m_listMachcode.SetItemText(i,7,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cOperatorCode"));   
				m_listMachcode.SetItemText(i,8,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("cOperatorName")); 
				m_listMachcode.SetItemText(i,9,(char *)(_bstr_t)m_database.m_pRecordset->GetCollect("dDownloadTime")); 
				m_database.m_pRecordset->MoveNext(); 
				i++; 
				m_listMachcode.ShowWindow(SW_SHOW); 
			} 
		} 
		else 
		{ 
			AfxMessageBox("打开数据记录出错"); 
			return FALSE; 
		} 
	} 
	else 
	{ 
		AfxMessageBox("打开数据库出错"); 
		return FALSE; 
	} 
	 
	 
	GetPrivateProfileString("下载机器编号","MODEL","默认型号",setDlg.m_model.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_model.ReleaseBuffer(); 
	GetPrivateProfileString("下载机器编号","HARDWAREEDITION","默认版本",setDlg.m_hardware.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_hardware.ReleaseBuffer(); 
	GetPrivateProfileString("下载机器编号","SOFTWAREEDITION","默认版本",setDlg.m_software.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_software.ReleaseBuffer(); 
	 
	GetPrivateProfileString("下载机器编号","COM","默认端口",setDlg.m_comport.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_comport.ReleaseBuffer(); 
	GetPrivateProfileString("下载机器编号","MACHINECODE","默认编号",setDlg.m_machcode.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_machcode.ReleaseBuffer(); 
	GetPrivateProfileString("下载机器编号","PRODUCECODE","默认编号",setDlg.m_producecode.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_producecode.ReleaseBuffer(); 
	GetPrivateProfileString("下载机器编号","OPERATORCODE","默认编号",setDlg.m_operatorcode.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_operatorcode.ReleaseBuffer(); 
	GetPrivateProfileString("下载机器编号","OPERATORNAME","默认姓名",setDlg.m_operatorname.GetBuffer(MAXSIZE),MAXSIZE,INIFILEPATH); 
	setDlg.m_operatorname.ReleaseBuffer();  
	 
 
	return TRUE; 
} 
 
 
void CLoadmachcode::OnLoadmachinecode()  
{ 
	// TODO: Add your control notification handler code here 
	BOOL result=FALSE; 
	CComOperateNew loadmachDlg; 
	CString strFullcode; 
	 
	//序号 
	CString strNumber; 
	setDlg.m_number=GetPrivateProfileInt("下载机器编号","NUMBER",1,INIFILEPATH); 
	strNumber.Format(_T("%d"),setDlg.m_number+1); 
	WritePrivateProfileString("下载机器编号","NUMBER",strNumber.GetBuffer(MAXSIZE),INIFILEPATH); 
	//机器编号累加 
	setDlg.m_machcode.Format(_T("%d"),atoi(setDlg.m_machcode)+1); 
	WritePrivateProfileString("下载机器编号","MACHINECODE",setDlg.m_machcode.GetBuffer(MAXSIZE),INIFILEPATH); 
    //类型 
	//型号 
	//扩展 
	int extend=GetPrivateProfileInt("下载机器编号","EXTEND",11,INIFILEPATH); 
	CString m_extend; 
	m_extend.Format("%d",extend); 
	//硬件版本 
	//软件版本 
	//生产编号累加 
	CString nYear,nMonth,nDate,nTime; 
	CTime time=CTime::GetCurrentTime();//得到系统时间 
	//取系统时间年,月,日 
	nYear.Format("%04d",time.GetYear()); 
	nMonth.Format("%02d",time.GetMonth()); 
	nDate.Format("%02d",time.GetDay()); 
	 
	nTime=nYear+nMonth+nDate; 
	 
	if(atoi(nTime)>atoi(setDlg.m_producecode.Left(8))) 
	{ 
		setDlg.m_producecode=nTime+"0001"; 
	} 
	else 
	{ 
		CString str1,str2;		 
		str2=setDlg.m_producecode.Left(7); 
		str1.Format(_T("%d"),atoi(setDlg.m_producecode.Right(5))+1); 
		setDlg.m_producecode=str2+str1; 
	} 
	WritePrivateProfileString("下载机器编号","PRODUCECODE",setDlg.m_producecode.GetBuffer(MAXSIZE),INIFILEPATH); 
	//操作员编号 
	//操作员姓名 
	//系统下载时间 nTime 
     
	//完整内容表示 
    strFullcode=setDlg.m_machcode+setDlg.m_hardware+m_extend+setDlg.m_producecode+setDlg.m_software; 
	m_machinecode=setDlg.m_machcode ; 
	m_fullcode=strFullcode; 
	UpdateData(FALSE); 
	int length=strlen(strFullcode); 
	result=loadmachDlg.PortRW(LOAD_MACHNO,strFullcode.GetBuffer(length),2); 
	if(result==TRUE) 
	{ 
	/* 
	_bstr_t strSQL="INSERT INTO loadmachinecode( \ 
	[iNumber],[cMachineCode], [cType], [cModel], [cHardwareEdition], \ 
	[cSoftwareEdition], [cProduceCode], [cOperatorCode], [cOperatorName], \ 
	[dDownloadTime])VALUES((_variant_t)((long)strNUmber),setDlg.m_machcode, \ 
	setDlg.m_model,'新机',setDlg.m_hardware,setDlg.m_software,\ 
	setDlg.m_producecode,setDlg.m_operatorcode, \ 
	setDlg.m_operatorname,(_variant_t)nTime)"; 
		*/	 
		if(!m_database.m_pRecordset->adoEOF) 
		{ 
			m_database.m_pRecordset->MoveLast(); 
		} 
		//m_database.m_pConnection->Execute (strSQL,&m_database.RecordsAffected,adCmdText); 
		 
		 
		m_database.m_pRecordset->AddNew(); 
		m_database.m_pRecordset->PutCollect("iNumber",_variant_t(strNumber.GetBuffer(5))); 
		m_database.m_pRecordset->PutCollect("cMachineCode",setDlg.m_machcode.GetBuffer(10)); 
		m_database.m_pRecordset->PutCollect("cType",setDlg.m_model.GetBuffer(5)); 
		m_database.m_pRecordset->PutCollect("cModel","新机"); 
		m_database.m_pRecordset->PutCollect("cHardwareEdition",setDlg.m_hardware.GetBuffer(4)); 
		m_database.m_pRecordset->PutCollect("cSoftwareEdition",setDlg.m_software.GetBuffer(4)); 
		m_database.m_pRecordset->PutCollect("cProduceCode",setDlg.m_producecode.GetBuffer(12)); 
		m_database.m_pRecordset->PutCollect("cOperatorCode",setDlg.m_operatorcode.GetBuffer(16)); 
		m_database.m_pRecordset->PutCollect("cOperatorName",setDlg.m_operatorname.GetBuffer(10)); 
		m_database.m_pRecordset->PutCollect("dDownloadTime",nTime.GetBuffer(8));		 
		m_database.m_pRecordset->Update(); 
		 
		m_listMachcode.InsertItem(0,(char *)(_bstr_t)strNumber.GetBuffer(5),0); 
		m_listMachcode.SetItemText(0,1,setDlg.m_machcode); 
		m_listMachcode.SetItemText(0,2,setDlg.m_model); 
		m_listMachcode.SetItemText(0,3,"新机"); 
		m_listMachcode.SetItemText(0,4,setDlg.m_hardware ); 
		m_listMachcode.SetItemText(0,5,setDlg.m_software ); 
		m_listMachcode.SetItemText(0,6,setDlg.m_producecode ); 
		m_listMachcode.SetItemText(0,7,setDlg.m_operatorcode );   
		m_listMachcode.SetItemText(0,8,setDlg.m_operatorname ); 
		m_listMachcode.SetItemText(0,9,nTime); 
		 
		m_listMachcode.ShowWindow(SW_SHOW); 
		AfxMessageBox("下载机器编号成功"); 
		return; 
	} 
	strFullcode.ReleaseBuffer(); 
} 
 
void CLoadmachcode::OnSetparameter()  
{ 
	// TODO: Add your control notification handler code here 
	CSetParameter setDlg; 
	setDlg.DoModal(); 
	 
} 
 
void CLoadmachcode::OnDelrecord()  
{ 
	// TODO: Add your control notification handler code here 
	if(m_database.m_pRecordset->adoEOF) 
	{ 
		AfxMessageBox("表中没有记录"); 
		return; 
	} 
	else 
	{ 
		m_database.m_pRecordset->MoveFirst(); 
		while(!m_database.m_pRecordset->adoEOF) 
		{ 
			m_database.m_pRecordset->Delete(adAffectCurrent); 
			m_database.m_pRecordset->Update(); 
			m_database.m_pRecordset->MoveNext(); 
		} 
		m_listMachcode.DeleteAllItems(); 
		m_listMachcode.ShowWindow(SW_SHOW); 
		AfxMessageBox("记录已清空"); 
	} 
}