// DLG_User_Inport_LT.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "DLG_User_Inport_LT.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_User_Inport_LT dialog #include "DLG_Send.h" DLG_User_Inport_LT::DLG_User_Inport_LT(CWnd* pParent /*=NULL*/) : CDialog(DLG_User_Inport_LT::IDD, pParent) { //{{AFX_DATA_INIT(DLG_User_Inport_LT) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_pDlgSend = (DLG_Send *)pParent; } void DLG_User_Inport_LT::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_User_Inport_LT) DDX_Control(pDX, IDC_USER_INPORT_LT_USERNAME, m_E_UserName); DDX_Control(pDX, IDC_USER_INPORT_LT_JGNAME, m_E_JGName); DDX_Control(pDX, IDC_USER_INPORT_LT_JD, m_B_JD); DDX_Control(pDX, IDC_USER_INPORT_LT_ININAME, m_E_IniName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_User_Inport_LT, CDialog) //{{AFX_MSG_MAP(DLG_User_Inport_LT) ON_BN_CLICKED(IDC_USER_INPORT_LT_JGNAME_SEL, OnUserInportLtJgnameSel) ON_BN_CLICKED(IDC_USER_INPORT_LT_ININAME_SEL, OnUserInportLtIninameSel) ON_BN_CLICKED(IDC_USER_INPORT_LT_USERNAME_SEL, OnUserInportLtUsernameSel) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_User_Inport_LT message handlers void DLG_User_Inport_LT::OnUserInportLtJgnameSel() { #define FILE_FILTER_TEXT \ TEXT("Excel 文件 (*.xls,*.xlsx)\0*.xls\0*.xlsx\0")\ TEXT("所有文件 (*.*)\0*.*;\0\0") TCHAR szFile[ 256 ]; TCHAR szFileB[ 256 ]; *szFileB = NULL; _stprintf( szFile , _T("*.xls") ); OPENFILENAME sOpen; sOpen.lStructSize = sizeof( sOpen ); sOpen.hwndOwner = this->m_hWnd ; sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY; sOpen.lpstrFilter = FILE_FILTER_TEXT; sOpen.lpstrDefExt = _T("价格.xls"); sOpen.lpstrCustomFilter = NULL; sOpen.nMaxCustFilter = 0; sOpen.lpstrFile = szFile; sOpen.nMaxFile = sizeof( szFile ); sOpen.lpstrFileTitle = szFileB; sOpen.nMaxFileTitle = sizeof( szFileB ); sOpen.lpstrInitialDir = NULL; sOpen.lpstrTitle = _T("打开价格文件"); if ( ::GetOpenFileName( &sOpen ) ) { m_E_JGName.SetWindowText(sOpen.lpstrFile); return ; } } void DLG_User_Inport_LT::OnUserInportLtIninameSel() { #define FILE_FILTER_TEXT2 \ TEXT("Ini 文件 (*.ini)\0*.ini\0")\ TEXT("所有文件 (*.*)\0*.*;\0\0") TCHAR szFile[ 256 ]; TCHAR szFileB[ 256 ]; *szFileB = NULL; _stprintf( szFile , _T("*.ini") ); OPENFILENAME sOpen; sOpen.lStructSize = sizeof( sOpen ); sOpen.hwndOwner = this->m_hWnd ; sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY; sOpen.lpstrFilter = FILE_FILTER_TEXT2; sOpen.lpstrDefExt = _T("报价定位.ini"); sOpen.lpstrCustomFilter = NULL; sOpen.nMaxCustFilter = 0; sOpen.lpstrFile = szFile; sOpen.nMaxFile = sizeof( szFile ); sOpen.lpstrFileTitle = szFileB; sOpen.nMaxFileTitle = sizeof( szFileB ); sOpen.lpstrInitialDir = NULL; sOpen.lpstrTitle = _T("打开配置文件"); if ( ::GetOpenFileName( &sOpen ) ) { m_E_IniName.SetWindowText(sOpen.lpstrFile); return ; } } void DLG_User_Inport_LT::OnUserInportLtUsernameSel() { #define FILE_FILTER_TEXT3 \ TEXT("TXT 文件 (*.txt)\0*.txt\0")\ TEXT("所有文件 (*.*)\0*.*;\0\0") TCHAR szFile[ 256 ]; TCHAR szFileB[ 256 ]; *szFileB = NULL; _stprintf( szFile , _T("*.txt") ); OPENFILENAME sOpen; sOpen.lStructSize = sizeof( sOpen ); sOpen.hwndOwner = this->m_hWnd ; sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY; sOpen.lpstrFilter = FILE_FILTER_TEXT3; sOpen.lpstrDefExt = _T("*.txt"); sOpen.lpstrCustomFilter = NULL; sOpen.nMaxCustFilter = 0; sOpen.lpstrFile = szFile; sOpen.nMaxFile = sizeof( szFile ); sOpen.lpstrFileTitle = szFileB; sOpen.nMaxFileTitle = sizeof( szFileB ); sOpen.lpstrInitialDir = NULL; sOpen.lpstrTitle = _T("打开用户文件"); if ( ::GetOpenFileName( &sOpen ) ) { m_E_UserName.SetWindowText(sOpen.lpstrFile); return ; } } void DLG_User_Inport_LT::OnOK() { CString strJGName; CString strIniName; CString strUserName; m_E_JGName.GetWindowText(strJGName); m_E_IniName.GetWindowText(strIniName); m_E_UserName.GetWindowText(strUserName); if ( strJGName.GetLength() <=0 ) { MessageBox( _T("请选择价格表,否则无法正常导入!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_JGNAME)->SetFocus(); return ; } if ( strIniName.GetLength() <=0 ) { MessageBox( _T("请选择配置文件,否则无法正常导入!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_ININAME)->SetFocus(); return ; } if ( strUserName.GetLength() <=0 ) { MessageBox( _T("请选择用户文件,否则无法正常导入!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_USERNAME)->SetFocus(); return ; } //打开价格表 //第一步,连接到Excel数据库 CAdoConnection adoConnectX; CAdoRecordSet adoRSX,adoRSX2,adoRSX3; if ( adoConnectX.ConnectExcel(strJGName) ) { adoRSX.SetAdoConnection(&adoConnectX); adoRSX2.SetAdoConnection(&adoConnectX); adoRSX3.SetAdoConnection(&adoConnectX); adoRSX.Open(_T("select * from [Sheet1$A1:IV65536]") ); adoRSX2.Open(_T("select * from [Sheet2$A1:IV65536]") ); adoRSX3.Open(_T("select * from [Sheet3$A1:IV65536]") ); } else { MessageBox( _T("打开价格表错误,请检查是否正确或者已加密码。") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_JGNAME)->SetFocus(); return ; } //打开用户表 CFile fTalk; if ( !fTalk.Open( strUserName , CFile::modeRead ) ) { MessageBox( _T("打开用户表错误,请检查是否正确。") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_USERNAME)->SetFocus(); return ; } //打开配置表 CFile fTalk2; if ( !fTalk2.Open( strIniName , CFile::modeRead ) ) { MessageBox( _T("打开配置文件错误,请检查是否正确。") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_ININAME)->SetFocus(); return ; } if ( fTalk2.GetLength()<1000 ) { fTalk2.Close(); MessageBox( _T("配置文件内容过少,请检查是否正确。") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_INPORT_LT_ININAME)->SetFocus(); return ; } fTalk2.Close(); TCHAR szPNBuf[1024]; TCHAR szName[1024]; TCHAR szName2[1024]; long lLineCount=0; long lNameCount=0; long lJGCount=0; CString str; DWORD dwBeginTime = ::GetTickCount(); #ifdef UNICODE TCHAR szTemp[1024]={0}; char szTempA[1024]={0}; char szPNBuf2[1024]={0}; #endif Send_User Luser; while (true) { memset( szPNBuf , 0 , sizeof( szPNBuf ) ); #ifdef UNICODE if ( ReadLine( &fTalk , "\n", szPNBuf2 , sizeof( szPNBuf2 )-5 ) ) { _tcscpy(szPNBuf,CAdoRecordSet::Ado_A2W(szPNBuf2,szTemp)); #else if ( ReadLine( &fTalk , "\n" , szPNBuf , sizeof( szPNBuf )-5 ) ) //读入一行 { #endif lLineCount ++; ExChar( szPNBuf , _T("\r") ); ExChar( szPNBuf , _T("\n") ); _tcscat(szPNBuf,_T(" ")); memset(&Luser,0,sizeof(Luser)); for ( int i=0 ; i<3 ; i++ ) //开始分隔行数 { memset(szName , 0 , sizeof(szName) ); if ( GetReqMess( szPNBuf , szName , i , ' ' ) ) { AllTrim(szName); ExChar(szName,_T("\r")); ExChar(szName,_T("\n")); ExChar(szName,_T("\t")); switch(i) { case 0: _tcscpy(Luser.szName , szName ); break; case 1: _tcscpy(Luser.szMobile , szName ); break; case 2: { CString strMsg; TCHAR * p = NULL; for ( int j=0 ; j<10 ; j++ ) { if ( j==0 ) p = _tcstok(szName , _T("、") ); else p = _tcstok(NULL , _T("、") ); if ( p ) { long lBM=0; long lH=0; long lL=0; long lSH=0; long lSL=0; GetPrivateProfileString(p, _T("版面"), _T("0"), szName2, sizeof(szName2), strIniName); lBM = _ttol(szName2); GetPrivateProfileString(p, _T("报价行"), _T("0"), szName2, sizeof(szName2), strIniName); lH = _ttol(szName2); GetPrivateProfileString(p, _T("报价列"), _T("0"), szName2, sizeof(szName2), strIniName); lL = _ttol(szName2); GetPrivateProfileString(p, _T("升跌行"), _T("0"), szName2, sizeof(szName2), strIniName); lSH = _ttol(szName2); GetPrivateProfileString(p, _T("升跌列"), _T("0"), szName2, sizeof(szName2), strIniName); lSL = _ttol(szName2); if ( lBM>0 && lH>0 && lL>0 && lSH>0 && lSL>0 ) //数据正确 { lJGCount ++; try { //读取数据 CAdoRecordSet * pAdo=&adoRSX; CString strBJ; CString strJD; if ( lBM==2 ) //表2 pAdo=&adoRSX2; if ( lBM==3 ) //表3 pAdo=&adoRSX3; //取报价 pAdo->Move(lH-2); pAdo->GetCollect(lL-1,strBJ);strBJ.TrimLeft(),strBJ.TrimRight(); strMsg += CString(p); strMsg += strBJ; if ( this->m_B_JD.GetCheck() ) { //取涨跌 pAdo->Move(lSH-2); pAdo->GetCollect(lSL-1,strJD);strJD.TrimLeft(),strJD.TrimRight(); if ( strJD.GetLength()<=0 ) strJD = _T("+0"); strMsg += strJD; } } catch(...) { } } } else { break; } } if ( strMsg.GetLength()>0 ) _tcscpy(Luser.szBZ , strMsg ); } break; } } else { break; } } if ( _tcslen(Luser.szMobile)>0 ) { //添加用户 m_pDlgSend->AddUser(Luser , -1); lNameCount++; } } else { break; } } str.Format( _T("导入报价成功,共用时%d秒!\r\n导入记录数:%d\r\n导入报价数:%d\r\n导入成功后,已自动设置为长短信方式发送。\r\n导入成功后,已自动设置为发送备注方式,请不要更改!") , (GetTickCount()-dwBeginTime)/1000 ,lNameCount,lJGCount); MessageBox( str , _T("提示") , MB_ICONINFORMATION ); CDialog::OnOK(); } long DLG_User_Inport_LT::ReadLine(CFile *file, char *pSplit, char *szBuf, long lLen) { int i,j; int lLineCount = 0; int lSplitLen = strlen(pSplit); char c; i = 0; while ( true ) { j = file->Read( &c , 1 ); if ( j < 1 ) { szBuf[i]=0; return i; } if ( i >= lLen-1 ) { szBuf[i] = 0; return i; } szBuf[i] = c; i++; if ( !memcmp( szBuf+i-lSplitLen , pSplit , lSplitLen ) ) //换行标志 { szBuf[i] = 0; return i; } } return 0; }