// FKAddress.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "FSAddress.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFSAddress dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_Group_Modify.h" #include "FuncView.h" #include "DLG_User_InportP2.h" #include "DLG_User_Log.h" #include "DLG_User_ModifyS.h" #include "DLG_User_InportC.h" #include "..\public\StringSort\StringSort.h" CFSAddress::CFSAddress(CWnd* pParent /*=NULL*/) : CDialog(CFSAddress::IDD, pParent) { //{{AFX_DATA_INIT(CFSAddress) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; m_lUserID = 0; m_bFind2 = false; memset(m_szGroupID,0,sizeof(m_szGroupID)); memset(m_szLocal,0,sizeof(m_szLocal)); m_Copy_UserID = 0; memset(m_Copy_GroupID,0,sizeof(m_Copy_GroupID)); m_Copy_Count = 0; m_Copy_Type = 0; m_Copy_Data = NULL; } void CFSAddress::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFSAddress) DDX_Control(pDX, IDC_SADDRESS_LIST, m_wndList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFSAddress, CDialog) //{{AFX_MSG_MAP(CFSAddress) ON_WM_SIZE() ON_WM_TIMER() ON_NOTIFY(NM_DBLCLK, IDC_SADDRESS_LIST, OnDblclkKaddressList) ON_NOTIFY(NM_RCLICK, IDC_SADDRESS_LIST, OnRclickKaddressList) ON_NOTIFY(LVN_KEYDOWN, IDC_SADDRESS_LIST, OnKeydownKaddressList) ON_WM_DESTROY() //}}AFX_MSG_MAP ON_MESSAGE( LIST_DROP_BEGIN , On_List_DropBegin ) ON_COMMAND( MENU_SADDRESS_ADD , On_User_Add) ON_COMMAND( MENU_SADDRESS_ADDGROUP , On_User_AddGroup) ON_COMMAND( MENU_SADDRESS_MODIFY , On_User_Modify) ON_COMMAND( MENU_SADDRESS_DEL , On_User_Del) ON_COMMAND( MENU_SADDRESS_FIND , On_User_Find) ON_COMMAND( MENU_SADDRESS_ADDTOLIST , On_User_AddToList) ON_COMMAND( MENU_SADDRESS_INPORT , On_User_Inport) ON_COMMAND( MENU_SADDRESS_EXPORT , On_User_Export) ON_COMMAND( MENU_SADDRESS_REFRESH, On_User_Refresh) ON_COMMAND( MENU_SADDRESS_COPY , On_User_Copy) ON_COMMAND( MENU_SADDRESS_CUT , On_User_Cut) ON_COMMAND( MENU_SADDRESS_PASTE , On_User_Paste) ON_COMMAND( MENU_SADDRESS_LOG , On_User_Log) ON_COMMAND( MENU_SADDRESS_LOG2 , On_User_Log2) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFSAddress message handlers BOOL CFSAddress::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CFSAddress::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CFSAddress::RefreshInfo() { return true; } long CFSAddress::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CFSAddress::OnOK() { //CDialog::OnOK(); } void CFSAddress::OnCancel() { //CDialog::OnCancel(); } BOOL CFSAddress::OnInitDialog() { CDialog::OnInitDialog(); //取得共用参数 //CMainFrame * pFrame = static_cast ((CMainFrame *)AfxGetMainWnd()); this->GetParent()->GetParentFrame(); m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame(); m_pSocket = &m_pMainFrame->m_Socket; m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection ); SetTimer( 1 , 200 , NULL ); //为了取得m_pFuncView; //初始化List m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_ADDRESSM) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 客户编号,100;姓名,80;昵称,80;性别,60;生日,100;入会日期,100;截止日期,100;联系电话,120;手机号码,100;Email,120; 地 址,120;业务员,80;金额,80;备注,120;")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); //m_wndList.SetBkColor( RGB(237,191,175) ); //m_wndList.SetTextBkColor( RGB(237,191,175) ); m_bInit = true; return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CFSAddress::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { m_wndList.MoveWindow( 0 , 0 , cx,cy); } } void CFSAddress::OnTimer(UINT_PTR nIDEvent) { CDialog::OnTimer(nIDEvent); if ( nIDEvent == 1 ) { KillTimer( 1 ); m_pFuncView = m_pMainFrame->m_pFuncView; return ; } } long CFSAddress::ShowUser(long lUserID,const TCHAR * pWhere,BOOL bGroupAll) { if ( bGroupAll ) m_bFind2 = true; else m_bFind2 = false; m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_wndList.DeleteAllItems(); CString strWhere; if ( pWhere ) strWhere = pWhere; TCHAR szSelect[1024]={0}; CString str; m_lUserID = lUserID; memset( m_szGroupID , 0 , sizeof(m_szGroupID) ); if ( bGroupAll ) { _stprintf( szSelect , _T("Select * from saddress where UserType='1' %s ") , strWhere ); //查找所有用户 } else { if ( lUserID != -1 ) //等于-1是代表根 { _stprintf( szSelect , _T("select GroupID from saddress where UserID=%d AND UserType='0'") , lUserID); //查询用户ID,并且只能为组 BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( b && lCount ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("GroupID") , m_szGroupID ); } else { m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return 0; } } GetLocal( m_szLocal , m_szGroupID ); //取用户路径 if ( lUserID == -1 ) //如果是根,用户组为NULL _stprintf( szSelect , _T("select * from saddress where (GroupID is null or len(GroupID)=0) and UserType='1' %s order by CreateTime "),strWhere ); //查找此组下的用户 else _stprintf( szSelect , _T("Select * from saddress where GroupID='%s' AND UserType='1' %s order by CreateTime ") , m_szGroupID,strWhere ); //查找此组下的用户 } BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( b && lCount ) { COleDateTime t; m_AdoRS.MoveFirst(); for ( int i = 0 ; i< lCount ; i++ ) { CSAddress user={0}; COleDateTime t; m_AdoRS.GetCollect( _T("UserID") , user.lUserID); m_AdoRS.GetCollect( _T("UserType") , user.szUserType); m_AdoRS.GetCollect( _T("GroupID") , user.szGroupID); m_AdoRS.GetCollect( _T("BH") , user.szBH); m_AdoRS.GetCollect( _T("Name") , user.szName); m_AdoRS.GetCollect( _T("NickName") , user.szNickName); m_AdoRS.GetCollect( _T("Sex") , user.szSex); m_AdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(user.tBirthday); m_AdoRS.GetCollect( _T("InDate"), t); t.GetAsSystemTime(user.tInDate); m_AdoRS.GetCollect( _T("OutDate"), t); t.GetAsSystemTime(user.tOutDate); m_AdoRS.GetCollect( _T("Tel") , user.szTel); m_AdoRS.GetCollect( _T("Mobile") , user.szMobile); m_AdoRS.GetCollect( _T("Addr") , user.szAddr); m_AdoRS.GetCollect( _T("Email") , user.szEmail); m_AdoRS.GetCollect( _T("YWY") , user.szYWY); m_AdoRS.GetCollect( _T("Price") , user.szPrice); m_AdoRS.GetCollect( _T("CreateTime") , t); t.GetAsSystemTime(user.tCreateTime); m_AdoRS.GetCollect( _T("BZ") , user.szBZ); m_AdoRS.MoveNext(); //m_wndList.SetHeadings(_T("序号,50; 客户编号,100;姓名,80;昵称,80;性别,60;生日,100;入会日期,100;截止日期,100;联系电话,120;手机号码,100;邮箱或传真,120; 地 址,120;业务员,80;金额,80;备注,120;")); m_wndList.InsertItem( i , _itot(i+1,szSelect,10) ); //序号 m_wndList.SetItemData( i , user.lUserID ); m_wndList.SetItemText(i,1, user.szBH ); m_wndList.SetItemText(i,2, user.szName ); m_wndList.SetItemText(i,3, user.szNickName ); m_wndList.SetItemText(i,4, user.szSex ); COleDateTime t4(user.tBirthday); if ( t4.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t4.GetYear(),t4.GetMonth(),t4.GetDay()); m_wndList.SetItemText(i,5, str ); } else { m_wndList.SetItemText(i,5, _T("") ); } COleDateTime t2(user.tInDate); if ( t2.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t2.GetYear(),t2.GetMonth(),t2.GetDay()); m_wndList.SetItemText(i,6, str ); } else { m_wndList.SetItemText(i,6, _T("") ); } COleDateTime t3(user.tOutDate); if ( t2.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t3.GetYear(),t3.GetMonth(),t3.GetDay()); m_wndList.SetItemText(i,7, str ); } else { m_wndList.SetItemText(i,7, _T("") ); } m_wndList.SetItemText(i,8, user.szTel ); m_wndList.SetItemText(i,9, user.szMobile ); m_wndList.SetItemText(i,10, user.szEmail ); m_wndList.SetItemText(i,11, user.szAddr ); m_wndList.SetItemText(i,12, user.szYWY ); m_wndList.SetItemText(i,13, user.szPrice ); m_wndList.SetItemText(i,14, user.szBZ ); } // return lCount; } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return 0; } void CFSAddress::GetLocal(TCHAR *pLocal, TCHAR *pGroupID) { long lLen = _tcslen( pGroupID ); TCHAR szGroup[16]={0}; TCHAR szTemp[16]={0}; TCHAR szSelect[128]={0}; _stprintf( pLocal , _T("客户通讯录") ); for ( int i = 1 ; i<= lLen ; i++ ) { _tcsncpy( szGroup , pGroupID , i ); _stprintf( szSelect , _T("select Name from saddress where GroupID='%s' AND UserType='0' ") , szGroup ); BOOL b = m_AdoRS.Open( szSelect ); if (b && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect( _T("Name") , szTemp ); _tcscat( pLocal , _T("\\") ); _tcscat( pLocal , szTemp ); } } } void CFSAddress::OnDblclkKaddressList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_Modify(); } void CFSAddress::OnRclickKaddressList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CFSAddress::OnKeydownKaddressList(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; *pResult = 0; if ( pLVKeyDow->wVKey == VK_DELETE ) { On_User_Del(); } if ( pLVKeyDow->wVKey == VK_INSERT) { On_User_Add(); } if ( pLVKeyDow->wVKey == VK_SPACE) { On_User_Modify(); } if ( pLVKeyDow->wVKey == 'S' || pLVKeyDow->wVKey == 's') { On_User_AddToList(); } if ( pLVKeyDow->wVKey == 'G' || pLVKeyDow->wVKey == 'g') { On_User_AddGroup(); } if ( pLVKeyDow->wVKey == 'F' || pLVKeyDow->wVKey == 'f') { On_User_Find(); } if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r') { On_User_Refresh(); } if ( pLVKeyDow->wVKey == 'C' || pLVKeyDow->wVKey == 'c') { On_User_Copy(); } if ( pLVKeyDow->wVKey == 'X' || pLVKeyDow->wVKey == 'x') { On_User_Cut(); } if ( pLVKeyDow->wVKey == 'V' || pLVKeyDow->wVKey == 'v') { On_User_Paste(); } if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a') { m_wndList.SelectAllItems(); } } void CFSAddress::ShowRMenu() { if (!m_pMainFrame->GetUserPurview(PURVIEW_PADDRESS,false)) //没有查看权限 return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); if (!m_bFind2) { menu.AppendMenu(MF_STRING , MENU_SADDRESS_ADD, _T(" 添加用户 ") ); menu.AppendMenu(MF_STRING , MENU_SADDRESS_ADDGROUP, _T(" 添加用户组 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_ADD, _T(" 添加用户 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_ADDGROUP, _T(" 添加用户组 ") ); } menu.AppendMenu(MF_SEPARATOR ); //修改 if ( lItem >=0) { menu.AppendMenu(MF_STRING , MENU_SADDRESS_MODIFY, _T(" 修 改 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_MODIFY , _T(" 修 改 ") ); } //删除 if ( lItem >=0 ) { menu.AppendMenu(MF_STRING , MENU_SADDRESS_DEL, _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_DEL , _T(" 删 除 ") ); } //发送短信 if ( m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) && lItem >=0 ) { menu.AppendMenu(MF_STRING , MENU_SADDRESS_ADDTOLIST, _T(" 发送短信 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_ADDTOLIST , _T(" 发送短信 ") ); } menu.AppendMenu(MF_SEPARATOR ); if ( lItem >=0 && !m_bFind2 ) { menu.AppendMenu(MF_STRING , MENU_SADDRESS_COPY , _T(" 复 制 ") ); menu.AppendMenu(MF_STRING , MENU_SADDRESS_CUT , _T(" 剪 切 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_COPY , _T(" 复 制 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_CUT , _T(" 剪 切 ") ); } if (!m_bFind2 && m_Copy_Count>0 && !(m_lUserID==m_Copy_UserID && m_Copy_Type==PADDRESS_COPYTYPE_CUT)) menu.AppendMenu(MF_STRING , MENU_SADDRESS_PASTE , _T(" 粘 贴 ") ); else menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_PASTE , _T(" 粘 贴 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_SADDRESS_FIND, _T(" 查找... ") ); menu.AppendMenu(MF_SEPARATOR ); if ( lItem >=0 ) { menu.AppendMenu(MF_STRING , MENU_SADDRESS_LOG, _T(" 收发日志... ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_LOG, _T(" 收发日志... ") ); } menu.AppendMenu(MF_SEPARATOR ); //导入用户 if (!m_bFind2) menu.AppendMenu(MF_STRING , MENU_SADDRESS_INPORT, _T(" 导入通讯录 ") ); else menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SADDRESS_INPORT, _T(" 导入通讯录 ") ); menu.AppendMenu(MF_STRING , MENU_SADDRESS_EXPORT, _T(" 导出通讯录 ") ); menu.AppendMenu(MF_SEPARATOR ); //刷新 menu.AppendMenu(MF_STRING , MENU_SADDRESS_REFRESH, _T(" 刷 新 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } LRESULT CFSAddress::On_List_DropBegin( WPARAM wParam , LPARAM lParam ) { //看有没有发送私人地址本的权限 if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDP , false ) ) return false; long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return false; //分配数据 long lSize = sizeof(Send_User)*lCount+sizeof(long); HGLOBAL hData = GlobalAlloc(GHND|GMEM_SHARE, lSize ); BYTE *pS = (BYTE *)GlobalLock( hData ); memset( pS , 0 , lSize ); long * plCount = (long *)pS; Send_User * pUser = (Send_User * )(pS+sizeof(long)); *plCount = lCount; //数据总量 TCHAR szSelect[128]={0}; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); while ( pos ) { long lItem = m_wndList.GetNextSelectedItem( pos ); long lUserID = m_wndList.GetItemData( lItem ); if ( lUserID > 0 ) { _stprintf( szSelect , _T("select * from saddress where UserID=%d"), lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Name") , pUser->szName); m_AdoRS.GetCollect( _T("NickName") , pUser->szNickName); m_AdoRS.GetCollect( _T("Mobile") , pUser->szMobile); m_AdoRS.GetCollect( _T("BZ") , pUser->szBZ); } } pUser ++; } GlobalUnlock( hData ); //设置数据 COleDataSource data ; UINT iCF = ::RegisterClipboardFormat( _T("CORPSMS_USER") ); data.CacheGlobalData( iCF , hData ); // Begin Drag operation CUserDropTarget::m_shWndTreeCtrl = NULL; CUserDropTarget::m_lAddressType = -1; DROPEFFECT dropeffect = data.DoDragDrop(); GlobalFree( hData ); return true; } void CFSAddress::On_User_Add() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; CSAddress Address={0}; _tcscpy(Address.szGroupID,m_szGroupID); Address.szUserType[0]='1'; //用户类型 DLG_User_ModifyS dlg(this); dlg.SetParam( Address,m_szLocal,true); dlg.DoModal(); } void CFSAddress::On_User_AddGroup() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; //最多仅能建12层的组 if ( _tcslen(m_szGroupID) >12 ) { MessageBox( _T("对不起,组的数量已满,此目录下已不能新建用户组!") , _T("错误") , MB_ICONWARNING ); return ; } ANS_GAddress_Group_AddData GAdd={0}; //查找空闲的组ID long lGroupLen = _tcslen( m_szGroupID ); TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("select GroupID from saddress where GroupID like '%s_' AND UserType='0' ") , m_szGroupID); //查找当前组下的第一层 BOOL b = m_AdoRS.Open( szSelect ); CStringSort sort; CString strTemp; while(!m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("GroupID") , strTemp ); sort.Add(strTemp); m_AdoRS.MoveNext(); } long lCount = sort.GetCount(); long lAllCount=GROUPID_END-GROUPID_BEGIN; if ( lCount >= GROUPID_END-GROUPID_BEGIN ) { MessageBox( _T("对不起,组的数量已满,此目录下已不能新建用户组!") , _T("错误") , MB_ICONWARNING ); return ; } TCHAR szGroupID[16]={0}; _tcscpy( szGroupID , m_szGroupID ); //记住所有的组ID TCHAR szAllID[200][24]={0}; for ( int i = 0 ; i< lCount ;i++ ) { _tcscpy(szAllID[i],sort.GetAt(i)); } //查找组ID for ( i=0 ; i< lCount ; i++ ) { BOOL bFound = false; for ( int j= 0 ; jAddSGroup( GAdd.szGroupName , m_lUserID , GAdd.lUserID ); } } void CFSAddress::On_User_Modify() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; long lUserID = m_wndList.GetItemData( lItem ); CString str; CSAddress Address = GetUserData(lUserID); if (_tcslen(Address.szName)>0) { DLG_User_ModifyS dlg(this); TCHAR szLocal[128]={0}; GetLocal(szLocal,Address.szGroupID); //取用户所在组位置 dlg.SetParam(Address,szLocal,false); if ( dlg.DoModal() == IDOK ) { Address = dlg.GetParam(); //m_wndList.SetHeadings(_T("序号,50; 客户编号,100;姓名,80;昵称,80;性别,60;生日,100;入会日期,100;截止日期,100;联系电话,120;手机号码,100;邮箱或传真,120; 地 址,120;业务员,80;金额,80;备注,120;")); //设置新的数据 m_wndList.SetItemText(lItem,1, Address.szBH ); m_wndList.SetItemText(lItem,2, Address.szName ); m_wndList.SetItemText(lItem,3, Address.szNickName ); m_wndList.SetItemText(lItem,4, Address.szSex ); COleDateTime t4(Address.tBirthday); if ( t4.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t4.GetYear(),t4.GetMonth(),t4.GetDay()); m_wndList.SetItemText(lItem,5, str ); } else { m_wndList.SetItemText(lItem,5, _T("") ); } COleDateTime t2(Address.tInDate); if ( t2.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t2.GetYear(),t2.GetMonth(),t2.GetDay()); m_wndList.SetItemText(lItem,6, str ); } else { m_wndList.SetItemText(lItem,6, _T("") ); } COleDateTime t3(Address.tOutDate); if ( t2.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t3.GetYear(),t3.GetMonth(),t3.GetDay()); m_wndList.SetItemText(lItem,7, str ); } else { m_wndList.SetItemText(lItem,7, _T("") ); } m_wndList.SetItemText(lItem,8, Address.szTel ); m_wndList.SetItemText(lItem,9, Address.szMobile ); m_wndList.SetItemText(lItem,10, Address.szEmail ); m_wndList.SetItemText(lItem,11, Address.szAddr ); m_wndList.SetItemText(lItem,12, Address.szYWY ); m_wndList.SetItemText(lItem,13, Address.szPrice ); m_wndList.SetItemText(lItem,14, Address.szBZ ); //将新的数据写入本地数据库 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("select * from saddress where UserID=%d ") , Address.lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { Address.tBirthday.wHour=0;Address.tBirthday.wMinute=0;Address.tBirthday.wMinute=0;Address.tBirthday.wSecond=0;Address.tBirthday.wMilliseconds=0; Address.tInDate.wHour=0;Address.tInDate.wMinute=0;Address.tInDate.wMinute=0;Address.tInDate.wSecond=0;Address.tInDate.wMilliseconds=0; Address.tOutDate.wHour=0;Address.tOutDate.wMinute=0;Address.tOutDate.wMinute=0;Address.tOutDate.wSecond=0;Address.tOutDate.wMilliseconds=0; m_AdoRS.MoveFirst(); m_AdoRS.PutCollect(_T("UserType") ,Address.szUserType); m_AdoRS.PutCollect(_T("GroupID") ,Address.szGroupID); m_AdoRS.PutCollect(_T("BH") ,Address.szBH ); m_AdoRS.PutCollect(_T("Name") ,Address.szName ); m_AdoRS.PutCollect(_T("NickName") ,Address.szNickName ); m_AdoRS.PutCollect(_T("Sex") ,Address.szSex ); m_AdoRS.PutCollect(_T("Birthday") ,Address.tBirthday ); m_AdoRS.PutCollect(_T("InDate") ,Address.tInDate ); m_AdoRS.PutCollect(_T("OutDate") ,Address.tOutDate ); m_AdoRS.PutCollect(_T("Tel") ,Address.szTel ); m_AdoRS.PutCollect(_T("Email") ,Address.szEmail ); m_AdoRS.PutCollect(_T("Mobile") ,Address.szMobile ); m_AdoRS.PutCollect(_T("Addr") ,Address.szAddr ); m_AdoRS.PutCollect(_T("YWY") ,Address.szYWY ); m_AdoRS.PutCollect(_T("Price") ,Address.szPrice); m_AdoRS.PutCollect(_T("BZ") ,Address.szBZ); m_AdoRS.Update(); m_AdoRS.Close(); } } } } void CFSAddress::On_User_Del() { long lRet = MessageBox( _T("确实要删除选中的用户吗?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); if ( lRet != IDYES ) return ; long lCount = m_wndList.GetSelectedCount(); long *lDel = new long[lCount+2]; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i = 0; while(pos) { lDel[i]= m_wndList.GetNextSelectedItem(pos); i ++; } long lUserID = 0; TCHAR szSelect[128]; //倒转删除 m_wndList.ShowWindow( SW_HIDE ); //加快显示的速度 for ( i = lCount ; i>0 ; i-- ) { lUserID = m_wndList.GetItemData( lDel[i-1] ); _stprintf( szSelect , _T("delete from saddress where UserID=%d ") , lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_wndList.DeleteItem(lDel[i-1]); //从列表中删除 } } m_wndList.ShowWindow( SW_SHOW ); //加快显示的速度 delete lDel; } void CFSAddress::On_User_Find() { CSAddress Address={0}; _tcscpy(Address.szGroupID,m_szGroupID); Address.szUserType[0]='1'; //用户类型 DLG_User_ModifyS dlg(this); dlg.SetParam( Address,m_szLocal,true,true); if ( dlg.DoModal()==IDOK ) { CString strFind; CString strTemp; Address = dlg.GetParam(); if ( _tcslen(Address.szBH)>0 )//编码 { strTemp.Format( _T(" and BH like '%%%s%%' ") , Address.szBH ); strFind += strTemp; } if ( _tcslen(Address.szName)>0 )//姓 名 { strTemp.Format( _T(" and Name like '%%%s%%' ") , Address.szName ); strFind += strTemp; } if ( _tcslen(Address.szNickName)>0 )//姓 名 { strTemp.Format( _T(" and NickName like '%%%s%%' ") , Address.szNickName ); strFind += strTemp; } if ( _tcslen(Address.szSex)>0 )//性别 { strTemp.Format( _T(" and Sex like '%%%s%%' ") , Address.szSex ); strFind += strTemp; } if ( COleDateTime(Address.tBirthday).GetStatus()==COleDateTime::valid ) { strTemp.Format( _T(" and Birthday=#%04d-%02d-%02d# ") , Address.tBirthday.wYear,Address.tBirthday.wMonth,Address.tBirthday.wDay ); strFind += strTemp; } if ( COleDateTime(Address.tInDate).GetStatus()==COleDateTime::valid ) { strTemp.Format( _T(" and InDate=#%04d-%02d-%02d# ") , Address.tInDate.wYear,Address.tInDate.wMonth,Address.tInDate.wDay ); strFind += strTemp; } if ( COleDateTime(Address.tOutDate).GetStatus()==COleDateTime::valid ) { strTemp.Format( _T(" and OutDate=#%04d-%02d-%02d# ") , Address.tOutDate.wYear,Address.tOutDate.wMonth,Address.tOutDate.wDay ); strFind += strTemp; } if ( _tcslen(Address.szTel)>0 ) { strTemp.Format( _T(" and Tel like '%%%s%%' ") , Address.szTel ); strFind += strTemp; } if ( _tcslen(Address.szMobile)>0 ) { strTemp.Format( _T(" and Mobile like '%%%s%%' ") , Address.szMobile ); strFind += strTemp; } if ( _tcslen(Address.szAddr)>0 )//地 址 { strTemp.Format( _T(" and Addr like '%%%s%%' ") , Address.szAddr ); strFind += strTemp; } if ( _tcslen(Address.szEmail)>0 ) { strTemp.Format( _T(" and Email like '%%%s%%' ") , Address.szEmail ); strFind += strTemp; } if ( _tcslen(Address.szYWY)>0 ) { strTemp.Format( _T(" and YWY like '%%%s%%' ") , Address.szYWY ); strFind += strTemp; } if ( _tcslen(Address.szPrice)>0 ) { strTemp.Format( _T(" and Price like '%%%s%%' ") , Address.szPrice ); strFind += strTemp; } if ( _tcslen(Address.szBZ)>0 )//备 注 { strTemp.Format( _T(" and BZ like '%%%s%%' ") , Address.szBZ ); strFind += strTemp; } ShowUser(m_lUserID,strFind,Address.bGroupAll ); if ( m_wndList.GetItemCount()<= 0 ) { MessageBox( _T("对不起,没有找到相应的记录,请重新查询!"),_T("信息"),MB_ICONINFORMATION); } } } void CFSAddress::On_User_AddToList() { if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDP,true) ) return ; long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return ; //分配数据 long lSize = sizeof(Send_User)*lCount*2; BYTE *pS = new BYTE[lSize]; memset( pS , 0 , lSize ); Send_User * pUser = (Send_User * )pS; TCHAR szSelect[128]={0}; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); while ( pos ) { long lItem = m_wndList.GetNextSelectedItem( pos ); long lUserID = m_wndList.GetItemData( lItem ); if ( lUserID > 0 ) { _stprintf( szSelect , _T("select * from saddress where UserID=%d"), lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Name") , pUser->szName); m_AdoRS.GetCollect( _T("NickName") , pUser->szNickName); m_AdoRS.GetCollect( _T("Mobile") , pUser->szMobile); m_AdoRS.GetCollect( _T("BZ") , pUser->szBZ); pUser ++; } } } m_pFuncView->On_User_List_AddUser(lCount*2,(Send_User*)pS); delete pS; } void CFSAddress::On_User_Inport() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; //m_wndList.SetHeadings(_T("序号,50; 客户编号,100;姓名,80;昵称,80;性别,60;生日,100;入会日期,100;截止日期,100;联系电话,120;手机号码,100;邮箱或传真,120; 地 址,120;业务员,80;金额,80;备注,120;")); Inport_Field Field[] = { {_T("客户编号"),0,0,-1}, {_T("姓 名"),0,1,-1}, {_T("昵 称"),0,2,-1}, {_T("性 别"),0,3,-1}, {_T("生 日"),0,4,-1}, {_T("入会日期"),0,5,-1}, {_T("截止日期"),0,6,-1}, {_T("联系电话"),0,7,-1}, {_T("手机号码"),0,8,-1}, {_T("Email"),0,9,-1}, {_T("地址"),0,10,-1}, {_T("业务员"),0,11,-1}, {_T("金额"),0,12,-1}, {_T("备注"),0,13,-1}, }; DLG_User_InportP2 dlg(this); dlg.SetParam(&Field[0],sizeof(Field)/sizeof(Inport_Field),4); if ( dlg.DoModal()==IDOK ) { this->On_User_Refresh(); } return ; /* DLG_User_InportC dlg(this); dlg.SetInport(this,&m_wndList,true); if ( dlg.DoModal() == IDOK ) { } */ } void CFSAddress::On_User_Export() { DLG_User_InportC dlg(this); dlg.SetInport(&m_wndList,false,1); dlg.DoModal(); } void CFSAddress::On_User_Refresh() { ShowUser( m_lUserID ); //刷新 } void CFSAddress::On_User_Copy() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; long lCount = m_wndList.GetSelectedCount(); if ( lCount<=0 ) return ; m_Copy_UserID = m_lUserID; _tcscpy(m_Copy_GroupID,m_szGroupID); m_Copy_Count = lCount; if ( m_Copy_Data ) { delete m_Copy_Data; m_Copy_Data = NULL; } m_Copy_Data = new CSAddress[lCount]; memset(m_Copy_Data,0,sizeof(CSAddress)*lCount); POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i = 0; long lItem=0; long lUserID=0; while(pos) { lItem = m_wndList.GetNextSelectedItem(pos); lUserID = m_wndList.GetItemData(lItem); m_Copy_Data[i] = GetUserData(lUserID); i ++; } m_Copy_Count = i; m_Copy_Type = SADDRESS_COPYTYPE_COPY; } void CFSAddress::On_User_Cut() { On_User_Copy(); m_Copy_Type = SADDRESS_COPYTYPE_CUT; } void CFSAddress::On_User_Paste() { if (m_bFind2 || m_lUserID==m_Copy_UserID || m_Copy_Count<=0) //不符合条件 return ; CString str; if ( m_Copy_Type == SADDRESS_COPYTYPE_CUT ) //剪切,直接更改组ID即可 { for ( int i=0 ; i