#include "StdAfx.h" #include "ODBCPtr.h" #include "Global.h" #include "dbPool.h" #include "UserInfo.h" #include "UserDetail.h" #include "StaffInfo.h" #include "ProductType.h" #include "ProductInfo.h" #include "SceneryInfo.h" #include "PackageType.h" #include "PackageInfo.h" #include "PackageItems.h" #include "CustomerFrom.h" #include "CustomerInfo.h" #include "OrderType.h" #include "OrderInfo.h" #include "OrderScenery.h" #include "OrderPackageItems.h" #include "SysConfig.h" #include "StudioLog.h" #include "StudioInfo.h" #include "DepartmentInfo.h" #include "PackageItemDetail.h" #include "PackageItemView.h" #define GETDBPTR(dwTimeOut) \ CDatabase *pDatabase = NULL;\ ODBCConnGuard tagConnGuard(pDatabase, dwTimeOut);\ if ( pDatabase == NULL)\ return FALSE\ enum UserLogInStatus { USER_LOGIN = 1, // 登录成功; USER_PW_MISTAKE = 2, // 密码错误; USER_NULL = 0 // 没有用户; }; CODBCPtr* CODBCPtr::m_pInstance = NULL; CODBCPtr::CODBCPtr(void):m_nRef(0),m_nObjRef(0) { } CODBCPtr::~CODBCPtr(void) { } ULONG CODBCPtr::AddRef() { InterlockedIncrement( &m_nRef ); //增加引用计数; return m_nRef; } ULONG CODBCPtr::Release() { InterlockedDecrement( &m_nRef ); //减少引用计数; //如果为0,删除对象 if( m_nRef == 0 ) { delete this; } return m_nRef; } HRESULT CODBCPtr::QueryInterface(REFIID refiid, void **ppvObject) { if (IID_IUnknown == refiid) { *ppvObject = this; } else if (IID_DBPoolInterface == refiid) { *ppvObject = (IODBCInterface*)this; } else { *ppvObject = NULL; return E_NOINTERFACE; } ((IUnknown*)(*ppvObject))->AddRef(); return NOERROR; } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ void CODBCPtr::SolveDBError( IN CONST DWORD &dwError, IN CDatabase *&pDBConn) { switch(dwError) { //case SQL_ERROR://这个错误比较难精确判断问题; case ERROR_PIPE_NOT_CONNECTED: case WSAECONNRESET: case WSAECONNABORTED: { CODBCPool::GetInstance()->CloseBusyConnection(pDBConn); #if _DEBUG OutputDebugString(_T("关闭数据库连接\n")); #endif } break; default: break; } } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ DWORD CODBCPtr::InitializePool( IN LPCTSTR lpDBSource, IN CONST DWORD &dwDBPort, IN LPCTSTR lpDBAccount, IN LPCTSTR lpPassWord, IN LPCTSTR lpDBName, IN CONST INT &nMinConn /* = 1 */, IN CONST INT &nMaxConn /* = 5 */ ) { return CODBCPool::GetInstance()->InitializePool(lpDBSource, dwDBPort, lpDBAccount, lpPassWord, lpDBName, nMinConn, nMaxConn); } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ void CODBCPtr::ReleasePool() { CODBCPool::GetInstance()->ReleasePool(); } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ BOOL CODBCPtr::ExecuteSQL( IN LPCTSTR lpExcuteSQL, IN CONST DWORD &dwTimeOut /* = 30000 */ ) { GETDBPTR(dwTimeOut); try { if ( lpExcuteSQL == NULL ) return FALSE; pDatabase->ExecuteSQL(lpExcuteSQL); } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s\n%s"), lpExcuteSQL, e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return FALSE; } return TRUE; } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ BOOL CODBCPtr::IsUserExist( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { CString strSQL = _T(""); strSQL.Format(_T("[StudioID] = '%s' and [UserAccount] = '%s'"), lpStudioID, lpAccount); // strSQL.Format(_T("[StudioID] = '%s', [UserAccount] = '%s', [UserPassword] = '%s'"), lpStudioID, lpAccount, lpPassword); CUserInfo tagUserInfo(pDatabase); tagUserInfo.m_strFilter = strSQL; tagUserInfo.Open(); BOOL bExist = FALSE; if ( !tagUserInfo.IsEOF() ) { if ( tagUserInfo.m_UserPassword.Compare(lpPassword) == 0 ) { *(CUserInfo*)lpOutUserInfo = tagUserInfo; bExist = TRUE; } } tagUserInfo.Close(); return bExist; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return FALSE; } return TRUE; } INT CODBCPtr::QueryUserDetail(IN LPCTSTR lpStudioID, IN LPVOID lpUserDetail, IN CONST DWORD & dwTimeOut) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [UserDetail] where [StudioID] = '%s'"), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if (nCount == 0) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CUserDetail tagUserDetail(pDatabase); tagUserDetail.m_strFilter = strSQL; tagUserDetail.Open(); INT nIndex = 0; CObList *plist = (CObList*)lpUserDetail; while (!tagUserDetail.IsEOF()) { nIndex++; CUserDetailObj *pObj = new CUserDetailObj; pObj->m_StudioID = tagUserDetail.m_StudioID; pObj->m_UserAccount = tagUserDetail.m_UserAccount; pObj->m_UserPassword = tagUserDetail.m_UserPassword; pObj->m_UserNickName = tagUserDetail.m_UserNickName; pObj->m_UserLevel = tagUserDetail.m_UserLevel; pObj->m_UserRights = tagUserDetail.m_UserRights; pObj->m_UserOnelineStatus = tagUserDetail.m_UserOnelineStatus; pObj->m_UserEnable = tagUserDetail.m_UserEnable; pObj->m_StaffSN = tagUserDetail.m_StaffSN; pObj->m_StaffName = tagUserDetail.m_StaffName; pObj->m_StaffGender = tagUserDetail.m_StaffGender; pObj->m_StaffAddress = tagUserDetail.m_StaffAddress; pObj->m_StaffOffice = tagUserDetail.m_StaffOffice; pObj->m_StaffBirthday = tagUserDetail.m_StaffBirthday; pObj->m_StaffPhone = tagUserDetail.m_StaffPhone; pObj->m_StaffStatus = tagUserDetail.m_StaffStatus; pObj->m_StaffNote = tagUserDetail.m_StaffNote; plist->AddTail(pObj); tagUserDetail.MoveNext(); if (nIndex >= nCount) break; } tagUserDetail.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryUserDetail( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { CString strSQL = _T(""); strSQL.Format(_T("[StudioID] = '%s' and [UserAccount] = '%s'"), lpStudioID, lpAccount); CUserDetail tagUserDetail(pDatabase); tagUserDetail.m_strFilter = strSQL; tagUserDetail.Open(); INT nExist = USER_NULL; if ( !tagUserDetail.IsEOF() ) { nExist = USER_PW_MISTAKE; if ( tagUserDetail.m_UserPassword.Compare(lpPassword) == 0 ) { *(CUserDetail*)lpOutUserInfo = tagUserDetail; nExist = USER_LOGIN; } } tagUserDetail.Close(); return nExist; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return USER_NULL; } return USER_NULL; } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryDepartmentInfo( IN LPCTSTR lpStudioID, OUT LPVOID lpOutDepartmentInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [DepartmentInfo] where [StudioID] = '%s'"), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if (nCount == 0) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CDepartmentInfo tagDepartment(pDatabase); tagDepartment.m_strFilter = strSQL; tagDepartment.Open(); INT nIndex = 0; CObList *pDepartmentList = (CObList*)lpOutDepartmentInfo; while (!tagDepartment.IsEOF()) { nIndex++; CDepartmentInfoObj *pDepartmentObj = new CDepartmentInfoObj; pDepartmentObj->m_StudioID = tagDepartment.m_StudioID; pDepartmentObj->m_DepartmentName = tagDepartment.m_DepartmentName; pDepartmentObj->m_DepartmentNote = tagDepartment.m_DepartmentNote; pDepartmentList->AddTail(pDepartmentObj); tagDepartment.MoveNext(); if (nIndex >= nCount) break; } tagDepartment.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/25/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryStaffInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutStaffInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [StaffInfo] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CStaffInfo tagStaffInfo(pDatabase); tagStaffInfo.m_strFilter = strSQL; tagStaffInfo.Open(); INT nIndex = 0; CObList *pStaffArray = (CObList*)lpOutStaffInfo; while ( !tagStaffInfo.IsEOF() ) { nIndex++; CStaffInfoObj *pStaff = new CStaffInfoObj; pStaff->m_AutoID = tagStaffInfo.m_AutoID; pStaff->m_StaffSN = tagStaffInfo.m_StaffSN; pStaff->m_StaffName = tagStaffInfo.m_StaffName; pStaff->m_StaffGender = tagStaffInfo.m_StaffGender; pStaff->m_StaffAddress = tagStaffInfo.m_StaffAddress; pStaff->m_StaffOffice = tagStaffInfo.m_StaffOffice; pStaff->m_StaffBirthday = tagStaffInfo.m_StaffBirthday; pStaff->m_StaffPhone = tagStaffInfo.m_StaffPhone; pStaff->m_StaffStatus = tagStaffInfo.m_StaffStatus; pStaff->m_StaffNote = tagStaffInfo.m_StaffNote; pStaffArray->AddTail(pStaff); tagStaffInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagStaffInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/28/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryUserInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutUserInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [UserInfo] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CUserInfo tagUserInfo(pDatabase); tagUserInfo.m_strFilter = strSQL; tagUserInfo.Open(); INT nIndex = 0; CObList *pUserInfoArray = (CObList*)lpOutUserInfo; while ( !tagUserInfo.IsEOF() ) { nIndex++; CUserInfoObj *pUserInfo = new CUserInfoObj; pUserInfo->m_AutoID = tagUserInfo.m_AutoID; pUserInfo->m_StaffSN = tagUserInfo.m_StaffSN; pUserInfo->m_UserAccount = tagUserInfo.m_UserAccount; pUserInfo->m_UserPassword = tagUserInfo.m_UserPassword; pUserInfo->m_UserNickName = tagUserInfo.m_UserNickName; pUserInfo->m_UserLevel = tagUserInfo.m_UserLevel; pUserInfo->m_UserRights = tagUserInfo.m_UserRights; pUserInfo->m_UserOnelineStatus = tagUserInfo.m_UserOnelineStatus; pUserInfo->m_UserEnable = tagUserInfo.m_UserEnable; pUserInfoArray->AddTail(pUserInfo); tagUserInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagUserInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/30/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryProductType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutProductType, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [ProductType] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CProductType tagProductType(pDatabase); tagProductType.m_strFilter = strSQL; tagProductType.Open(); INT nIndex = 0; CObList *pProductTypeArray = (CObList*)lpOutProductType; while ( !tagProductType.IsEOF() ) { nIndex++; CProductTypeObj *pProductType = new CProductTypeObj; pProductType->m_AutoID = tagProductType.m_AutoID; pProductType->m_ProductTypeName = tagProductType.m_ProductTypeName; pProductType->m_ProductTypeNote = tagProductType.m_ProductTypeNote; pProductTypeArray->AddTail(pProductType); tagProductType.MoveNext(); if ( nIndex >= nCount ) break; } tagProductType.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/30/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryProductInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutProductInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [ProductInfo] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CProductInfo tagProductInfo(pDatabase); tagProductInfo.m_strFilter = strSQL; tagProductInfo.Open(); INT nIndex = 0; CObList *pProductInfoArray = (CObList*)lpOutProductInfo; while ( !tagProductInfo.IsEOF() ) { nIndex++; CProductInfoObj *pProductInfo = new CProductInfoObj; pProductInfo->m_AutoID = tagProductInfo.m_AutoID; pProductInfo->m_ProductSN = tagProductInfo.m_ProductSN; pProductInfo->m_ProductName = tagProductInfo.m_ProductName; pProductInfo->m_ProductCost = tagProductInfo.m_ProductCost; pProductInfo->m_ProductPrice = tagProductInfo.m_ProductPrice; pProductInfo->m_ProductTypes = tagProductInfo.m_ProductTypes; pProductInfo->m_ProductUnit = tagProductInfo.m_ProductUnit; pProductInfo->m_ProductShelves = tagProductInfo.m_ProductShelves; pProductInfo->m_ProductNote = tagProductInfo.m_ProductNote; pProductInfoArray->AddTail(pProductInfo); tagProductInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagProductInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/30/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QuerySceneryInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutSceneryInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [SceneryInfo] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CSceneryInfo tagSceneryInfo(pDatabase); tagSceneryInfo.m_strFilter = strSQL; tagSceneryInfo.Open(); INT nIndex = 0; CObList *pSceneryInfoArray = (CObList*)lpOutSceneryInfo; while ( !tagSceneryInfo.IsEOF() ) { nIndex++; CSceneryInfoObj *pSceneryInfo = new CSceneryInfoObj; pSceneryInfo->m_AutoID = tagSceneryInfo.m_AutoID; pSceneryInfo->m_StudioID = tagSceneryInfo.m_StudioID; pSceneryInfo->m_ScenerySN = tagSceneryInfo.m_ScenerySN; pSceneryInfo->m_SceneryName = tagSceneryInfo.m_SceneryName; pSceneryInfo->m_SceneryCostPrice = tagSceneryInfo.m_SceneryCostPrice; pSceneryInfo->m_ScenerySalePrice = tagSceneryInfo.m_ScenerySalePrice; pSceneryInfo->m_SceneryShelves = tagSceneryInfo.m_SceneryShelves; pSceneryInfo->m_SceneryNote = tagSceneryInfo.m_SceneryNote; pSceneryInfoArray->AddTail(pSceneryInfo); tagSceneryInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagSceneryInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/30/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryPackageType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageType, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [PackageType] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CPackageType tagPackageType(pDatabase); tagPackageType.m_strFilter = strSQL; tagPackageType.Open(); INT nIndex = 0; CObList *pPackageTypeArray = (CObList*)lpOutPackageType; while ( !tagPackageType.IsEOF() ) { nIndex++; CPackageTypeObj *pPackageTypeInfo = new CPackageTypeObj; pPackageTypeInfo->m_AutoID = tagPackageType.m_AutoID; pPackageTypeInfo->m_StudioID = tagPackageType.m_StudioID; pPackageTypeInfo->m_PackageTypesName = tagPackageType.m_PackageTypesName; pPackageTypeInfo->m_PackageTypesNote = tagPackageType.m_PackageTypesNote; pPackageTypeArray->AddTail(pPackageTypeInfo); tagPackageType.MoveNext(); if ( nIndex >= nCount ) break; } tagPackageType.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/30/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryPackageInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [PackageInfo] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CPackageInfo tagPackageInfo(pDatabase); tagPackageInfo.m_strFilter = strSQL; tagPackageInfo.Open(); INT nIndex = 0; CObList *pPackageInfoArray = (CObList*)lpOutPackageInfo; while ( !tagPackageInfo.IsEOF() ) { nIndex++; CPackageInfoObj *pPackageInfo = new CPackageInfoObj; pPackageInfo->m_AutoID = tagPackageInfo.m_AutoID; pPackageInfo->m_StudioID = tagPackageInfo.m_StudioID; pPackageInfo->m_PackageSN = tagPackageInfo.m_PackageSN; pPackageInfo->m_PackageName = tagPackageInfo.m_PackageName; pPackageInfo->m_PackageTypes = tagPackageInfo.m_PackageTypes; pPackageInfo->m_PackageCostPrice = tagPackageInfo.m_PackageCostPrice; pPackageInfo->m_PackageSalesPrice = tagPackageInfo.m_PackageSalesPrice; pPackageInfo->m_PackageAlbum = tagPackageInfo.m_PackageAlbum; pPackageInfo->m_PackageFilm = tagPackageInfo.m_PackageFilm; pPackageInfo->m_PackageShelves = tagPackageInfo.m_PackageShelves; pPackageInfo->m_PackageNote = tagPackageInfo.m_PackageNote; pPackageInfoArray->AddTail(pPackageInfo); tagPackageInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagPackageInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[9/30/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryPackageItems(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageItems, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [PackageItems] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CPackageItems tagPackageItems(pDatabase); tagPackageItems.m_strFilter = strSQL; tagPackageItems.Open(); INT nIndex = 0; CObList *pPackageItemsArray = (CObList*)lpOutPackageItems; while ( !tagPackageItems.IsEOF() ) { nIndex++; CPackageItemsObj *pPackageItems = new CPackageItemsObj; pPackageItems->m_AutoID = tagPackageItems.m_AutoID; pPackageItems->m_StudioID = tagPackageItems.m_StudioID; pPackageItems->m_PackageSN = tagPackageItems.m_PackageSN; pPackageItems->m_PackageItemType = tagPackageItems.m_PackageItemType; pPackageItems->m_PackageItemSN = tagPackageItems.m_PackageItemSN; pPackageItems->m_PackageItemName = tagPackageItems.m_PackageItemName; pPackageItems->m_PackageItemCount = tagPackageItems.m_PackageItemCount; pPackageItems->m_PackageItemNote = tagPackageItems.m_PackageItemNote; pPackageItemsArray->AddTail(pPackageItems); tagPackageItems.MoveNext(); if ( nIndex >= nCount ) break; } tagPackageItems.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/5/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryPackageItemsView(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageItems, IN CONST DWORD & dwTimeOut) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [PackageItemView] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if (nCount == 0) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CPackageItemView tagItemView(pDatabase); tagItemView.m_strFilter = strSQL; tagItemView.Open(); INT nIndex = 0; CObList *pItemsDetailArray = (CObList*)lpOutPackageItems; while (!tagItemView.IsEOF()) { nIndex++; CPackageItemViewObj *pObj = new CPackageItemViewObj; pObj->m_StudioID = tagItemView.m_StudioID; pObj->m_ItemSubType = tagItemView.m_ItemSubType; pObj->m_ItemType = tagItemView.m_ItemType; pObj->m_ItemSN = tagItemView.m_ItemSN; pObj->m_ItemName = tagItemView.m_ItemName; pObj->m_ItemCost = tagItemView.m_ItemCost; pObj->m_ItemSales = tagItemView.m_ItemSales; pObj->m_ItemShelves = tagItemView.m_ItemShelves; pObj->m_ItemNote = tagItemView.m_ItemNote; pItemsDetailArray->AddTail(pObj); tagItemView.MoveNext(); if (nIndex >= nCount) break; } tagItemView.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/5/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryPackageItemsDetail(IN LPCTSTR lpStudioID, IN LPCTSTR lpPackageSN, OUT LPVOID lpOutPackageItems, IN CONST DWORD & dwTimeOut) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); if ( lpPackageSN == NULL || lpPackageSN[0] == _T('\0')) strSQL.Format(_T("Select count(*) as cot from [PackageItemDetail] where [StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("Select count(*) as cot from [PackageItemDetail] where [StudioID] = '%s' AND [PackageSN] = '%s'"), lpStudioID, lpPackageSN); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if (nCount == 0) return 0; if (lpPackageSN == NULL || lpPackageSN[0] == _T('\0')) strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("[StudioID] = '%s' AND [PackageSN] = '%s'"), lpStudioID, lpPackageSN); CPackageItemDetail tagItemDetail(pDatabase); tagItemDetail.m_strFilter = strSQL; tagItemDetail.Open(); INT nIndex = 0; CObList *pItemsDetailArray = (CObList*)lpOutPackageItems; while (!tagItemDetail.IsEOF()) { nIndex++; CPackageItemDetailObj *pObj = new CPackageItemDetailObj; pObj->m_StudioID = tagItemDetail.m_StudioID; pObj->m_PackageSN = tagItemDetail.m_PackageSN; pObj->m_ItemSN = tagItemDetail.m_ItemSN; pObj->m_ItemType = tagItemDetail.m_ItemType; pObj->m_ItemName = tagItemDetail.m_ItemName; pObj->m_ItemCount = tagItemDetail.m_ItemCount; pObj->m_ItemCost = tagItemDetail.m_ItemCost; pObj->m_ItemSales = tagItemDetail.m_ItemSales; pObj->m_ItemShelves = tagItemDetail.m_ItemShelves; pObj->m_ItemNote = tagItemDetail.m_ItemNote; pItemsDetailArray->AddTail(pObj); tagItemDetail.MoveNext(); if (nIndex >= nCount) break; } tagItemDetail.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/5/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryCustomerType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutCustomerFrom, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [CustomerFrom] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CCustomerFrom tagCustomerFrom(pDatabase); tagCustomerFrom.m_strFilter = strSQL; tagCustomerFrom.Open(); INT nIndex = 0; CObList *pCustomerFromArray = (CObList*)lpOutCustomerFrom; while ( !tagCustomerFrom.IsEOF() ) { nIndex++; CCustomerFromObj *pCustomerFrom = new CCustomerFromObj; pCustomerFrom->m_StudioID = tagCustomerFrom.m_StudioID; pCustomerFrom->m_CustomerFrom = tagCustomerFrom.m_CustomerFrom; pCustomerFrom->m_CustomerFromNote = tagCustomerFrom.m_CustomerFromNote; pCustomerFromArray->AddTail(pCustomerFrom); tagCustomerFrom.MoveNext(); if ( nIndex >= nCount ) break; } tagCustomerFrom.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/5/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryCustomerInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutCustomerInfo, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); if (lpFilter == NULL || lpFilter[0] == _T('\0')) strSQL.Format(_T("Select count(*) as cot from [CustomerInfo] where [StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("Select count(*) as cot from [CustomerInfo] where [StudioID] = '%s' and %s"), lpStudioID, lpFilter); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; if (lpFilter == NULL || lpFilter[0] == _T('\0')) strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("[StudioID] = '%s' and %s"), lpStudioID, lpFilter); CCustomerInfo tagCustomerInfo(pDatabase); tagCustomerInfo.m_strFilter = strSQL; tagCustomerInfo.Open(); INT nIndex = 0; CObList *pCustomerInfoArray = (CObList*)lpOutCustomerInfo; while ( !tagCustomerInfo.IsEOF() ) { nIndex++; CCustomerInfoObj *pCustomerInfo = new CCustomerInfoObj; pCustomerInfo->m_StudioID = tagCustomerInfo.m_StudioID; pCustomerInfo->m_CustomerID = tagCustomerInfo.m_CustomerID; pCustomerInfo->m_CustomerFrom = tagCustomerInfo.m_CustomerFrom; pCustomerInfo->m_CustomerName = tagCustomerInfo.m_CustomerName; pCustomerInfo->m_CustomerBirthday = tagCustomerInfo.m_CustomerBirthday; pCustomerInfo->m_CustomerGender = tagCustomerInfo.m_CustomerGender; pCustomerInfo->m_CustomerAddress = tagCustomerInfo.m_CustomerAddress; pCustomerInfo->m_CustomerPhone = tagCustomerInfo.m_CustomerPhone; pCustomerInfo->m_CustomerQQ = tagCustomerInfo.m_CustomerQQ; pCustomerInfo->m_CustomerWX = tagCustomerInfo.m_CustomerWX; pCustomerInfo->m_CustomerEMail = tagCustomerInfo.m_CustomerEMail; pCustomerInfo->m_CustomerNote = tagCustomerInfo.m_CustomerNote; pCustomerInfoArray->AddTail(pCustomerInfo); tagCustomerInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagCustomerInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/5/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryOrderType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderType, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [OrderType] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); COrderType tagOrderType(pDatabase); tagOrderType.m_strFilter = strSQL; tagOrderType.Open(); INT nIndex = 0; CObList *pOrderTypeArray = (CObList*)lpOutOrderType; while ( !tagOrderType.IsEOF() ) { nIndex++; COrderTypeObj *pOrderType = new COrderTypeObj; pOrderType->m_StudioID = tagOrderType.m_StudioID; pOrderType->m_OrderTypesName = tagOrderType.m_OrderTypesName; pOrderType->m_OrderTypesNote = tagOrderType.m_OrderTypesNote; pOrderTypeArray->AddTail(pOrderType); tagOrderType.MoveNext(); if ( nIndex >= nCount ) break; } tagOrderType.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/16/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryOrderInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderInfo, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); if ( lpFilter == NULL || lpFilter[0] == _T('\0') ) strSQL.Format(_T("Select count(*) as cot from [OrderInfo] where [StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("Select count(*) as cot from [OrderInfo] where [StudioID] = '%s' AND %s"), lpStudioID, lpFilter); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; if ( lpFilter == NULL || lpFilter[0] == _T('\0') ) strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("[StudioID] = '%s' AND %s"), lpStudioID, lpFilter); COrderInfo tagOrderInfo(pDatabase); tagOrderInfo.m_strFilter = strSQL; tagOrderInfo.Open(); INT nIndex = 0; CObList *pOrderInfoArray = (CObList*)lpOutOrderInfo; while ( !tagOrderInfo.IsEOF() ) { nIndex++; COrderInfoObj *pOrderInfo = new COrderInfoObj; pOrderInfo->m_StudioID = tagOrderInfo.m_StudioID; pOrderInfo->m_OrderNum = tagOrderInfo.m_OrderNum; pOrderInfo->m_CustomerName = tagOrderInfo.m_CustomerName; pOrderInfo->m_CustomerFrom = tagOrderInfo.m_CustomerFrom; pOrderInfo->m_CustomerPhone = tagOrderInfo.m_CustomerPhone; pOrderInfo->m_OrderAmountPaid = tagOrderInfo.m_OrderAmountPaid; pOrderInfo->m_OrderSignPerson = tagOrderInfo.m_OrderSignPerson; pOrderInfo->m_OrderTypes = tagOrderInfo.m_OrderTypes; pOrderInfo->m_OrderSubsist = tagOrderInfo.m_OrderSubsist; pOrderInfo->m_OrderFinishStatus = tagOrderInfo.m_OrderFinishStatus; pOrderInfo->m_OrderFinishTime = tagOrderInfo.m_OrderFinishTime; pOrderInfo->m_OrderGenerateDate = tagOrderInfo.m_OrderGenerateDate; pOrderInfo->m_OrderSelectionStatus = tagOrderInfo.m_OrderSelectionStatus; pOrderInfo->m_OrderAdditionalAmount = tagOrderInfo.m_OrderAdditionalAmount; pOrderInfo->m_OrderLateStageAmount = tagOrderInfo.m_OrderLateStageAmount; pOrderInfo->m_OrderPackageName = tagOrderInfo.m_OrderPackageName; pOrderInfo->m_OrderPackageSales = tagOrderInfo.m_OrderPackageSales; pOrderInfo->m_OrderPackageType = tagOrderInfo.m_OrderPackageType; pOrderInfo->m_OrderSelectionAppointment = tagOrderInfo.m_OrderSelectionAppointment; pOrderInfo->m_OrderSelectionFinishDate = tagOrderInfo.m_OrderSelectionFinishDate; pOrderInfo->m_OrderNote = tagOrderInfo.m_OrderNote; pOrderInfo->m_OrderSelectionNote = tagOrderInfo.m_OrderSelectionNote; pOrderInfo->m_OrderPackageAlbum = tagOrderInfo.m_OrderPackageAlbum; pOrderInfo->m_OrderPackageFilm = tagOrderInfo.m_OrderPackageFilm; pOrderInfo->m_CustomerRequirements = tagOrderInfo.m_CustomerRequirements; pOrderInfo->m_OrderExtraPhoto = tagOrderInfo.m_OrderExtraPhoto; pOrderInfoArray->AddTail(pOrderInfo); tagOrderInfo.MoveNext(); if ( nIndex >= nCount ) break; } tagOrderInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/16/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryOrderScenery(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderScenery, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); if (lpFilter == NULL || lpFilter[0] == _T('\0')) strSQL.Format(_T("Select count(*) as cot from [OrderScenery] where [StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("Select count(*) as cot from [OrderScenery] where [StudioID] = '%s' AND %s"), lpStudioID, lpFilter); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; if (lpFilter == NULL || lpFilter[0] == _T('\0')) strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); else strSQL.Format(_T("[StudioID] = '%s' AND %s"), lpStudioID, lpFilter); COrderScenery tagOrderScenery(pDatabase); tagOrderScenery.m_strFilter = strSQL; tagOrderScenery.Open(); INT nIndex = 0; CObList *pOrderSceneryArray = (CObList*)lpOutOrderScenery; while ( !tagOrderScenery.IsEOF() ) { nIndex++; COrderSceneryObj *pOrderScenery = new COrderSceneryObj; pOrderScenery->m_nAutoID = tagOrderScenery.m_nAutoID; pOrderScenery->m_StudioID = tagOrderScenery.m_StudioID; pOrderScenery->m_OrderNum = tagOrderScenery.m_OrderNum; pOrderScenery->m_ScenerySN = tagOrderScenery.m_ScenerySN; pOrderScenery->m_SceneryName = tagOrderScenery.m_SceneryName; pOrderScenery->m_SceneryPhotog = tagOrderScenery.m_SceneryPhotog; pOrderScenery->m_SceneryMakeupArtist = tagOrderScenery.m_SceneryMakeupArtist; pOrderScenery->m_SceneryPhotogAssistant = tagOrderScenery.m_SceneryPhotogAssistant; pOrderScenery->m_SceneryMakeupArtistAssistant = tagOrderScenery.m_SceneryMakeupArtistAssistant; pOrderScenery->m_SceneryAppointment = tagOrderScenery.m_SceneryAppointment; pOrderScenery->m_SceneryFinishDate = tagOrderScenery.m_SceneryFinishDate; pOrderScenery->m_SceneryPhotoStatus = tagOrderScenery.m_SceneryPhotoStatus; pOrderScenery->m_SceneryNote = tagOrderScenery.m_SceneryNote; pOrderSceneryArray->AddTail(pOrderScenery); tagOrderScenery.MoveNext(); if ( nIndex >= nCount ) break; } tagOrderScenery.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/16/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryOrderPackageItems(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderPackageItems, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); if (lpFilter && lpFilter[0] != '\0') strSQL.Format(_T("Select count(*) as cot from [OrderPackageItems] where [StudioID] = '%s' and %s"), lpStudioID, lpFilter); else strSQL.Format(_T("Select count(*) as cot from [OrderPackageItems] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; if (lpFilter && lpFilter[0] != '\0') strSQL.Format(_T("[StudioID] = '%s' and %s"), lpStudioID, lpFilter); else strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); COrderPackageItems tagOrderItems(pDatabase); tagOrderItems.m_strFilter = strSQL; tagOrderItems.Open(); INT nIndex = 0; CObList *pOrderPackageItemsArray = (CObList*)lpOutOrderPackageItems; while ( !tagOrderItems.IsEOF() ) { nIndex++; COrderPackageItemsObj *pOrderItems = new COrderPackageItemsObj; pOrderItems->m_AutoID = tagOrderItems.m_AutoID; pOrderItems->m_StudioID = tagOrderItems.m_StudioID; pOrderItems->m_OrderNum = tagOrderItems.m_OrderNum; pOrderItems->m_PackageItemSN = tagOrderItems.m_PackageItemSN; pOrderItems->m_PackageItemName = tagOrderItems.m_PackageItemName; pOrderItems->m_PackageItemType = tagOrderItems.m_PackageItemType; pOrderItems->m_PackageItemCost = tagOrderItems.m_PackageItemCost; pOrderItems->m_PackageItemSales = tagOrderItems.m_PackageItemSales; pOrderItems->m_PackageItemUnit = tagOrderItems.m_PackageItemUnit; pOrderItems->m_PackageItemCount = tagOrderItems.m_PackageItemCount; pOrderItems->m_ItemRelatedPhotos = tagOrderItems.m_ItemRelatedPhotos; pOrderItems->m_ItemNote = tagOrderItems.m_ItemNote; pOrderPackageItemsArray->AddTail(pOrderItems); tagOrderItems.MoveNext(); if ( nIndex >= nCount ) break; } tagOrderItems.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/16/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QuerySysConfig(IN LPCTSTR lpStudioID, OUT LPVOID lpOutSysConfig, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [SysConfig] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CSysConfig tagSysConfig(pDatabase); tagSysConfig.m_strFilter = strSQL; tagSysConfig.Open(); INT nIndex = 0; CObList *pSysConfigList = (CObList*)lpOutSysConfig; while ( !tagSysConfig.IsEOF() ) { nIndex++; CSysConfigObj *pSysConfigObj = new CSysConfigObj; pSysConfigObj->m_AutoID = tagSysConfig.m_AutoID; pSysConfigObj->m_StudioID = tagSysConfig.m_StudioID; pSysConfigObj->m_SysKeyName = tagSysConfig.m_SysKeyName; pSysConfigObj->m_SysKeyValue = tagSysConfig.m_SysKeyValue; pSysConfigObj->m_SysKeyNote = tagSysConfig.m_SysKeyNote; pSysConfigObj->m_SysKeyStatus = tagSysConfig.m_SysKeyStatus; pSysConfigList->AddTail(pSysConfigObj); tagSysConfig.MoveNext(); if ( nIndex >= nCount ) break; } tagSysConfig.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/16/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryLog(IN LPCTSTR lpStudioID, OUT LPVOID lpOutLog, IN CONST DWORD& dwTimeOut /* = 3000 */ ) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [StudioLog] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if ( nCount == 0 ) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CStudioLog tagStudioLog(pDatabase); tagStudioLog.m_strFilter = strSQL; tagStudioLog.Open(); INT nIndex = 0; CObList *pStudioLogList = (CObList*)lpOutLog; while ( !tagStudioLog.IsEOF() ) { nIndex++; CStudioLogObj *pStudioLogObj = new CStudioLogObj; pStudioLogObj->m_StudioID = tagStudioLog.m_StudioID; pStudioLogObj->m_StudioLogID = tagStudioLog.m_StudioLogID; pStudioLogObj->m_StudioLogType = tagStudioLog.m_StudioLogType; pStudioLogObj->m_StudioLogOpt = tagStudioLog.m_StudioLogOpt; pStudioLogObj->m_StudioLogOptDateTime = tagStudioLog.m_StudioLogOptDateTime; pStudioLogObj->m_StudioLogOptUser = tagStudioLog.m_StudioLogOptUser; pStudioLogObj->m_StudioLogOptContent = tagStudioLog.m_StudioLogOptContent; pStudioLogObj->m_StudioLogStaff = tagStudioLog.m_StudioLogStaff; pStudioLogList->AddTail(pStudioLogObj); tagStudioLog.MoveNext(); if ( nIndex >= nCount ) break; } tagStudioLog.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/27/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryStudioInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutStudioInfo, IN CONST DWORD & dwTimeOut) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [StudioInfo] where [StudioID] = '%s' "), lpStudioID); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if (nCount == 0) return 0; strSQL.Format(_T("[StudioID] = '%s' "), lpStudioID); CStudioInfo tagStudioInfo(pDatabase); tagStudioInfo.m_strFilter = strSQL; tagStudioInfo.Open(); CStudioInfoObj *pStudioInfoObj = (CStudioInfoObj*)lpOutStudioInfo; if (!tagStudioInfo.IsEOF()) { pStudioInfoObj->m_StudioID = tagStudioInfo.m_StudioID; pStudioInfoObj->m_StudioName = tagStudioInfo.m_StudioName; pStudioInfoObj->m_StudioAddress = tagStudioInfo.m_StudioAddress; pStudioInfoObj->m_StudioWebSite = tagStudioInfo.m_StudioWebSite; pStudioInfoObj->m_StudioTelephone = tagStudioInfo.m_StudioTelephone; pStudioInfoObj->m_StudioOwner = tagStudioInfo.m_StudioOwner; pStudioInfoObj->m_StudioOwnerphone = tagStudioInfo.m_StudioOwnerphone; pStudioInfoObj->m_StudioManager = tagStudioInfo.m_StudioManager; pStudioInfoObj->m_StudioManagerphone = tagStudioInfo.m_StudioManagerphone; #if 0 // 获取图片信息; pStudioInfoObj->m_StudioQRCode.m_hData = GlobalAlloc(GPTR, tagStudioInfo.m_StudioQRCode.m_dwDataLength); pStudioInfoObj->m_StudioQRCode.m_dwDataLength = tagStudioInfo.m_StudioQRCode.m_dwDataLength; BYTE *pImage = (BYTE*)GlobalLock(tagStudioInfo.m_StudioQRCode.m_hData); memcpy(pStudioInfoObj->m_StudioQRCode.m_hData, pImage, tagStudioInfo.m_StudioQRCode.m_dwDataLength); GlobalUnlock(tagStudioInfo.m_StudioQRCode.m_hData); #else LPBYTE lpData = (LPBYTE)GlobalLock(tagStudioInfo.m_StudioQRCode.m_hData); if (lpData) { pStudioInfoObj->m_StudioQRCode.SetSize(tagStudioInfo.m_StudioQRCode.m_dwDataLength); memcpy(pStudioInfoObj->m_StudioQRCode.GetData(), lpData, tagStudioInfo.m_StudioQRCode.m_dwDataLength); } GlobalUnlock(tagStudioInfo.m_StudioQRCode.m_hData); #endif } tagStudioInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); } return 0; } /************************************************************************/ /* 函数:[10/27/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::SupQueryStudioInfo(OUT LPVOID lpOutStudioInfo, IN CONST DWORD & dwTimeOut) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("Select count(*) as cot from [StudioInfo] ")); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("cot"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); if (nCount == 0) return 0; CStudioInfo tagStudioInfo(pDatabase); tagStudioInfo.Open(); INT nIndex = 0; CObList *pStudioLogList = (CObList*)lpOutStudioInfo; while (!tagStudioInfo.IsEOF()) { nIndex++; CStudioInfoObj *pStudioInfoObj = new CStudioInfoObj; pStudioInfoObj->m_StudioID = tagStudioInfo.m_StudioID; pStudioInfoObj->m_StudioName = tagStudioInfo.m_StudioName; pStudioInfoObj->m_StudioAddress = tagStudioInfo.m_StudioAddress; pStudioInfoObj->m_StudioWebSite = tagStudioInfo.m_StudioWebSite; pStudioInfoObj->m_StudioTelephone = tagStudioInfo.m_StudioTelephone; pStudioInfoObj->m_StudioOwner = tagStudioInfo.m_StudioOwner; pStudioInfoObj->m_StudioOwnerphone = tagStudioInfo.m_StudioOwnerphone; pStudioInfoObj->m_StudioManager = tagStudioInfo.m_StudioManager; pStudioInfoObj->m_StudioManagerphone = tagStudioInfo.m_StudioManagerphone; #if 0 // 获取图片信息; HGLOBAL hGlobal = GlobalAlloc(GPTR, tagStudioInfo.m_StudioQRCode.m_dwDataLength); pStudioInfoObj->m_StudioQRCode.m_hData = GlobalLock(hGlobal); pStudioInfoObj->m_StudioQRCode.m_dwDataLength = tagStudioInfo.m_StudioQRCode.m_dwDataLength; memcpy(pStudioInfoObj->m_StudioQRCode.m_hData, tagStudioInfo.m_StudioQRCode.m_hData, tagStudioInfo.m_StudioQRCode.m_dwDataLength); GlobalUnlock(hGlobal); GlobalFree(hGlobal); #else LPBYTE lpData = (LPBYTE)GlobalLock(tagStudioInfo.m_StudioQRCode.m_hData); if ( lpData ) { pStudioInfoObj->m_StudioQRCode.SetSize(tagStudioInfo.m_StudioQRCode.m_dwDataLength); memcpy(pStudioInfoObj->m_StudioQRCode.GetData(), lpData, tagStudioInfo.m_StudioQRCode.m_dwDataLength); } GlobalUnlock(tagStudioInfo.m_StudioQRCode.m_hData); #endif pStudioLogList->AddTail(pStudioInfoObj); tagStudioInfo.MoveNext(); if (nIndex >= nCount) break; } tagStudioInfo.Close(); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); } return 0; } /************************************************************************/ /* 函数:[2/26/2017 Jeff]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryMaxOrderId(IN LPCTSTR lpStudioID, IN CONST DWORD& dwTimeOut /* = 3000 */) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("select max(OrderNum) as maxnum from [OrderInfo] where [StudioID] = '%s' and [OrderNum] like '%s%%'"), lpStudioID, CTime::GetCurrentTime().Format(_T("%Y%m%d"))); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("maxnum"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL.Right(3)); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[2/26/2017 Jeff]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ INT CODBCPtr::QueryMaxPrintId(IN LPCTSTR lpStudioID, IN CONST DWORD& dwTimeOut /* = 3000 */) { GETDBPTR(dwTimeOut); try { INT nCount = 0; CString strSQL = _T(""); strSQL.Format(_T("select max(OrderNum) as maxnum from [OrderInfo] where [StudioID] = '%s' and [OrderNum] like '%s%%'"), lpStudioID, CTime::GetCurrentTime().Format(_T("%Y%m%d"))); CRecordset tagRecordset(pDatabase); tagRecordset.Open(CRecordset::forwardOnly, strSQL); tagRecordset.GetFieldValue(_T("maxnum"), strSQL); tagRecordset.Close(); nCount = _ttoi(strSQL); return nCount; } catch (CDBException* e) { //Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); Global::WriteTextLog(_T("%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return 0; } return 0; } /************************************************************************/ /* 函数:[10/27/2016 IT]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ BOOL CODBCPtr::InsertStudioInfo(IN LPVOID lpStudioInfo, IN CONST DWORD & dwTimeOut) { if (lpStudioInfo == NULL) return FALSE; GETDBPTR(dwTimeOut); CStudioInfoObj *pStudioInfoObj = (CStudioInfoObj*)lpStudioInfo; // 先查找是否存在该ID; try { CStudioInfo tagStudioInfo(pDatabase); tagStudioInfo.m_strFilter.Format(_T("StudioID = '%s'"), pStudioInfoObj->m_StudioID); if (!tagStudioInfo.Open() || !tagStudioInfo.CanAppend()) return FALSE; if (tagStudioInfo.IsEOF()) { // 清空所有字段; tagStudioInfo.SetFieldNull(NULL); tagStudioInfo.AddNew(); tagStudioInfo.m_StudioID = pStudioInfoObj->m_StudioID; tagStudioInfo.m_StudioName = pStudioInfoObj->m_StudioName; tagStudioInfo.m_StudioAddress = pStudioInfoObj->m_StudioAddress; tagStudioInfo.m_StudioWebSite = pStudioInfoObj->m_StudioWebSite; tagStudioInfo.m_StudioTelephone = pStudioInfoObj->m_StudioTelephone; tagStudioInfo.m_StudioOwner = pStudioInfoObj->m_StudioOwner; tagStudioInfo.m_StudioOwnerphone = pStudioInfoObj->m_StudioOwnerphone; tagStudioInfo.m_StudioManager = pStudioInfoObj->m_StudioManager; tagStudioInfo.m_StudioManagerphone = pStudioInfoObj->m_StudioManagerphone; #if 0 tagStudioInfo.m_StudioQRCode.m_dwDataLength = pStudioInfoObj->m_StudioQRCode.m_dwDataLength; tagStudioInfo.m_StudioQRCode.m_hData = GlobalAlloc(GPTR, tagStudioInfo.m_StudioQRCode.m_dwDataLength); memcpy(tagStudioInfo.m_StudioQRCode.m_hData, pStudioInfoObj->m_StudioQRCode.m_hData, tagStudioInfo.m_StudioQRCode.m_dwDataLength); #else tagStudioInfo.m_StudioQRCode.m_dwDataLength = pStudioInfoObj->m_StudioQRCode.GetSize(); tagStudioInfo.m_StudioQRCode.m_hData = GlobalAlloc(GPTR, tagStudioInfo.m_StudioQRCode.m_dwDataLength); memcpy(tagStudioInfo.m_StudioQRCode.m_hData, pStudioInfoObj->m_StudioQRCode.GetData(), tagStudioInfo.m_StudioQRCode.m_dwDataLength); pStudioInfoObj->m_StudioQRCode.RemoveAll(); #endif tagStudioInfo.SetFieldDirty(&tagStudioInfo.m_StudioQRCode); tagStudioInfo.SetFieldNull(&tagStudioInfo.m_StudioQRCode, FALSE); tagStudioInfo.Update(); tagStudioInfo.Close(); return TRUE; } } catch (CDBException* e) { Global::WriteTextLog(_T("添加影楼信息失败:%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); } return FALSE; } BOOL CODBCPtr::UpdateStudioInfo(IN LPVOID lpStudioInfo, IN CONST DWORD & dwTimeOut) { if (lpStudioInfo == NULL) return FALSE; GETDBPTR(dwTimeOut); CStudioInfoObj *pStudioInfoObj = (CStudioInfoObj*)lpStudioInfo; // 先查找是否存在该ID; try { CStudioInfo tagStudioInfo(pDatabase); tagStudioInfo.m_strFilter.Format(_T("StudioID = '%s'"), pStudioInfoObj->m_StudioID); if (!tagStudioInfo.Open() || !tagStudioInfo.CanAppend()) return FALSE; if (!tagStudioInfo.IsEOF()) { // 清空所有字段; tagStudioInfo.Edit(); tagStudioInfo.m_StudioID = pStudioInfoObj->m_StudioID; tagStudioInfo.m_StudioName = pStudioInfoObj->m_StudioName; tagStudioInfo.m_StudioAddress = pStudioInfoObj->m_StudioAddress; tagStudioInfo.m_StudioWebSite = pStudioInfoObj->m_StudioWebSite; tagStudioInfo.m_StudioTelephone = pStudioInfoObj->m_StudioTelephone; tagStudioInfo.m_StudioOwner = pStudioInfoObj->m_StudioOwner; tagStudioInfo.m_StudioOwnerphone = pStudioInfoObj->m_StudioOwnerphone; tagStudioInfo.m_StudioManager = pStudioInfoObj->m_StudioManager; tagStudioInfo.m_StudioManagerphone = pStudioInfoObj->m_StudioManagerphone; #if 0 tagStudioInfo.m_StudioQRCode.m_dwDataLength = pStudioInfoObj->m_StudioQRCode.m_dwDataLength; tagStudioInfo.m_StudioQRCode.m_hData = GlobalAlloc(GPTR, tagStudioInfo.m_StudioQRCode.m_dwDataLength); memcpy(tagStudioInfo.m_StudioQRCode.m_hData, pStudioInfoObj->m_StudioQRCode.m_hData, tagStudioInfo.m_StudioQRCode.m_dwDataLength); #else tagStudioInfo.m_StudioQRCode.m_dwDataLength = pStudioInfoObj->m_StudioQRCode.GetSize(); tagStudioInfo.m_StudioQRCode.m_hData = GlobalAlloc(GPTR, tagStudioInfo.m_StudioQRCode.m_dwDataLength); memcpy(tagStudioInfo.m_StudioQRCode.m_hData, pStudioInfoObj->m_StudioQRCode.GetData(), tagStudioInfo.m_StudioQRCode.m_dwDataLength); pStudioInfoObj->m_StudioQRCode.RemoveAll(); #endif tagStudioInfo.SetFieldDirty(&tagStudioInfo.m_StudioQRCode); tagStudioInfo.SetFieldNull(&tagStudioInfo.m_StudioQRCode, FALSE); tagStudioInfo.Update(); tagStudioInfo.Close(); return TRUE; } } catch (CDBException* e) { Global::WriteTextLog(_T("修改影楼信息失败:%s"), e->m_strError); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); } return FALSE; } /* GETDBPTR(dwTimeOut); try { } catch (CDBException* e) { e->ReportError(); SolveDBError(e->m_nRetCode, pDatabase); e->Delete(); return FALSE; } return TRUE; */