CorpSms/DLG_User_InportC.cpp
2025-02-27 16:58:16 +08:00

956 lines
24 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// DLG_User_InportC.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "DLG_User_InportC.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_User_InportC dialog
#include "MainFrm.h"
#include "FCAddress.h"
#include "DLG_User_ModifyK.h"
#include "DLG_AddWarning.h"
DLG_User_InportC::DLG_User_InportC(CWnd* pParent /*=NULL*/)
: CDialog(DLG_User_InportC::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_User_InportC)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pParent = pParent;
m_bInport = true;
m_pList = NULL;
m_bReMobile = false;
m_lExportType = 0;
m_pFCAddress = NULL;
m_pFSAddress = NULL;
}
void DLG_User_InportC::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_User_InportC)
DDX_Control(pDX, IDC_USER_INPORTC_S1, m_B_Tips);
DDX_Control(pDX, IDC_USER_INPORTC_LIST, m_L_List);
DDX_Control(pDX, IDC_USER_INPORTC_FILENAME, m_E_FileName);
DDX_Control(pDX, IDC_USER_INPORTC_REMOBILE, m_B_ReMobile);
DDX_Control(pDX, IDC_USER_INPORTC_RECORD_SPLIT, m_C_RecordSplit);
DDX_Control(pDX, IDC_USER_INPORTC_FIELD_SPLIT, m_C_FieldSplit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_User_InportC, CDialog)
//{{AFX_MSG_MAP(DLG_User_InportC)
ON_BN_CLICKED(IDC_USER_INPORTC_GETFILE, OnUserInportkGetfile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_User_InportC message handlers
BOOL DLG_User_InportC::OnInitDialog()
{
CDialog::OnInitDialog();
if ( !m_bInport )
{
this->SetWindowText(_T("导出客户资料(*.txt , *.csv)"));
CWnd * pWnd = (CWnd*)GetDlgItem(IDOK);
pWnd->SetWindowText(_T("导 出"));
pWnd = (CWnd*)GetDlgItem(IDC_USER_INPORTC_S2);
pWnd->SetWindowText(_T("导出字段与顺序(拖动选择,打勾为导出字段)"));
pWnd = (CWnd*)GetDlgItem(IDC_USER_INPORTC_S1);
pWnd->SetWindowText(_T("导出txt/csv文件名"));
m_C_FieldSplit.EnableWindow(false);
m_C_RecordSplit.EnableWindow(false);
}
m_C_FieldSplit.SetCurSel(0);
m_C_RecordSplit.SetCurSel(0);
InitList();
if ( !m_bInport)
{
m_B_ReMobile.ShowWindow(SW_HIDE);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_User_InportC::OnOK()
{
m_bReMobile = m_B_ReMobile.GetCheck();
BOOL b= false;
if ( m_bInport )
{
b=User_Inport();
}
else
{
b=User_Export();
}
if (b)
CDialog::OnOK();
}
void DLG_User_InportC::SetInport(CListCtrl *pList, BOOL bInport , long lType)
{
m_pList = pList;
m_bInport = bInport;
m_lExportType = lType;
switch ( lType )
{
case 1:
m_pFSAddress = (CFSAddress *)m_pParent;
m_AdoRS.SetAdoConnection( &m_pFSAddress->m_pMainFrame->m_adoConnection );
break;
case 0:
default:
m_pFCAddress = (CFCAddress *)m_pParent;
m_AdoRS.SetAdoConnection( &m_pFCAddress->m_pMainFrame->m_adoConnection );
break;
}
}
void DLG_User_InportC::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) );
switch ( m_lExportType )
{
case 1:
{
TCHAR * pItem[] =
{
_T("客户编号"),
_T("姓 名"),
_T("昵 称"),
_T("性 别"),
_T("生 日"),
_T("入会日期"),
_T("截止日期"),
_T("联系电话"),
_T("手机号码"),
_T("Email"),
_T("地址"),
_T("业务员"),
_T("金额"),
_T("备注"),
};
TCHAR Buf[256];
for ( int i = 0 ; i<14 ; 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 ); //设置这个是为了顺序不至于打乱
}
}
break;
case 0:
default:
{
TCHAR * pItem[] =
{
_T("车 主"),
_T("车 牌"),
_T("车 型"),
_T("发动机号"),
_T("底盘号"),
_T("购车日期"),
_T("保险日期"),
_T("联系人1"),
_T("手机1"),
_T("电话1"),
_T("地址1"),
_T("邮编1"),
_T("单位1"),
_T("生日1"),
_T("联系人2"),
_T("手机2"),
_T("电话2"),
_T("地址2"),
_T("邮编2"),
_T("单位2"),
_T("生日2"),
_T("备 注"),
};
TCHAR Buf[256];
for ( int i = 0 ; i<22 ; 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 ); //设置这个是为了顺序不至于打乱
}
}
break;
}
m_L_List.CheckAll();
m_L_List.NoverCheck();
m_L_List.ReShowSort();
}
BOOL DLG_User_InportC::User_Export()
{
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 )
{
if ( m_bInport )
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导入字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导出字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
return false;
}
TCHAR szFileName[512];
m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
if ( _tcslen(AllTrim(szFileName)) <=0 )
{
if ( m_bInport )
MessageBox( _T("你必须输入导入的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须输入导出的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
m_E_FileName.SetFocus();
return false;
}
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 false;
}
long lAdrCount = m_pList->GetItemCount();
TCHAR Buf[1024];
TCHAR Buf2[256];
long lRecnCount= 0; //总记录数
long lFileSize = 0; //文件总字节数
long lBufLen = 0;
#ifdef UNICODE
char szTempA[4096];
#endif
CString strSelect;
switch ( m_lExportType )
{
case 1:
if ( _tcslen(m_pFSAddress->m_szGroupID)<=0 ) //如果是根用户组为NULL
strSelect.Format( _T("select * from saddress where GroupID is null or len(GroupID)=0 and UserType='1' ") ); //查找此组下的用户
else
strSelect.Format( _T("Select * from saddress where GroupID='%s' AND UserType='1' ") , m_pFSAddress->m_szGroupID ); //查找此组下的用户
break;
case 0:
default:
if ( _tcslen(m_pFCAddress->m_szGroupID)<=0 ) //如果是根用户组为NULL
strSelect.Format( _T("select * from caddress where GroupID is null or len(GroupID)=0 and UserType='1' ") ); //查找此组下的用户
else
strSelect.Format( _T("Select * from caddress where GroupID='%s' AND UserType='1' ") , m_pFCAddress->m_szGroupID ); //查找此组下的用户
break;
}
BOOL b = m_AdoRS.Open( strSelect );
long lCount = m_AdoRS.GetRecordCount();
if ( b && lCount )
{
COleDateTime t;
m_AdoRS.MoveFirst();
while(!m_AdoRS.IsEOF() )
{
memset(Buf , 0 , sizeof(Buf) );
for( int j = 0 ; j< lCheckCount ; j++ ) //按按所选中的字段,取通讯录内容进行保存。
{
memset(Buf2 , 0 , sizeof(Buf2) );
switch( lExPortItem[j] )
{
case 0:
switch ( m_lExportType )
{
case 1://客户编号
m_AdoRS.GetCollect( _T("BH") , Buf2 );
break;
case 0://车主
default:
m_AdoRS.GetCollect( _T("Name") , Buf2 );
break;
}
break;
case 1:
switch ( m_lExportType )
{
case 1://姓 名
m_AdoRS.GetCollect( _T("Name") , Buf2 );
break;
case 0://车牌
default:
m_AdoRS.GetCollect( _T("CarNum") , Buf2 );
break;
}
break;
case 2:
switch ( m_lExportType )
{
case 1://昵 称
m_AdoRS.GetCollect( _T("NickName") , Buf2 );
break;
case 0://车 型
default:
m_AdoRS.GetCollect( _T("CarType") , Buf2 );
break;
}
break;
case 3:
switch ( m_lExportType )
{
case 1://性 别
m_AdoRS.GetCollect( _T("Sex") , Buf2 );
break;
case 0://发动机号
default:
m_AdoRS.GetCollect( _T("FDJNum") , Buf2 );
break;
}
break;
case 4:
switch ( m_lExportType )
{
case 1://生 日
m_AdoRS.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 0://底盘号
default:
m_AdoRS.GetCollect( _T("DPNum") , Buf2 );
break;
}
break;
case 5:
switch ( m_lExportType )
{
case 1://入会日期
m_AdoRS.GetCollect( _T("InDate") , 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 0://购车日期
default:
m_AdoRS.GetCollect( _T("BuyDate") , 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;
}
break;
case 6:
switch ( m_lExportType )
{
case 1://截止日期
m_AdoRS.GetCollect( _T("OutDate") , 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 0://保险日期
default:
m_AdoRS.GetCollect( _T("BXDate") , 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;
}
break;
case 7:
switch ( m_lExportType )
{
case 1://联系电话
m_AdoRS.GetCollect( _T("Tel") , Buf2 );
break;
case 0://联系人1
default:
m_AdoRS.GetCollect( _T("LXR") , Buf2 );
break;
}
break;
case 8:
switch ( m_lExportType )
{
case 1://手机号码
m_AdoRS.GetCollect( _T("Mobile") , Buf2 );
break;
case 0://手机1
default:
m_AdoRS.GetCollect( _T("Mobile") , Buf2 );
break;
}
break;
case 9:
switch ( m_lExportType )
{
case 1://Email
m_AdoRS.GetCollect( _T("Email") , Buf2 );
break;
case 0://电话1
default:
m_AdoRS.GetCollect( _T("Tel") , Buf2 );
break;
}
break;
case 10:
switch ( m_lExportType )
{
case 1://地址
m_AdoRS.GetCollect( _T("Addr") , Buf2 );
break;
case 0://地址1
default:
m_AdoRS.GetCollect( _T("Addr") , Buf2 );
break;
}
break;
case 11:
switch ( m_lExportType )
{
case 1://业务员
m_AdoRS.GetCollect( _T("YWY") , Buf2 );
break;
case 0://邮编1
default:
m_AdoRS.GetCollect( _T("Postcode") , Buf2 );
break;
}
break;
case 12:
switch ( m_lExportType )
{
case 1://金额
m_AdoRS.GetCollect( _T("Price") , Buf2 );
break;
case 0://单位1
default:
m_AdoRS.GetCollect( _T("Corp") , Buf2 );
break;
}
break;
case 13:
switch ( m_lExportType )
{
case 1://备注
m_AdoRS.GetCollect( _T("BZ") , Buf2 );
break;
case 0://生日1
default:
m_AdoRS.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;
}
break;
case 14: //联系人2
m_AdoRS.GetCollect( _T("LXR2") , Buf2 );
break;
case 15: //手机2
m_AdoRS.GetCollect( _T("Mobile2") , Buf2 );
break;
case 16: //电话2
m_AdoRS.GetCollect( _T("Tel2") , Buf2 );
break;
case 17: //地址2
m_AdoRS.GetCollect( _T("Addr2") , Buf2 );
break;
case 18: //邮编2
m_AdoRS.GetCollect( _T("Postcode2") , Buf2 );
break;
case 19: //单位2
m_AdoRS.GetCollect( _T("Corp2") , Buf2 );
break;
case 20: //生日2
m_AdoRS.GetCollect( _T("Birthday2") , 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 21: //备注
m_AdoRS.GetCollect( _T("BZ") , Buf2 );
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 ; //取得总字节数
m_AdoRS.MoveNext();
}
}
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 );
return true;
}
BOOL DLG_User_InportC::User_Inport()
{
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 )
{
if ( m_bInport )
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导入字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导出字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
return false;
}
//取分隔
TCHAR szFieldSplit[8]={0};
TCHAR szRecordSplit[8]={0};
m_C_FieldSplit.GetWindowText( szFieldSplit , sizeof(szFieldSplit));
m_C_RecordSplit.GetWindowText( szRecordSplit , sizeof(szRecordSplit));
if ( _tcslen( szRecordSplit )<=0 )
{
MessageBox( _T("记录分隔不能为空,请输入!") , _T("错误") , MB_ICONWARNING );
m_C_RecordSplit.SetFocus();
return false;
}
if ( !_tcsncmp(szRecordSplit,_T("换行"),4) )
{
_tcscpy( szRecordSplit,_T("\n") );
}
if ( _tcslen( szFieldSplit )<=0 )
{
MessageBox( _T("字段分隔不能为空,请输入!") , _T("错误") , MB_ICONWARNING );
m_C_FieldSplit.SetFocus();
return false;
}
szFieldSplit[1]=0; //字段分隔只能是一个字符
TCHAR szFileName[512];
m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
if ( _tcslen(AllTrim(szFileName)) <=0 )
{
if ( m_bInport )
MessageBox( _T("你必须输入导入的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须输入导出的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
m_E_FileName.SetFocus();
return false;
}
//打开文件 
CFile fTalk;
if ( !fTalk.Open( szFileName , CFile::modeRead ) )
{
TCHAR Buf[512];
_stprintf( Buf , _T("打开文件:%s\n产生错误!") , szFileName );
MessageBox( Buf , _T("错误") , MB_ICONWARNING|MB_OK );
return false;
}
TCHAR szPNBuf[512];
TCHAR szName[512];
long lLineCount = 0; //计算行数
long lNameCount = 0; //计算用户数
BOOL bShowReMobile = true;
long lReMobileType = 0;;
CString str;
CKAddress user;
#ifdef UNICODE
TCHAR szTemp[512]={0};
char szTempA[512]={0};
char szPNBuf2[512]={0};
char szRecordSplit2[512]={0};
strcpy(szRecordSplit2,CAdoRecordSet::Ado_W2A(szRecordSplit,szTempA));
#endif
while ( true )
{
memset( szPNBuf , 0 , sizeof( szPNBuf ) );
#ifdef UNICODE
if ( ReadLine( &fTalk , szRecordSplit2, szPNBuf2 , sizeof( szPNBuf2 )-5 ) )
{
_tcscpy(szPNBuf,CAdoRecordSet::Ado_A2W(szPNBuf2,szTemp));
#else
if ( ReadLine( &fTalk , szRecordSplit, szPNBuf , sizeof( szPNBuf )-5 ) )
{
#endif
ExChar( szPNBuf , _T("\r") );
ExChar( szPNBuf , _T("\n") );
ExChar( szPNBuf , szRecordSplit );
for ( i=0;i<25;i++ )
{
_tcscat( szPNBuf , szFieldSplit );
}
memset( &user , 0 , sizeof(user) );
_tcscpy( user.szUserType,_T("1") ); //用户类型
_tcscpy( user.szGroupID , m_pFCAddress->m_szGroupID); //用户组
for ( i=0 ; i<lCheckCount ; i++ )
{
memset(szName , 0 , sizeof(szName) );
GetReqMess( szPNBuf , szName , i , szFieldSplit[0] );
AllTrim(szName);
ExChar(szName,_T("\r"));
ExChar(szName,_T("\n"));
ExChar(szName,_T("\t"));
switch (lExPortItem[i])
{
case 0: //车主
BreakChar(szName,sizeof(user.szName)-1);
_tcscpy(user.szName , szName );
break;
case 1: //车 牌
BreakChar(szName,sizeof(user.szCarNum)-1);
_tcscpy(user.szCarNum , szName );
break;
case 2: //车 型
BreakChar(szName,sizeof(user.szCarType)-1);
_tcscpy(user.szCarType , szName );
break;
case 3: //发动机号
BreakChar(szName,sizeof(user.szFDJNum)-1);
_tcscpy(user.szFDJNum , szName );
break;
case 4: //底盘号
BreakChar(szName,sizeof(user.szDPNum)-1);
_tcscpy(user.szDPNum , szName );
break;
case 5: //购车日期
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tBuyDate);
}
}
catch(...)
{
memset(&user.tBuyDate,0,sizeof(user.tBuyDate));
}
break;
case 6: //保险日期
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tBXDate);
}
}
catch(...)
{
memset(&user.tBXDate,0,sizeof(user.tBXDate));
}
break;
case 7: //联系人1
BreakChar(szName,sizeof(user.szLXR)-1);
_tcscpy(user.szLXR , szName );
break;
case 8: //手机1
BreakChar(szName,sizeof(user.szMobile)-1);
_tcscpy(user.szMobile , szName );
break;
case 9: //电话1
BreakChar(szName,sizeof(user.szTel)-1);
_tcscpy( user.szTel , szName );
break;
case 10: //地址1
BreakChar(szName,sizeof(user.szAddr)-1);
_tcscpy( user.szAddr , szName );
break;
case 11: //邮编1
BreakChar(szName,sizeof(user.szPostcode)-1);
_tcscpy(user.szPostcode , szName );
break;
case 12: //单 位
BreakChar(szName,sizeof(user.szCorp)-1);
_tcscpy(user.szCorp , szName );
break;
case 13: //生日1
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tBirthday);
}
}
catch(...)
{
memset(&user.tBirthday,0,sizeof(user.tBirthday));
}
break;
case 14: //联系人2
BreakChar(szName,sizeof(user.szLXR2)-1);
_tcscpy(user.szLXR2 , szName );
break;
case 15: //手机2
BreakChar(szName,sizeof(user.szMobile2)-1);
_tcscpy(user.szMobile2 , szName );
break;
case 16: //电话2
BreakChar(szName,sizeof(user.szTel2)-1);
_tcscpy( user.szTel2 , szName );
break;
case 17: //地址2
BreakChar(szName,sizeof(user.szAddr2)-1);
_tcscpy( user.szAddr2 , szName );
break;
case 18: //邮编2
BreakChar(szName,sizeof(user.szPostcode2)-1);
_tcscpy(user.szPostcode2 , szName );
break;
case 19: //单 位2
BreakChar(szName,sizeof(user.szCorp2)-1);
_tcscpy(user.szCorp2 , szName );
break;
case 20: //生日1
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tBirthday2);
}
}
catch(...)
{
memset(&user.tBirthday2,0,sizeof(user.tBirthday2));
}
break;
case 21: //备 注
BreakChar(szName,sizeof(user.szBZ)-1);
_tcscpy( user.szBZ , szName );
break;
}
}
if (_tcslen(user.szName) >0 || _tcslen(user.szTel) >0 ||
_tcslen(user.szMobile) >0)
{
if ( _tcslen(user.szName) <= 0 )
_stprintf( user.szName , _T("IP%d") , lNameCount );
//添加用户
_stprintf( szName , _T("现正处理->%d") , lLineCount );
m_B_Tips.SetWindowText( szName );
//先检测号码是否存在此组时,如果存在,提示
BOOL bAdd = true;
if ( m_bReMobile && _tcslen( user.szMobile ) > 0 )
{
if ( _tcslen(m_pFCAddress->m_szGroupID)<=0)
str.Format( _T("select * from caddress where Mobile='%s' and (GroupID is null or len(GroupID)=0)") , user.szMobile );
else
str.Format( _T("select * from caddress where Mobile='%s' and GroupID='%s'") , user.szMobile,m_pFCAddress->m_szGroupID );
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
//找到记录,证明有重复的号码
m_AdoRS.Close();
if ( bShowReMobile )
{
str.Format( _T("%s,%s") , user.szName , user.szMobile );
DLG_AddWarning dlg(str,this); //提示重复号码
dlg.DoModal();
bShowReMobile = dlg.m_bShowReMobile;
lReMobileType = dlg.m_lReMobileType;
}
if ( lReMobileType == 0 ) //跳过
{
bAdd = false;
}
}
}
if ( bAdd )
{
lNameCount ++;
m_pFCAddress->AddUser(user,false);
}
}
lLineCount ++;
}
else
{
break;
}
}
fTalk.Close();
_stprintf(szName , _T("导入发送列表成功,具体如下:\n导入文件类型:TXT\n导入记录数:%d\n文件总行数:%d\n导入文件名:%s") , lNameCount , lLineCount, szFileName);
MessageBox( szName , _T("导入成功"),MB_OK|MB_ICONINFORMATION );
m_pFCAddress->On_User_Refresh();
return true;
}
long DLG_User_InportC::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;
}
void DLG_User_InportC::OnUserInportkGetfile()
{
#define FILE_FILTER_TEXT \
TEXT("txt文本文件 (*.txt)\0*.txt\0")\
TEXT("Excel csv 文件 (*.csv)\0*.csv\0")\
TEXT("所有文件 (*.*)\0*.*;\0\0")
if ( m_bInport )
{
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_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 ( ::GetOpenFileName( &sOpen ) )
{
m_E_FileName.SetWindowText(sOpen.lpstrFile);
return ;
}
}
else
{
TCHAR szFile[ 256 ];
TCHAR szFileB[ 256 ];
*szFileB = NULL;
_stprintf( szFile , _T("Address") );
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);
}
}
}