ODBCConnect.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. #include "StdAfx.h"
  2. #include "ODBCConnect.h"
  3. #include <strsafe.h>
  4. CODBCConnect::CODBCConnect(IN LPCTSTR lpDBSource, IN CONST DWORD &dwDBPort, IN LPCTSTR lpDBAccount, IN LPCTSTR lpPassWord, IN LPCTSTR lpDBName, BOOL &bResult)
  5. {
  6. m_bOpen = FALSE;
  7. m_busing = FALSE;
  8. m_pdbInstance = NULL;
  9. memset(m_szConnectString, 0, MAX_PATH*sizeof(TCHAR));
  10. bResult = Open(lpDBSource, dwDBPort, lpDBAccount, lpPassWord, lpDBName);
  11. }
  12. CODBCConnect::~CODBCConnect(void)
  13. {
  14. Close();
  15. }
  16. void CODBCConnect::SolveDBError( IN CONST DWORD &dwError, IN LPCTSTR lpErrorString)
  17. {
  18. switch(dwError)
  19. {
  20. case SQL_ERROR:
  21. case ERROR_PIPE_NOT_CONNECTED:
  22. case WSAECONNRESET:
  23. case WSAECONNABORTED:
  24. {
  25. //m_bEffectConnect = FALSE;
  26. printf(_T("\t数据库无效连接[%d]:%d, %s\n\n"), m_nObjId, dwError, lpErrorString);
  27. LOG4C_NO_FILENUM((LOG_NOTICE,"\t数据库无效连接[%d]:%d, %s", m_nObjId, dwError, lpErrorString));
  28. Close();
  29. if ( m_pdbInstance == NULL )
  30. {
  31. m_pdbInstance = new CDatabase;
  32. try
  33. {
  34. m_pdbInstance->OpenEx(m_szConnectString, CDatabase::noOdbcDialog);
  35. m_bOpen = TRUE;
  36. }
  37. catch (...)
  38. {
  39. delete m_pdbInstance;
  40. m_pdbInstance = NULL;
  41. }
  42. }
  43. }
  44. break;
  45. default:
  46. // 其他错误,输出日志;
  47. printf(_T("\t数据库语法错误[%d]:%d, %s\n\n"), m_nObjId,dwError, lpErrorString);
  48. //LOG4C_NO_FILENUM((LOG_NOTICE,"数据库语法错误[%d]:%d, %s", m_nObjId,dwError, lpErrorString));
  49. break;
  50. }
  51. }
  52. INT CODBCConnect::Open( IN LPCTSTR lpDBSource, IN CONST DWORD &dwDBPort, IN LPCTSTR lpDBAccount, IN LPCTSTR lpPassWord, IN LPCTSTR lpDBName )
  53. {
  54. if (m_pdbInstance == NULL)
  55. {
  56. m_pdbInstance = new CDatabase;
  57. TCHAR szConnString[MAX_PATH] = {0};
  58. if (dwDBPort != 0)
  59. _stprintf_s(szConnString, _T("driver={SQL Server};Server=%s,%d;database=%s;uid=%s;pwd=%s"),
  60. lpDBSource, dwDBPort, lpDBName, lpDBAccount, lpPassWord);
  61. else
  62. _stprintf_s(szConnString, _T("driver={SQL Server};Server=%s;database=%s;uid=%s;pwd=%s"),
  63. lpDBSource, lpDBName, lpDBAccount, lpPassWord);
  64. try
  65. {
  66. m_pdbInstance->OpenEx(szConnString, CDatabase::noOdbcDialog);
  67. _stprintf_s(m_szConnectString, _T("%s"), szConnString);
  68. }
  69. catch (.../*CDBException* e*/)
  70. {
  71. delete m_pdbInstance;
  72. m_pdbInstance = NULL;
  73. //printf("%s\n",e->m_strError);
  74. //e->ReportError();
  75. //e->Delete();
  76. return FALSE;
  77. }
  78. m_bOpen = TRUE;
  79. //m_bEffectConnect = TRUE;
  80. }
  81. return m_bOpen;
  82. }
  83. void CODBCConnect::Close()
  84. {
  85. if ( m_bOpen )
  86. {
  87. if ( m_pdbInstance )
  88. {
  89. delete m_pdbInstance;
  90. m_pdbInstance = NULL;
  91. m_bOpen = FALSE;
  92. //m_bEffectConnect = FALSE;
  93. }
  94. }
  95. }
  96. BOOL CODBCConnect::GetSelectby(IN LPCTSTR lpTblName, IN LPCTSTR lpColumn, IN LPCTSTR lpFilters, OUT LPTSTR lpResult, IN CONST INT& nBufLen )
  97. {
  98. try
  99. {
  100. if (!m_bOpen)
  101. return -1;
  102. CString strSQL;
  103. if (lpFilters && _tcsicmp(lpFilters, _T("")) != 0)
  104. strSQL.Format(_T("select %s from %s where %s"), lpColumn, lpTblName, lpFilters);
  105. else
  106. strSQL.Format(_T("select %s from %s"), lpColumn, lpTblName);
  107. CRecordset tagRecordset(m_pdbInstance);
  108. tagRecordset.Open(CRecordset::forwardOnly, strSQL);
  109. if(!tagRecordset.IsEOF())
  110. {
  111. tagRecordset.GetFieldValue(lpColumn, strSQL);
  112. _stprintf_s(lpResult, nBufLen, _T("%s"), (LPCTSTR)strSQL);
  113. }
  114. tagRecordset.Close();
  115. }
  116. catch(CDBException* e)
  117. {
  118. printf(_T("CODBCConnect::GetSelectby!\n"));
  119. printf("%s\n",e->m_strError);
  120. SolveDBError(e->m_nRetCode,e->m_strError);
  121. e->Delete();
  122. return FALSE;
  123. }
  124. return TRUE;
  125. }
  126. BOOL CODBCConnect::ExecuteSQL( IN LPCTSTR lpSQL )
  127. {
  128. try
  129. {
  130. if ( !m_bOpen || lpSQL == NULL )
  131. return FALSE;
  132. m_pdbInstance->ExecuteSQL(lpSQL);
  133. }
  134. catch (CDBException* e)
  135. {
  136. //printf(_T("CODBCConnect::ExecuteSQL : %s!\n"), lpSQL);
  137. //printf("%s\n",e->m_strError);
  138. CString str = lpSQL;
  139. str.Replace(_T("\n"), _T(" "));
  140. str.Replace(_T("\r"), _T(" "));
  141. //LOG4C_NO_FILENUM((LOG_NOTICE, "SQL出错[%s]:%s", e->m_strError, str ));
  142. SolveDBError(e->m_nRetCode,e->m_strError);
  143. e->Delete();
  144. return FALSE;
  145. }
  146. return TRUE;
  147. }
  148. INT CODBCConnect::GetTblRecordCount(IN LPCTSTR lpTblName, IN LPCTSTR lpFilters)
  149. {
  150. try
  151. {
  152. if (!m_bOpen)
  153. return -1;
  154. CString strSQL;
  155. if (lpFilters && _tcsicmp(lpFilters, _T("")) != 0)
  156. strSQL.Format(_T("select count(*) as cot from %s where %s"), lpTblName, lpFilters);
  157. else
  158. strSQL.Format(_T("select count(*) as cot from %s"), lpTblName);
  159. CRecordset tagRecordset(m_pdbInstance);
  160. tagRecordset.Open(CRecordset::forwardOnly, strSQL);
  161. tagRecordset.GetFieldValue(_T("cot"), strSQL);
  162. tagRecordset.Close();
  163. return _ttoi(strSQL);
  164. }
  165. catch (CDBException* e)
  166. {
  167. printf(_T("CODBCConnect::GetTblRecordCount!\n"));
  168. printf("%s\n",e->m_strError);
  169. SolveDBError(e->m_nRetCode,e->m_strError);
  170. e->Delete();
  171. }
  172. return -1;
  173. }
  174. BOOL CODBCConnect::GetVersionInfo( OUT LPVOID lpVerInfo )
  175. {
  176. try{
  177. if (!m_bOpen) return FALSE;
  178. TblVersion *pVerInfo = (TblVersion *)(lpVerInfo);
  179. CTblversion rsSt;
  180. rsSt.m_pDatabase = m_pdbInstance;
  181. rsSt.Open();
  182. INT_PTR nIndex = 0;
  183. while (!rsSt.IsEOF())
  184. {
  185. _stprintf_s(pVerInfo->szVersion, _T("%s"), rsSt.m_version);
  186. _stprintf_s(pVerInfo->szbakServer1, _T("%s"), rsSt.m_bakserver1);
  187. _stprintf_s(pVerInfo->szbakServer2, _T("%s"), rsSt.m_bakserver2);
  188. _stprintf_s(pVerInfo->szbakServer3, _T("%s"), rsSt.m_bakserver3);
  189. _stprintf_s(pVerInfo->szbakServer4, _T("%s"), rsSt.m_bakserver4);
  190. _stprintf_s(pVerInfo->szbakServer5, _T("%s"), rsSt.m_bakserver5);
  191. pVerInfo->bCheck1 = _ttoi(rsSt.m_check1);
  192. pVerInfo->bCheck2 = _ttoi(rsSt.m_check2);
  193. pVerInfo->bCheck3 = _ttoi(rsSt.m_check3);
  194. pVerInfo->bCheck4 = _ttoi(rsSt.m_check4);
  195. pVerInfo->bCheckbak1 = _ttoi(rsSt.m_bak1);
  196. pVerInfo->bCheckbak2 = _ttoi(rsSt.m_bak2);
  197. pVerInfo->bCheckbak3 = _ttoi(rsSt.m_bak3);
  198. pVerInfo->bCheckbak4 = _ttoi(rsSt.m_bak4);
  199. pVerInfo->bCheckbak5 = _ttoi(rsSt.m_bak5);
  200. pVerInfo->bCheckbak6 = _ttoi(rsSt.m_bak6);
  201. pVerInfo->bCheckbakdel1 = _ttoi(rsSt.m_delcheck1);
  202. pVerInfo->bCheckbakdel2 = _ttoi(rsSt.m_delcheck2);
  203. pVerInfo->bCheckbakdel3 = _ttoi(rsSt.m_delcheck3);
  204. pVerInfo->bCheckbakdel4 = _ttoi(rsSt.m_delcheck4);
  205. pVerInfo->bSubCheck1 = _ttoi(rsSt.m_bak11);
  206. pVerInfo->bSubCheck2 = _ttoi(rsSt.m_bak22);
  207. pVerInfo->bSubCheck3 = _ttoi(rsSt.m_bak33);
  208. pVerInfo->bSubCheck4 = _ttoi(rsSt.m_bak44);
  209. pVerInfo->nbakTime = _ttoi(rsSt.m_baktime);
  210. pVerInfo->nCheckMonth1 = _ttoi(rsSt.m_edit1);
  211. pVerInfo->nCheckMonth2 = _ttoi(rsSt.m_edit2);
  212. pVerInfo->nCheckMonth3 = _ttoi(rsSt.m_edit3);
  213. pVerInfo->nCheckMonth4 = _ttoi(rsSt.m_edit4);
  214. pVerInfo->nCheckbdMonth1 = _ttoi(rsSt.m_deledit1);
  215. pVerInfo->nCheckbdMonth2 = _ttoi(rsSt.m_deledit2);
  216. pVerInfo->nCheckbdMonth3 = _ttoi(rsSt.m_deledit3);
  217. pVerInfo->nCheckbdMonth4 = _ttoi(rsSt.m_deledit4);
  218. nIndex++;
  219. rsSt.MoveNext();
  220. }
  221. rsSt.Close();
  222. }
  223. catch (CDBException *e)
  224. {
  225. printf(_T("CODBCConnect::GetVersionInfo!\n"));
  226. printf("%s\n",e->m_strError);
  227. SolveDBError(e->m_nRetCode,e->m_strError);
  228. e->Delete();
  229. return FALSE;
  230. }
  231. return TRUE;
  232. }
  233. BOOL CODBCConnect::GetNetShareInfo( OUT LPVOID lpNetShareInfo )
  234. {
  235. try{
  236. if (!m_bOpen) return FALSE;
  237. vector<TblNetShareInfo> *pNetShareInfo = (vector<TblNetShareInfo> *)(lpNetShareInfo);
  238. CTblNetShareInfo rsSt;
  239. rsSt.m_pDatabase = m_pdbInstance;
  240. rsSt.Open();
  241. INT_PTR nIndex = 0;
  242. while (!rsSt.IsEOF())
  243. {
  244. TblNetShareInfo tagNetInfo;
  245. tagNetInfo.bEnable = rsSt.m_enable;
  246. _stprintf_s(tagNetInfo.szBranchId, _T("%s"), rsSt.m_branchid );
  247. _stprintf_s(tagNetInfo.szShareDirectory, _T("%s"), rsSt.m_sharepath );
  248. tagNetInfo.byMinCapacity = rsSt.m_mincapacity;
  249. tagNetInfo.byMaxCapacity = rsSt.m_maxcapacity;
  250. tagNetInfo.byImgType = rsSt.m_phototype;
  251. tagNetInfo.byPriority = rsSt.m_priority;
  252. pNetShareInfo->push_back(tagNetInfo);
  253. nIndex++;
  254. rsSt.MoveNext();
  255. }
  256. rsSt.Close();
  257. }
  258. catch (CDBException *e)
  259. {
  260. printf(_T("CODBCConnect::GetNetShareInfo!\n"));
  261. printf("%s\n",e->m_strError);
  262. SolveDBError(e->m_nRetCode,e->m_strError);
  263. e->Delete();
  264. return FALSE;
  265. }
  266. return TRUE;
  267. }
  268. BOOL CODBCConnect::GetOrderInfo( OUT LPVOID lpOrderInfo )
  269. {
  270. try{
  271. if (!m_bOpen) return FALSE;
  272. CArray<CStringArray,CStringArray> *pOrderInfo = (CArray<CStringArray,CStringArray> *)(lpOrderInfo);
  273. //CString strFilter = _T("id like('201411%')");
  274. //INT nCount = GetTblRecordCount(_T("dindan"), strFilter);
  275. INT nCount = GetTblRecordCount(_T("dindan"), NULL);
  276. if ( nCount == 0 )
  277. {
  278. OutputDebugString(_T("\n无记录\n"));
  279. return FALSE;
  280. }
  281. pOrderInfo->SetSize(nCount,1);
  282. CTbldindan rsSt;
  283. rsSt.m_pDatabase = m_pdbInstance;
  284. //rsSt.m_strFilter = strFilter;
  285. rsSt.Open();
  286. INT_PTR nIndex = 0;
  287. while (!rsSt.IsEOF())
  288. {
  289. pOrderInfo->ElementAt(nIndex).Add( rsSt.m_id);
  290. pOrderInfo->ElementAt(nIndex).Add( rsSt.m_name1);
  291. pOrderInfo->ElementAt(nIndex).Add( rsSt.m_name2);
  292. pOrderInfo->ElementAt(nIndex).Add( rsSt.m_taoxiid);
  293. pOrderInfo->ElementAt(nIndex).Add( rsSt.m_taoxiname);
  294. pOrderInfo->ElementAt(nIndex).Add( rsSt.m_taoxijiage);
  295. nIndex++;
  296. rsSt.MoveNext();
  297. if ( pOrderInfo->GetSize() <= nIndex )
  298. {
  299. break;
  300. }
  301. }
  302. rsSt.Close();
  303. }
  304. catch (CDBException *e)
  305. {
  306. printf(_T("CODBCConnect::GetOrderInfo!\n"));
  307. printf("%s\n",e->m_strError);
  308. SolveDBError(e->m_nRetCode,e->m_strError);
  309. e->Delete();
  310. return FALSE;
  311. }
  312. return TRUE;
  313. }
  314. BOOL CODBCConnect::GetunauthInfo( IN LPCTSTR lpSQLFilters, OUT LPTSTR lpUnauthInfo )
  315. {
  316. try{
  317. if (!m_bOpen) return FALSE;
  318. if ( lpSQLFilters == NULL || lpUnauthInfo == NULL )
  319. return FALSE;
  320. CRecordset rsSt(m_pdbInstance);
  321. CString strSQL;
  322. strSQL.Format(_T("select [execute] from unauth where name = '%s'"), lpSQLFilters);
  323. rsSt.Open(CRecordset::forwardOnly, strSQL);
  324. if (!rsSt.IsEOF())
  325. {
  326. rsSt.GetFieldValue(_T("execute"), strSQL);
  327. //_stprintf_s(lpUnauthInfo, 1024, _T("%s"), strSQL);
  328. StringCchPrintf(lpUnauthInfo, strSQL.GetLength() + 1, _T("%s"),strSQL);
  329. }
  330. rsSt.Close();
  331. }
  332. catch (CDBException *e)
  333. {
  334. printf(_T("CODBCConnect::GetOrderInfo!\n"));
  335. printf("%s\n",e->m_strError);
  336. SolveDBError(e->m_nRetCode,e->m_strError);
  337. e->Delete();
  338. return FALSE;
  339. }
  340. return TRUE;
  341. }
  342. BOOL CODBCConnect::GetunauthInfo( IN LPCTSTR lpSQLFilters, OUT TString &strUnauthInfo )
  343. {
  344. try{
  345. if (!m_bOpen) return FALSE;
  346. if ( lpSQLFilters == NULL )
  347. return FALSE;
  348. CRecordset rsSt(m_pdbInstance);
  349. CString strSQL;
  350. strSQL.Format(_T("select [execute] from unauth where name = '%s'"), lpSQLFilters);
  351. rsSt.Open(CRecordset::forwardOnly, strSQL);
  352. if (!rsSt.IsEOF())
  353. {
  354. rsSt.GetFieldValue(_T("execute"), strSQL);
  355. //_stprintf_s(lpUnauthInfo, 1024, _T("%s"), strSQL);
  356. //StringCchPrintf(lpUnauthInfo, strSQL.GetLength() + 1, _T("%s"),strSQL);
  357. //strUnauthInfo = strSQL.GetString();
  358. strUnauthInfo.append(strSQL);
  359. }
  360. rsSt.Close();
  361. }
  362. catch (CDBException *e)
  363. {
  364. printf("CODBCConnect::GetunauthInfo %s\n",e->m_strError);
  365. SolveDBError(e->m_nRetCode,e->m_strError);
  366. e->Delete();
  367. return FALSE;
  368. }
  369. return TRUE;
  370. }
  371. INT CODBCConnect::GetClientEnterpriseName( IN LPCTSTR lpSQLFilters, OUT LPVOID lpClientIPInfo )
  372. {
  373. try{
  374. if (!m_bOpen) return -1;
  375. INT nCount = 0;
  376. TblClientip1 *pClientIPInfo = (TblClientip1 *)(lpClientIPInfo);
  377. CTblclientip rsSt;
  378. rsSt.m_pDatabase = m_pdbInstance;
  379. rsSt.m_strFilter = lpSQLFilters;
  380. rsSt.Open();
  381. INT_PTR nIndex = 0;
  382. if (!rsSt.IsEOF())
  383. {
  384. #if 0
  385. _stprintf_s(pClientIPInfo->szBranchname, _T("%s"), rsSt.m_branchname);
  386. _stprintf_s(pClientIPInfo->szRegcode2, _T("%s"), rsSt.m_regcode2);
  387. #else
  388. pClientIPInfo->szBranchname = rsSt.m_branchname;
  389. pClientIPInfo->szRegcode2 = rsSt.m_regcode2;
  390. #endif
  391. nCount = 1;
  392. }
  393. rsSt.Close();
  394. return nCount;
  395. }
  396. catch (CDBException *e)
  397. {
  398. printf("CODBCConnect::GetClientEnterpriseName %s\n",e->m_strError);
  399. SolveDBError(e->m_nRetCode,e->m_strError);
  400. e->Delete();
  401. return -1;
  402. }
  403. }
  404. INT CODBCConnect::GetEnterprisInfo(IN LPCTSTR lpEnterpriseName, OUT CArray<CStringArray, CStringArray>& AryEnterpriseInfo)
  405. {
  406. try{
  407. if (!m_bOpen || lpEnterpriseName == NULL || lpEnterpriseName[0] == _T('\0') ) return -1;
  408. INT nCount = 0;
  409. CString strSQL = _T("");
  410. strSQL.Format(_T("select count(*) as cot from clientip where [enterprisename]= '%s'"), lpEnterpriseName);
  411. CRecordset tagRecordset(m_pdbInstance);
  412. tagRecordset.Open(CRecordset::forwardOnly, strSQL);
  413. tagRecordset.GetFieldValue(_T("cot"), strSQL);
  414. nCount = _ttoi(strSQL);
  415. if ( nCount == 0 ) return 0;
  416. CTblclientip rsSt;
  417. rsSt.m_pDatabase = m_pdbInstance;
  418. strSQL.Format(_T("[enterprisename] = '%s'"),lpEnterpriseName);
  419. rsSt.m_strFilter = strSQL;
  420. rsSt.Open();
  421. INT_PTR nIndex = 0;
  422. AryEnterpriseInfo.SetSize(nCount,1);
  423. while (!rsSt.IsEOF())
  424. {
  425. AryEnterpriseInfo.ElementAt(nIndex).RemoveAll();
  426. AryEnterpriseInfo.ElementAt(nIndex).Add(rsSt.m_name);
  427. AryEnterpriseInfo.ElementAt(nIndex).Add(rsSt.m_branchname);
  428. AryEnterpriseInfo.ElementAt(nIndex).Add(rsSt.m_ip);
  429. AryEnterpriseInfo.ElementAt(nIndex).Add(rsSt.m_bmain);
  430. AryEnterpriseInfo.ElementAt(nIndex).Add(rsSt.m_enterprisename);
  431. strSQL = _T(",") + rsSt.m_rights + _T(",");
  432. AryEnterpriseInfo.ElementAt(nIndex).Add(strSQL);
  433. AryEnterpriseInfo.ElementAt(nIndex).Add(rsSt.m_name2);
  434. rsSt.MoveNext();
  435. nIndex++;
  436. if ( nIndex >= AryEnterpriseInfo.GetSize() )
  437. break;
  438. }
  439. rsSt.Close();
  440. //AryEnterpriseInfo.SetSize(nIndex,1);
  441. return nCount;
  442. }
  443. catch (CDBException *e)
  444. {
  445. printf("CODBCConnect::GetEnterprisInfo %s\n",e->m_strError);
  446. SolveDBError(e->m_nRetCode,e->m_strError);
  447. e->Delete();
  448. return -1;
  449. }
  450. }
  451. BOOL CODBCConnect::GetDBCFileInfo(IN LPCTSTR lpSQL, OUT TString& strResult )
  452. {
  453. try{
  454. if (!m_bOpen || lpSQL == NULL || lpSQL[0] == _T('\0') ) return FALSE;
  455. INT i;
  456. INT nColumns;
  457. CString temp;
  458. CODBCFieldInfo fieldinfo;
  459. CRecordset rsSet(m_pdbInstance);
  460. rsSet.Open(CRecordset::forwardOnly, lpSQL);
  461. strResult = _T("");
  462. if( !rsSet.IsEOF() )
  463. {
  464. nColumns = rsSet.GetODBCFieldCount();
  465. for( i = 0; i < nColumns-1; i++)
  466. {
  467. rsSet.GetFieldValue(i, temp);
  468. strResult.append(_T("'"));
  469. strResult.append(temp);
  470. strResult.append(_T("',"));
  471. }
  472. rsSet.GetFieldValue(i, temp);
  473. strResult.append(_T("'"));
  474. strResult.append(temp);
  475. strResult.append(_T("'\r\n"));
  476. rsSet.MoveNext();
  477. }
  478. rsSet.Close();
  479. }
  480. catch(CDBException *e)
  481. {
  482. printf("CODBCConnect::GetEnterprisInfo %s\n",e->m_strError);
  483. SolveDBError(e->m_nRetCode,e->m_strError);
  484. e->Delete();
  485. return FALSE;
  486. }
  487. return TRUE;
  488. }
  489. BOOL CODBCConnect::GetTookOrderInfo( OUT LPVOID lpTookOrderInfo )
  490. {
  491. try{
  492. if (!m_bOpen) return FALSE;
  493. vector<TblTookOrderInfo> *pOrderInfo = (vector<TblTookOrderInfo> *)(lpTookOrderInfo);
  494. CTblTookOrder rsSt;
  495. rsSt.m_pDatabase = m_pdbInstance;
  496. rsSt.m_strFilter = _T("status3='OK' and time5 is not null and time5<>''");
  497. rsSt.Open();
  498. while (!rsSt.IsEOF())
  499. {
  500. TblTookOrderInfo tagToolOrderInfo;
  501. tagToolOrderInfo.strOrder = rsSt.m_strOrder;
  502. tagToolOrderInfo.strTookDate = rsSt.m_strTookDate;
  503. pOrderInfo->push_back(tagToolOrderInfo);
  504. rsSt.MoveNext();
  505. }
  506. rsSt.Close();
  507. }
  508. catch (CDBException *e)
  509. {
  510. printf("CODBCConnect::GetTookOrderInfo %s\n",e->m_strError);
  511. SolveDBError(e->m_nRetCode,e->m_strError);
  512. e->Delete();
  513. return FALSE;
  514. }
  515. return TRUE;
  516. }