956 lines
24 KiB
C++
956 lines
24 KiB
C++
// 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);
|
||
}
|
||
}
|
||
}
|