// DLG_SMSJS_Export.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "DLG_SMSJS_Export.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_SMSJS_Export dialog DLG_SMSJS_Export::DLG_SMSJS_Export(CWnd* pParent /*=NULL*/) : CDialog(DLG_SMSJS_Export::IDD, pParent) { //{{AFX_DATA_INIT(DLG_SMSJS_Export) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_pAdo = NULL; m_pList = NULL; } void DLG_SMSJS_Export::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_SMSJS_Export) DDX_Control(pDX, IDD_SMSJS_EXPORT_SEL, m_B_OnlySel); DDX_Control(pDX, IDD_SMSJS_EXPORT_HEAD, m_B_AddHead); DDX_Control(pDX, IDD_SMSJS_EXPORT_LIST, m_L_List); DDX_Control(pDX, IDD_SMSJS_EXPORT_FILENAME, m_E_FileName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_SMSJS_Export, CDialog) //{{AFX_MSG_MAP(DLG_SMSJS_Export) ON_BN_CLICKED(IDD_SMSJS_EXPORT_CLEAR, OnSmsjsExportClear) ON_BN_CLICKED(IDD_SMSJS_EXPORT_SELALL, OnSmsjsExportSelall) ON_BN_CLICKED(IDD_SMSJS_EXPORT_GETFILE, OnSmsjsExportGetfile) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_SMSJS_Export message handlers BOOL DLG_SMSJS_Export::OnInitDialog() { CDialog::OnInitDialog(); InitList(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_SMSJS_Export::InitList() { m_L_List.Init(true,-1,-1,-1); m_L_List.InsertColumn( 0 , _T("˳��") , LVCFMT_LEFT , 40 , 0); m_L_List.InsertColumn( 1 , _T(" �ֶ���") , LVCFMT_LEFT , 120 , 1); m_L_List.SetTextColor( RGB(0,0,255) ); TCHAR * pItem[] = { _T("���ͺ���"), _T("������"), _T("���պ���"), _T("����ʱ��"), _T("����"), _T("�ֻ�������") #ifdef MOBSET_OEM_SNLD _T("�dz�"), _T("�Ա�"), _T("����"), _T("��˾"), _T("ְ��"), _T("�绰"), _T("����"), _T("Email"), _T("QQ"), _T("��ע"), #endif #ifdef YQ_VER _T("�������"), _T("�ֻ�������") #endif }; TCHAR Buf[256]; int lCount=6; #ifdef MOBSET_OEM_SNLD lCount += 10; #endif for ( int i = 0 ; i<lCount ; i++ ) { m_L_List.InsertItem( i , _itot(i+1,Buf,10) ); m_L_List.SetItemText(i , 1 , pItem[i] ); m_L_List.SetItemData(i , i ); //���������Ϊ��˳�����ڴ��� } #ifdef YQ_VER lCount += 2; int j=0; for ( ; i<lCount ; i++ ) { m_L_List.InsertItem( i , _itot(i+1,Buf,10) ); m_L_List.SetItemText(i , 1 , pItem[i] ); m_L_List.SetItemData(i , 20+j ); //���������Ϊ��˳�����ڴ��� j++; } #endif m_L_List.CheckAll(); m_L_List.NoverCheck(); m_L_List.ReShowSort(); } void DLG_SMSJS_Export::OnSmsjsExportClear() { m_L_List.ClearAll(); } void DLG_SMSJS_Export::OnSmsjsExportSelall() { m_L_List.CheckAll(); } void DLG_SMSJS_Export::OnOK() { long lItemCount = m_L_List.GetItemCount(); long lExPortItem[50];memset(&lExPortItem,0,sizeof(lExPortItem)); for ( int j=0 ; j < 50 ; j++ ) lExPortItem[j] = -1; long lCheckCount = 0; for ( int i=0 ; i<lItemCount ; i++ ) { if ( m_L_List.GetCheck(i) ) { lExPortItem[lCheckCount] = m_L_List.GetItemData(i) ; lCheckCount ++; } } if ( lCheckCount <=0 ) { MessageBox( _T("��������ߵ��ֶ��б���ѡ��һ�����������ֶΡ�") , _T("ѡ�����") , MB_OK|MB_ICONWARNING ); return; } TCHAR szFileName[512]; m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) ); if ( _tcslen(AllTrim(szFileName)) <=0 ) { MessageBox( _T("��������뵼�����ļ�����") , _T("����") , MB_OK|MB_ICONWARNING ); m_E_FileName.SetFocus(); return; } CFile fTalk; if ( !fTalk.Open( szFileName , CFile::modeReadWrite|CFile::modeCreate ) ) { TCHAR Buf[512]; _stprintf( Buf , _T("�����ļ�:%s\n��������!") , szFileName ); MessageBox( Buf , _T("����") , MB_ICONWARNING|MB_OK ); return; } CString str; CString strTemp,strTemp2; long lAdrCount = m_pList->GetItemCount(); TCHAR Buf[1024]; TCHAR Buf2[1024]; TCHAR Buf3[1024]; #ifdef UNICODE char szTempA[4096]; #endif long lRecnCount= 0; //�ܼ�¼�� long lFileSize = 0; //�ļ����ֽ��� long lBufLen = 0; COleDateTime t; if ( m_B_AddHead.GetCheck() )//�����ֶ�ͷ { _tcscpy(Buf,_T(";")); for ( int j = 0; j<lCheckCount ; j++ ) { switch( lExPortItem[j] ) { case 0: //���ź��� _tcscat(Buf , _T("���ͺ���")); break; case 1: //������ _tcscat(Buf , _T("������")); break; case 2: //���պ��� _tcscat(Buf , _T("���պ���")); break; case 3: //����ʱ�� _tcscat(Buf , _T("����ʱ��")); break; case 4: //���� _tcscat(Buf , _T("��������")); break; case 5: //������ _tcscat(Buf , _T("������")); break; case 6: //�dz� _tcscat(Buf , _T("�dz�")); break; case 7: //�Ա� _tcscat(Buf , _T("�Ա�")); break; case 8: //���� _tcscat(Buf , _T("����")); break; case 9: //��˾ _tcscat(Buf , _T("��˾")); break; case 10: //ְ�� _tcscat(Buf , _T("ְ��")); break; case 11: //�绰 _tcscat(Buf , _T("�绰")); break; case 12: //���� _tcscat(Buf , _T("����")); break; case 13: //Email _tcscat(Buf , _T("Email")); break; case 14: //QQ _tcscat(Buf , _T("QQ")); break; case 15: //��ע _tcscat(Buf , _T("��ע")); break; case 20: //���� _tcscat(Buf , _T("����")); break; case 21: //������ _tcscat(Buf , _T("������")); break; } if ( j < lCheckCount-1 ) //���һ�����ü�","�� _tcscat(Buf , _T(",") ); } _tcscat(Buf , _T("\r\n") ); //���� #ifdef UNICODE CAdoRecordSet::Ado_W2A(Buf,szTempA); lBufLen = strlen(szTempA); fTalk.Write( szTempA , lBufLen ); #else lBufLen = _tcslen(Buf); fTalk.Write( Buf , lBufLen ); #endif lFileSize = lFileSize + lBufLen ; //ȡ�����ֽ��� } for ( i = 0; i<lAdrCount ; i++ ) { memset(Buf , 0 , sizeof(Buf) ); BOOL bExport=true; if ( m_B_OnlySel.GetCheck() ) { UINT uStatus= m_pList->GetItemState(i,LVIS_SELECTED); if ( uStatus&LVIS_SELECTED ) bExport = true; else bExport = false; } long lSmsID = m_pList->GetItemData(i); CString str; str.Format( _T("select * from smsrecv where RecvID=%d") , lSmsID ); if ( bExport && m_pAdo->Open(str) && m_pAdo->GetRecordCount()>0 ) { m_pAdo->MoveFirst(); for( int j = 0 ; j< lCheckCount ; j++ ) //������ѡ�е��ֶΣ�ȡͨѶ¼���ݽ��б��档 { memset(Buf2 , 0 , sizeof(Buf2) ); memset(Buf3 , 0 , sizeof(Buf3) ); switch( lExPortItem[j] ) { case 0: //���ͺ��� m_pAdo->GetCollect( _T("SendNum") , Buf2 ); break; case 1: //������ m_pAdo->GetCollect( _T("Sender") , Buf2 ); break; case 2: //���պ��� m_pAdo->GetCollect( _T("Recvnum") , Buf2 ); break; case 3: //����ʱ�� m_pAdo->GetCollect( _T("RecvTime") , t ); if (t.GetStatus()==COleDateTime::valid) _stprintf(Buf2,_T("%04d.%02d.%02d %02d:%02d") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute()); else memset(Buf2,0,sizeof(Buf2)); break; case 4: //���� m_pAdo->GetCollect( _T("Msg") , Buf2 ); ExChar(Buf2 , _T("\r") ); ExChar(Buf2 , _T("\n") ); str=Buf2; str.Replace( _T(",") , _T("��") ); _tcscpy(Buf2 , str ); break; case 5: //������ m_pAdo->GetCollect( _T("Province") , strTemp ); m_pAdo->GetCollect( _T("City") , strTemp2 ); if ( strTemp2.GetLength()>0 ) _stprintf(Buf2 , _T("%s-%s") ,strTemp,strTemp2 ); else _tcscpy(Buf2 , strTemp ); break; case 6: //�dz� m_pAdo->GetCollect( _T("NickName") , Buf2 ); break; case 7: //�Ա� m_pAdo->GetCollect( _T("Sex") , Buf2 ); break; case 8: //���� m_pAdo->GetCollect( _T("Birthday") , t ); if (t.GetStatus()==COleDateTime::valid) _stprintf(Buf2,_T("%04d.%02d.%02d") , t.GetYear(),t.GetMonth(),t.GetDay()); else memset(Buf2,0,sizeof(Buf2)); break; case 9: //��˾ m_pAdo->GetCollect( _T("Ltd") , Buf2 ); break; case 10: //ְ�� m_pAdo->GetCollect( _T("Job") , Buf2 ); break; case 11: //�绰 m_pAdo->GetCollect( _T("Tel") , Buf2 ); break; case 12: //���� m_pAdo->GetCollect( _T("Fax") , Buf2 ); break; case 13: //Email m_pAdo->GetCollect( _T("Email") , Buf2 ); break; case 14: //QQ m_pAdo->GetCollect( _T("QQ") , Buf2 ); break; case 15: //��ע m_pAdo->GetCollect( _T("BZ") , Buf2 ); ExChar(Buf2 , _T("\r") ); ExChar(Buf2 , _T("\n") ); break; case 20: //���� m_pAdo->GetCollect( _T("Type1") , Buf2 ); m_pAdo->GetCollect( _T("Type2") , Buf3 ); if ( _tcslen(Buf3)>0 ) { _tcscat( Buf2 , _T("-") ); _tcscat( Buf2 , Buf3 ); } break; case 21: //������ m_pAdo->GetCollect( _T("Province") , Buf2 ); m_pAdo->GetCollect( _T("City") , Buf3 ); if ( _tcslen(Buf3)>0 ) { _tcscat( Buf2 , _T("-") ); _tcscat( Buf2 , Buf3 ); } break; } _tcscat(Buf , Buf2 ); if ( j < lCheckCount-1 ) //���һ�����ü�","�� _tcscat(Buf , _T(",") ); } _tcscat(Buf , _T("\r\n") ); //���� #ifdef UNICODE CAdoRecordSet::Ado_W2A(Buf,szTempA); lBufLen = strlen(szTempA); fTalk.Write( szTempA , lBufLen ); #else lBufLen = _tcslen(Buf); fTalk.Write( Buf , lBufLen ); #endif lRecnCount++; //ȡ���ܼ�¼�� lFileSize = lFileSize + lBufLen ; //ȡ�����ֽ��� } } fTalk.Close(); this->EndWaitCursor(); _stprintf(Buf , _T("���������б��ɹ����������£�\n�����ļ�����:TXT\n������¼��:%d\n�����ֽ���:%d\n�����ļ���:%s") , lRecnCount , lFileSize , szFileName); MessageBox( Buf , _T("�����ɹ�"),MB_OK|MB_ICONINFORMATION ); CDialog::OnOK(); } void DLG_SMSJS_Export::OnSmsjsExportGetfile() { #define FILE_FILTER_TEXT \ TEXT("txt�ı��ļ� (*.txt)\0*.txt\0")\ TEXT("Excel csv �ļ� (*.csv)\0*.csv\0")\ TEXT("�����ļ� (*.*)\0*.*;\0\0") TCHAR szFile[ 256 ]; TCHAR szFileB[ 256 ]; *szFileB = NULL; _stprintf( szFile , _T("SmsRecv") ); 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("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 ( ::GetSaveFileName( &sOpen ) ) { m_E_FileName.SetWindowText(sOpen.lpstrFile); } } void DLG_SMSJS_Export::SetParam(CAdoRecordSet *pAdo, CReportCtrl *pList) { m_pAdo = pAdo; m_pList = pList; }