GuiADODB.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:26k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------//
  2. // This is a part of the GuiLib MFC Extention.  //
  3. // Autor  :  Francisco Campos  //
  4. // (C) 2002 Francisco Campos <www.beyondata.com> All rights reserved     //
  5. // This code is provided "as is", with absolutely no warranty expressed  //
  6. // or implied. Any use is at your own risk.  //
  7. // You must obtain the author's consent before you can include this code //
  8. // in a software library.  //
  9. // If the source code in  this file is used in any application  //
  10. // then acknowledgement must be made to the author of this program  //
  11. // fcampos@tutopia.com  //
  12. //-----------------------------------------------------------------------//
  13. #include "stdafx.h"
  14. #include "..headerguiadodb.h"
  15. //---------------------------------------------------------------------------------------
  16. CString GetError(_com_error &e)
  17. {
  18. CString MsgBug;
  19. _bstr_t Source(e.Source());
  20. _bstr_t Description(e.Description());
  21. MsgBug.Format( "Ups!!! nSource = %snDescription= %sn",(LPCSTR)Source, (LPCSTR)Description );
  22. #ifdef _DEBUG
  23. AfxMessageBox( MsgBug, MB_OK | MB_ICONERROR );
  24. #endif
  25. return MsgBug;
  26. }
  27. CString GetTypeVar(_variant_t vt)
  28. {
  29. switch(vt.vt)
  30. {
  31. case VT_EMPTY :
  32. return _T("VT_EMPTY");
  33. break;
  34. case   VT_NULL :
  35. return _T("VT_NULL");
  36. break;
  37. case VT_I2:
  38. return _T("int");
  39. break;
  40. case VT_I4 :
  41. return _T("long");
  42. break;
  43. case  VT_R4 :
  44. return _T("float");
  45. break;
  46. case VT_R8 :
  47. return _T("double");
  48. break;
  49. case VT_CY :
  50. return _T("currency");
  51. break;
  52. case VT_DATE:
  53. return _T("date");
  54. break;
  55. case  VT_BSTR :
  56. return _T("string");
  57. break;
  58. case VT_DISPATCH :
  59. return _T("dispatch");
  60. break;
  61. case  VT_ERROR :
  62. return _T("error");
  63. break;
  64. case VT_BOOL :
  65. return _T("bool");
  66. break;
  67. case VT_VARIANT :
  68. return _T("variant");
  69. break;
  70. case VT_UNKNOWN :
  71. return _T("unknown");
  72. break;
  73. case   VT_DECIMAL :
  74. return _T("decimal");
  75. break;
  76. default:
  77. return _T("");
  78. }
  79. }
  80. CGuiConnection::CGuiConnection(void)
  81. {
  82. ::CoInitialize(NULL);
  83. m_pConn.CreateInstance(__uuidof(Connection));
  84. }
  85. CGuiConnection::~CGuiConnection(void)
  86. {
  87. if (IsConnect())
  88. Close();
  89. m_pConn.Release();
  90. m_pConn = NULL;
  91. }
  92. BOOL CGuiConnection::Open(LPCTSTR ConnectionString,LPCTSTR UID,LPCTSTR PWD,long Options)
  93. {
  94.  HRESULT re;
  95.  try
  96. {
  97. re = m_pConn->Open(_bstr_t(ConnectionString), _bstr_t(UID), _bstr_t(PWD), NULL);
  98. return re == S_OK;
  99. }
  100. catch(_com_error &e)
  101. {
  102. GetError(e);
  103. return FALSE;
  104. }
  105.  
  106. }
  107. BOOL CGuiConnection::IsConnect()
  108. {
  109. return (BOOL) m_pConn->GetState() != adStateClosed;
  110. }
  111. CGuiRecordSet* CGuiConnection::Execute(LPCTSTR CommandText,long Options)
  112. {
  113. CGuiRecordSet* m_rs= new CGuiRecordSet();
  114. try{
  115. m_rs->Open(m_pConn,CommandText,adOpenUnspecified,adLockUnspecified, Options);
  116. }catch(_com_error &e)
  117. {
  118. GetError(e);
  119. return NULL;
  120. }
  121. return m_rs;
  122. }
  123. long CGuiConnection::BeginTrans()
  124. {
  125. return m_pConn->BeginTrans();
  126. }
  127. void CGuiConnection::RollbackTrans()
  128. {
  129. m_pConn->RollbackTrans();
  130. }
  131. void CGuiConnection::CommitTrans()
  132. {
  133. m_pConn->CommitTrans();
  134. }
  135. void CGuiConnection::Cancel()
  136. {
  137. m_pConn->Cancel();
  138. }
  139. void CGuiConnection::Close()
  140. {
  141. m_pConn->Close();
  142. }
  143. void CGuiConnection::SetConnectionTimeout(long ConnectionTimeout)
  144. {
  145. m_pConn->ConnectionTimeout=ConnectionTimeout;
  146. }
  147. void CGuiConnection::SetConectionString( LPCTSTR ConnectionString)
  148. {
  149. m_pConn->ConnectionString=ConnectionString;
  150. }
  151. long CGuiConnection::GetConnectionTimeout()
  152. {
  153. return m_pConn->ConnectionTimeout;
  154. }
  155. LPCTSTR CGuiConnection::GetConectionString()
  156. {
  157. return m_pConn->ConnectionString;
  158. }
  159. //***********************************************************************************************
  160. CGuiRecordSet::CGuiRecordSet(void)
  161. {
  162. ::CoInitialize(NULL);
  163. m_rs.CreateInstance(__uuidof(Recordset));
  164. m_Criteria=_T("");
  165. }
  166. CGuiRecordSet::~CGuiRecordSet(void)
  167. {
  168. Close();
  169. if (m_rs) m_rs->Release();
  170. m_rs=NULL;
  171. }
  172. void CGuiRecordSet::Attach(_RecordsetPtr m_prs ) { m_rs=m_prs; } BOOL CGuiRecordSet::Open(_ConnectionPtr ActiveConnection,LPCTSTR Source, CursorTypeEnum CursorType,ADOCG::LockTypeEnum LockType, long Options) { try
  173. {
  174. m_rs->Open(Source, _variant_t((IDispatch*)ActiveConnection, TRUE), 
  175. adOpenStatic, LockType, Options);
  176. }
  177. catch(_com_error &e)
  178. {
  179. GetError(e);
  180. return FALSE;
  181. }
  182. return TRUE; }
  183. BOOL CGuiRecordSet::FindFirst(LPCTSTR Criteria)
  184. {
  185. MoveFirst();
  186.     return Find(Criteria,0,adSearchForward,"");
  187. }
  188. void CGuiRecordSet::Move(long NumRecords , _variant_t Start) { m_rs->Move(NumRecords,vtMissing); }
  189. BOOL CGuiRecordSet::FindNext()
  190. {
  191. return Find(m_Criteria,1,adSearchForward,vtPointer);
  192. }
  193. BOOL CGuiRecordSet::Find(LPCTSTR Criteria , long SkipRecords ,   SearchDirectionEnum SearchDirection,_variant_t Start) { CString szCri=Criteria; if (!szCri.IsEmpty()) m_Criteria=Criteria; else return FALSE; try{ m_rs->Find(_bstr_t(Criteria),SkipRecords,SearchDirection,Start); if (SearchDirection ==adSearchForward) { if (!IsEof()) { vtPointer= m_rs->Bookmark; return TRUE; } }else if (SearchDirection ==adSearchBackward) { if (!IsBof()) { vtPointer= m_rs->Bookmark; return TRUE; } }else return FALSE; }catch(_com_error &e)
  194. {
  195. GetError(e);
  196. return FALSE;
  197. } return FALSE; }
  198. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,CString szCad)
  199. {
  200. _variant_t vt;
  201. if(!szCad.IsEmpty())
  202. {
  203. vt.vt = VT_BSTR;
  204. vt.bstrVal = szCad.AllocSysString();
  205. }
  206. return SetFieldValue(lpName, vt);
  207. }
  208. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,long lVal)
  209. {
  210. _variant_t vt;
  211. vt.lVal=lVal;
  212. vt.vt=VT_I4;
  213. return SetFieldValue(lpName, vt);
  214. }
  215. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,unsigned char usVal)
  216. {
  217. _variant_t vt;
  218. vt.bVal=usVal;
  219. vt.vt=VT_UI1;
  220. return SetFieldValue(lpName, vt);
  221. }
  222. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,short shVal)
  223. {
  224. _variant_t vt;
  225. vt.iVal=shVal;
  226. vt.vt=VT_I2;
  227. return SetFieldValue(lpName, vt);
  228. }
  229. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,float flVal)
  230. {
  231. _variant_t vt;
  232. vt.fltVal=flVal;
  233. vt.vt=VT_R4;
  234. return SetFieldValue(lpName, vt);
  235. }
  236. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,double dblVal)
  237. {
  238. _variant_t vt;
  239. vt.dblVal=dblVal;
  240. vt.vt=VT_R8;
  241. return SetFieldValue(lpName, vt);
  242. }
  243. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,BOOL blVal)
  244. {
  245. _variant_t vt;
  246. vt.boolVal=blVal;
  247. vt.vt=VT_BOOL;
  248. return SetFieldValue(lpName, vt);
  249. }
  250. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,COleDateTime dtVal)
  251. {
  252. _variant_t vt;
  253. vt.date=dtVal;
  254. vt.vt=VT_DATE;
  255. return SetFieldValue(lpName, vt);
  256. }
  257. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName,unsigned long ulVal)
  258. {
  259. _variant_t vt;
  260. vt.vt = VT_UI4;
  261. vt.ulVal = ulVal;
  262. return SetFieldValue(lpName, vt);
  263. }
  264. BOOL CGuiRecordSet::SetValue(LPCTSTR lpName, COleCurrency cuVal)
  265. {
  266. _variant_t vt;
  267. vt.vt = VT_CY;
  268. vt.cyVal = cuVal.m_cur;
  269. if(cuVal.m_status == COleCurrency::invalid)
  270. return FALSE;
  271. return SetFieldValue(lpName, vt);
  272. }
  273. BOOL CGuiRecordSet::SetFieldValue(LPCTSTR lpName, _variant_t vtField)
  274. {
  275. try
  276. {
  277. m_rs->Fields->GetItem(lpName)->Value = vtField; 
  278. return TRUE;
  279. }
  280. catch(_com_error &e)
  281. {
  282. GetError(e);
  283. return FALSE;
  284. }
  285. }
  286. CString CGuiRecordSet::GetCollect(LPCTSTR lpField)
  287. {
  288. try{
  289. _variant_t vt = m_rs->Fields->GetItem(lpField)->Value;
  290.  return (CString) vt.bstrVal;
  291. }
  292. catch(_com_error &e)
  293. {
  294. GetError(e);
  295. return _T("");
  296. }
  297.  
  298. }
  299. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,int& nValue)
  300. {
  301. _variant_t vt;
  302. try
  303. {
  304. vt = m_rs->Fields->GetItem(lpField)->Value;
  305. if (vt.vt==VT_I2)
  306. {
  307. nValue=vt.intVal;
  308. return TRUE;
  309. }else if (vt.vt==VT_BOOL)
  310. {
  311. nValue=vt.boolVal;
  312. return TRUE;
  313. }else return FALSE;
  314. }catch(_com_error &e)
  315. {
  316. GetError(e);
  317. return FALSE;
  318. }
  319. }
  320. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,long& lVal)
  321. {
  322. _variant_t vt;
  323. try
  324. {
  325. vt = m_rs->Fields->GetItem(lpField)->Value;
  326. if (vt.vt==VT_I4)
  327. {
  328. lVal=vt.lVal;
  329. return TRUE;
  330. }else return FALSE;
  331. }catch(_com_error &e)
  332. {
  333. GetError(e);
  334. return FALSE;
  335. }
  336. }
  337. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,double& dbVal)
  338. {
  339. _variant_t vt;
  340. try
  341. {
  342. vt = m_rs->Fields->GetItem(lpField)->Value;
  343. if (vt.vt==VT_R8)
  344. {
  345. dbVal=vt.dblVal;
  346. return TRUE;
  347. }else return FALSE;
  348. }catch(_com_error &e)
  349. {
  350. GetError(e);
  351. return FALSE;
  352. }
  353. }
  354. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,CString& strValue)
  355. {
  356. _variant_t vt;
  357. try
  358. {
  359. vt = m_rs->Fields->GetItem(lpField)->Value;
  360. if (vt.vt==VT_BSTR)
  361. {
  362. strValue=vt.bstrVal;
  363. return TRUE;
  364. }else return FALSE;
  365. }catch(_com_error &e)
  366. {
  367. GetError(e);
  368. return FALSE;
  369. }
  370. }
  371. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,COleCurrency& cyVal)
  372. {
  373. _variant_t vt;
  374. vt = m_rs->Fields->GetItem(lpField)->Value;
  375. try
  376. {
  377. if (vt.vt==VT_CY)
  378. {
  379. cyVal.m_cur=vt.cyVal;
  380. return TRUE;
  381. }else return FALSE;
  382. }catch(_com_error &e)
  383. {
  384. GetError(e);
  385. return FALSE;
  386. }
  387. }
  388. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,COleDateTime& dtVal)
  389. {
  390. _variant_t vt;
  391. try
  392. {
  393. vt = m_rs->Fields->GetItem(lpField)->Value;
  394. if (vt.vt==VT_DATE)
  395. {
  396. dtVal=vt.date;
  397. return TRUE;
  398. }else return FALSE;
  399. }catch(_com_error &e)
  400. {
  401. GetError(e);
  402. return FALSE;
  403. }
  404. }
  405. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,float& flVal)
  406. {
  407. _variant_t vt;
  408. try
  409. {
  410. vt = m_rs->Fields->GetItem(lpField)->Value;
  411. if (vt.vt==VT_R4)
  412. {
  413. flVal=vt.fltVal;
  414. return TRUE;
  415. }else return FALSE;
  416. }catch(_com_error &e)
  417. {
  418. GetError(e);
  419. return FALSE;
  420. }
  421. }
  422. BOOL CGuiRecordSet::GetCollect(LPCTSTR lpField,_variant_t& vt)
  423. {
  424. try
  425. {
  426. vt = m_rs->Fields->GetItem(lpField)->Value;
  427. return TRUE;
  428. }
  429. catch(_com_error& e)
  430. {
  431. GetError(e);
  432. return FALSE;
  433. }
  434. }
  435. BOOL CGuiRecordSet::GetCollect(int nIndex,int& nValue)
  436. {
  437. _variant_t vt;
  438. _variant_t vtn;
  439. vtn.vt = VT_I2;
  440. try
  441. {
  442. vtn.iVal = nIndex;
  443. vt = m_rs->Fields->GetItem(vtn)->Value;
  444. if (vt.vt==VT_I2)
  445. {
  446. nValue=vt.intVal;
  447. return TRUE;
  448. }else return FALSE;
  449. }catch(_com_error &e)
  450. {
  451. GetError(e);
  452. return FALSE;
  453. }
  454. }
  455. BOOL CGuiRecordSet::GetCollect(int nIndex,long& lVal)
  456. {
  457. _variant_t vt;
  458. _variant_t vtn;
  459. vtn.vt = VT_I2;
  460. try
  461. {
  462. vtn.iVal = nIndex;
  463. vt = m_rs->Fields->GetItem(vtn)->Value;
  464. if (vt.vt==VT_I4)
  465. {
  466. lVal=vt.lVal;
  467. return TRUE;
  468. }else return FALSE;
  469. }catch(_com_error &e)
  470. {
  471. GetError(e);
  472. return FALSE;
  473. }
  474. }
  475. BOOL CGuiRecordSet::GetCollect(int nIndex,double& dbVal)
  476. {
  477. _variant_t vt;
  478. _variant_t vtn;
  479. vtn.vt = VT_I2;
  480. try
  481. {
  482. vtn.iVal = nIndex;
  483. vt = m_rs->Fields->GetItem(vtn)->Value;
  484. if (vt.vt==VT_R8)
  485. {
  486. dbVal=vt.dblVal;
  487. return TRUE;
  488. }else return FALSE;
  489. }catch(_com_error &e)
  490. {
  491. GetError(e);
  492. return FALSE;
  493. }
  494. }
  495. BOOL CGuiRecordSet::GetCollect(int nIndex,CString& strValue)
  496. {
  497. _variant_t vt;
  498. _variant_t vtn;
  499. vtn.vt = VT_I2;
  500. try
  501. {
  502. vtn.iVal = nIndex;
  503. vt = m_rs->Fields->GetItem(vtn)->Value;
  504. if (vt.vt==VT_BSTR)
  505. {
  506. strValue=vt.bstrVal;
  507. return TRUE;
  508. }else return FALSE;
  509. }catch(_com_error &e)
  510. {
  511. GetError(e);
  512. return FALSE;
  513. }
  514. }
  515. BOOL CGuiRecordSet::GetCollect(int nIndex,COleCurrency& cyVal)
  516. {
  517. _variant_t vt;
  518. _variant_t vtn;
  519. vtn.vt = VT_CY;
  520. try
  521. {
  522. vtn.iVal =nIndex;
  523. vt = m_rs->Fields->GetItem(vtn)->Value;
  524. if (vt.vt==VT_CY)
  525. {
  526. cyVal.m_cur=vt.cyVal;
  527. return TRUE;
  528. }else return FALSE;
  529. }catch(_com_error &e)
  530. {
  531. GetError(e);
  532. return FALSE;
  533. }
  534. }
  535. BOOL CGuiRecordSet::GetCollect(int nIndex,COleDateTime& dtVal)
  536. {
  537. _variant_t vt;
  538. _variant_t vtn;
  539. vtn.vt = VT_I2;
  540. try
  541. {
  542. vtn.iVal = nIndex;
  543. vt = m_rs->Fields->GetItem(vtn)->Value;
  544. if (vt.vt==VT_DATE)
  545. {
  546. dtVal=vt.date;
  547. return TRUE;
  548. }else return FALSE;
  549. }catch(_com_error &e)
  550. {
  551. GetError(e);
  552. return FALSE;
  553. }
  554. }
  555. BOOL CGuiRecordSet::GetFormatDate(LPCTSTR lpField,CString& m_szDate, CString Format)
  556. {
  557. COleDateTime time;
  558. if (!GetCollect(lpField,time)) return FALSE;
  559. CTime ct(time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond()); 
  560. m_szDate =ct.Format(Format);
  561. return TRUE;
  562. }
  563. BOOL CGuiRecordSet::GetFormatDate(int nIndex,CString& m_szDate, CString Format)
  564. {
  565. COleDateTime time;
  566. if (!GetCollect(nIndex,time)) return FALSE;
  567. CTime ct(time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond()); 
  568. m_szDate =ct.Format(Format);
  569. return TRUE;
  570. }
  571. BOOL CGuiRecordSet::GetCollect(int nIndex,float& flVal)
  572. {
  573. _variant_t vt;
  574. _variant_t vtn;
  575. vtn.vt = VT_I2;
  576. try
  577. {
  578. vtn.iVal = nIndex;
  579. vt = m_rs->Fields->GetItem(vtn)->Value;
  580. if (vt.vt==VT_R4)
  581. {
  582. flVal=vt.fltVal;
  583. return TRUE;
  584. }else return FALSE;
  585. }catch(_com_error &e)
  586. {
  587. GetError(e);
  588. return FALSE;
  589. }
  590. }
  591. BOOL CGuiRecordSet::GetCollect(int nIndex,_variant_t& vt)
  592. {
  593. _variant_t vtn;
  594. vtn.vt = VT_I2;
  595. try
  596. {
  597. vtn.iVal = nIndex;
  598. vt = m_rs->Fields->GetItem(vtn)->Value;
  599. return TRUE;
  600. }
  601. catch(_com_error& e)
  602. {
  603. GetError(e);
  604. return FALSE;
  605. }
  606. }
  607. BOOL CGuiRecordSet::SetFilter(LPCTSTR lpFilter)
  608. {
  609. if (!IsOpen()) return FALSE;
  610. try
  611. {
  612. m_rs->PutFilter(lpFilter);
  613. return TRUE;
  614. }
  615. catch(_com_error &e)
  616. {
  617. GetError(e);
  618. return FALSE;
  619. }
  620. }
  621. BOOL CGuiRecordSet::SetSort(LPCTSTR lpSort)
  622. {
  623. if (!IsOpen()) return FALSE;
  624. try
  625. {
  626. m_rs->PutSort(lpSort);
  627. return TRUE;
  628. }
  629. catch(_com_error &e)
  630. {
  631. GetError(e);
  632. return FALSE;
  633. }
  634. }
  635. BOOL CGuiRecordSet::IsOpen()
  636. {
  637. if(m_rs)
  638. return m_rs-> GetState() != adStateClosed;
  639. return FALSE;
  640. }
  641. void CGuiRecordSet::Close()
  642. {
  643. if(IsOpen())
  644. m_rs->Close();
  645. }
  646. void CGuiRecordSet::MoveFirst()
  647. {
  648. m_rs->MoveFirst();
  649. }
  650. void CGuiRecordSet::MoveLast()
  651. {
  652. m_rs->MoveLast();
  653. }
  654. void CGuiRecordSet::MoveNext()
  655. {
  656. m_rs->MoveNext();
  657. }
  658. void CGuiRecordSet::MovePrevious()
  659. {
  660. m_rs->MovePrevious();
  661. }
  662. void CGuiRecordSet::Cancel()
  663. {
  664.    m_rs->Cancel();
  665. }
  666. void CGuiRecordSet::CancelUpdate()
  667. {
  668.   m_rs->CancelUpdate();
  669. }
  670. BOOL CGuiRecordSet::Delete()
  671. {
  672. try{
  673. if(m_rs->Delete(adAffectCurrent)== S_OK)
  674. if(m_rs->Update() ==S_OK)
  675. return TRUE;
  676. }catch(_com_error &e)
  677. {
  678. GetError(e);
  679. return FALSE;
  680. }
  681. return FALSE;
  682. }
  683. BOOL CGuiRecordSet::IsEof()
  684. {
  685. return (BOOL)m_rs->EndOfFile;
  686. }
  687. BOOL CGuiRecordSet::IsBof()
  688. {
  689. return (BOOL)m_rs->BOF;
  690. }
  691. BOOL CGuiRecordSet::Supports( CursorOptionEnum CursorOptions )  {   return (BOOL)m_rs->Supports(CursorOptions); }
  692. void CGuiRecordSet::CancelBatch(AffectEnum AffectRecords) {   m_rs->CancelBatch(AffectRecords); } CGuiField CGuiRecordSet::GetField(LPCTSTR lpField)
  693. {
  694. FieldPtr pField = m_rs->Fields->GetItem(lpField);
  695. CGuiField Field;
  696. Field.Attach(pField);
  697. return Field;
  698. }
  699. CGuiField CGuiRecordSet::GetField(int Index) { _variant_t vtIndex;
  700. vtIndex.vt = VT_I2;
  701. vtIndex.iVal = Index;
  702. FieldPtr pField = m_rs->Fields->GetItem(vtIndex); CGuiField Field;
  703. Field.Attach(pField);
  704. return Field; } CGuiRecordSet*  CGuiRecordSet::Clone(ADOCG::LockTypeEnum LockType) { _RecordsetPtr m_rs1=m_rs->Clone(LockType); CGuiRecordSet* m_pRs= new CGuiRecordSet(); m_pRs->Attach(m_rs1); return m_pRs;  } CGuiRecordSet* CGuiRecordSet::NextRecordset(long RecordsAffected)  { _RecordsetPtr m_rs1=m_rs->NextRecordset((VARIANT*)RecordsAffected); CGuiRecordSet* m_pRs= new CGuiRecordSet(); m_pRs->Attach(m_rs1); return m_pRs;  }
  705. //***********************************************************************************************************
  706. CGuiField::CGuiField(void)
  707. {
  708. }
  709. CGuiField::~CGuiField(void)
  710. {
  711. }
  712. BOOL CGuiField::SetValue(long lVal)
  713. {
  714. _variant_t vt;
  715. vt.lVal=lVal;
  716. vt.vt=VT_I4;
  717. try
  718. {
  719. field->Value=vt;
  720. return TRUE;
  721. }catch(_com_error &e)
  722. {
  723. GetError(e);
  724. return FALSE;
  725. }
  726. }
  727. BOOL CGuiField::SetValue(float flVal)
  728. {
  729. _variant_t vt;
  730. vt.fltVal=flVal;
  731. vt.vt=VT_R4;
  732. try
  733. {
  734. field->Value=vt;
  735. return TRUE;
  736. }catch(_com_error &e)
  737. {
  738. GetError(e);
  739. return FALSE;
  740. }
  741. }
  742. BOOL CGuiField::SetValue(int nVal)
  743. {
  744. _variant_t vt;
  745. vt.intVal=nVal;
  746. vt.vt=VT_I2;
  747. try
  748. {
  749. field->Value=vt;
  750. return TRUE;
  751. }catch(_com_error &e)
  752. {
  753. GetError(e);
  754. return FALSE;
  755. }
  756. }
  757. BOOL CGuiField::SetValue(double dbVal)
  758. {
  759. _variant_t vt;
  760. vt.dblVal=dbVal;
  761. vt.vt=VT_R8;
  762. try
  763. {
  764. field->Value=vt;
  765. return TRUE;
  766. }catch(_com_error &e)
  767. {
  768. GetError(e);
  769. return FALSE;
  770. }
  771. }
  772. BOOL CGuiField::SetValue(CString szCad)
  773. {
  774. _variant_t vt;
  775. if(!szCad.IsEmpty())
  776. {
  777. vt.vt = VT_BSTR;
  778. vt.bstrVal = szCad.AllocSysString();
  779. }
  780. try
  781. {
  782. field->Value=vt;
  783. return TRUE;
  784. }catch(_com_error &e)
  785. {
  786. GetError(e);
  787. return FALSE;
  788. }
  789. }
  790. BOOL CGuiField::SetValue(bool blVal)
  791. {
  792. _variant_t vt;
  793. vt.boolVal=blVal;
  794. vt.vt=VT_BOOL;
  795. try
  796. {
  797. field->Value=vt;
  798. return TRUE;
  799. }catch(_com_error &e)
  800. {
  801. GetError(e);
  802. return FALSE;
  803. }
  804. }
  805. BOOL CGuiField::SetValue(COleDateTime dtVal)
  806. {
  807. _variant_t vt;
  808. vt.date=dtVal;
  809. vt.vt=VT_DATE;
  810. try
  811. {
  812. field->Value=vt;
  813. return TRUE;
  814. }catch(_com_error &e)
  815. {
  816. GetError(e);
  817. return FALSE;
  818. }
  819. }
  820. BOOL CGuiField::SetValue(_variant_t vt)
  821. {
  822. try
  823. {
  824. field->Value=vt;
  825. return TRUE;
  826. }catch(_com_error &e)
  827. {
  828. GetError(e);
  829. return FALSE;
  830. }
  831. }
  832. BOOL CGuiField::GetValue(int& nVal)
  833. {
  834. _variant_t vt;
  835. vt = field->Value;
  836. try
  837. {
  838. if (vt.vt==VT_I2)
  839. {
  840. nVal=vt.intVal;
  841. return TRUE;
  842. }else if (vt.vt==VT_BOOL)
  843. {
  844. nVal=vt.boolVal;
  845. return TRUE;
  846. }else return FALSE;
  847. }catch(_com_error &e)
  848. {
  849. GetError(e);
  850. return FALSE;
  851. }
  852. }
  853. BOOL CGuiField::GetValue(long& lVal)
  854. {
  855. _variant_t vt;
  856. vt = field->Value;
  857. try
  858. {
  859. if (vt.vt==VT_I4)
  860. {
  861. lVal=vt.lVal;
  862. return TRUE;
  863. }else return FALSE;
  864. }catch(_com_error &e)
  865. {
  866. GetError(e);
  867. return FALSE;
  868. }
  869. }
  870. BOOL CGuiField::GetValue(double& dbVal)
  871. {
  872. _variant_t vt;
  873. vt = field->Value;
  874. try
  875. {
  876. if (vt.vt==VT_R8)
  877. {
  878. dbVal=vt.dblVal;
  879. return TRUE;
  880. }else return FALSE;
  881. }catch(_com_error &e)
  882. {
  883. GetError(e);
  884. return FALSE;
  885. }
  886. }
  887. BOOL CGuiField::GetValue(CString& strValue)
  888. {
  889. _variant_t vt;
  890. vt =field->Value;
  891. try
  892. {
  893. if (vt.vt==VT_BSTR)
  894. {
  895. strValue=vt.bstrVal;
  896. return TRUE;
  897. }else return FALSE;
  898. }catch(_com_error &e)
  899. {
  900. GetError(e);
  901. return FALSE;
  902. }
  903. }
  904. BOOL CGuiField::GetValue(COleDateTime& dtVal)
  905. {
  906. _variant_t vt;
  907. vt = field->Value;
  908. try
  909. {
  910. if (vt.vt==VT_DATE)
  911. {
  912. dtVal=vt.date;
  913. return TRUE;
  914. }else return FALSE;
  915. }catch(_com_error &e)
  916. {
  917. GetError(e);
  918. return FALSE;
  919. }
  920. }
  921. BOOL CGuiField::GetValue(float& flVal)
  922. {
  923. _variant_t vt;
  924. vt = field->Value;
  925. try
  926. {
  927. if (vt.vt==VT_R4)
  928. {
  929. flVal=vt.fltVal;
  930. return TRUE;
  931. }else return FALSE;
  932. }catch(_com_error &e)
  933. {
  934. GetError(e);
  935. return FALSE;
  936. }
  937. }
  938. BOOL CGuiField::GetValue(_variant_t& vt)
  939. {
  940. try
  941. {
  942. _variant_t vt = field->Value;
  943. return TRUE;
  944. }
  945. catch(_com_error& e)
  946. {
  947. GetError(e);
  948. return FALSE;
  949. }
  950. }
  951. //***********************************************************************************************************
  952. CGuiParameter::CGuiParameter()
  953. {
  954. ::CoInitialize(NULL);
  955. pParam.CreateInstance(__uuidof(Parameter));
  956. }
  957. CGuiParameter::~CGuiParameter()
  958. {
  959. pParam->Release();
  960. pParam=NULL;
  961. }
  962. void CGuiParameter::SetAttributes(long Attributes)
  963. {
  964. pParam->PutAttributes(Attributes);
  965. }
  966. void CGuiParameter::SetDirection(ADOCG::ParameterDirectionEnum Direction)
  967. {
  968. pParam->PutDirection(Direction);
  969. }
  970. void CGuiParameter::SetName(LPCTSTR szName)
  971. {
  972. CString mszname=szName;
  973. pParam->Name=mszname.AllocSysString();
  974. }
  975. void CGuiParameter::SetNumericScale(unsigned char NumericScale)
  976. {
  977. pParam->PutNumericScale(NumericScale);
  978. }
  979. void CGuiParameter::SetPrecision(unsigned char Precision)
  980. {
  981. pParam->PutPrecision(Precision);
  982. }
  983. void CGuiParameter::SetSize(long Size)
  984. {
  985. pParam->PutSize(Size);
  986. }
  987. void CGuiParameter::SetType(ADOCG::DataTypeEnum Type)
  988. {
  989. pParam->PutType(Type);
  990. }
  991. BOOL CGuiParameter::SetValue(long lVal)
  992. {
  993. _variant_t vt;
  994. vt.lVal=lVal;
  995. vt.vt=VT_I4;
  996. try
  997. {
  998. pParam->Value=vt;
  999. return TRUE;
  1000. }catch(_com_error &e)
  1001. {
  1002. GetError(e);
  1003. return FALSE;
  1004. }
  1005. }
  1006. BOOL CGuiParameter::SetValue(float flVal)
  1007. {
  1008. _variant_t vt;
  1009. vt.fltVal=flVal;
  1010. vt.vt=VT_R4;
  1011. try
  1012. {
  1013. pParam->Value=vt;
  1014. return TRUE;
  1015. }catch(_com_error &e)
  1016. {
  1017. GetError(e);
  1018. return FALSE;
  1019. }
  1020. }
  1021. BOOL CGuiParameter::SetValue(int nVal)
  1022. {
  1023. _variant_t vt;
  1024. vt.intVal=nVal;
  1025. vt.vt=VT_I2;
  1026. try
  1027. {
  1028. pParam->Value=vt;
  1029. return TRUE;
  1030. }catch(_com_error &e)
  1031. {
  1032. GetError(e);
  1033. return FALSE;
  1034. }
  1035. }
  1036. BOOL CGuiParameter::SetValue(double dbVal)
  1037. {
  1038. _variant_t vt;
  1039. vt.dblVal=dbVal;
  1040. vt.vt=VT_R8;
  1041. try
  1042. {
  1043. pParam->Value=vt;
  1044. return TRUE;
  1045. }catch(_com_error &e)
  1046. {
  1047. GetError(e);
  1048. return FALSE;
  1049. }
  1050. }
  1051. BOOL CGuiParameter::SetValue(CString szCad)
  1052. {
  1053. _variant_t vt;
  1054. if(!szCad.IsEmpty())
  1055. {
  1056. vt.vt = VT_BSTR;
  1057. vt.bstrVal = szCad.AllocSysString();
  1058. }
  1059. try
  1060. {
  1061. pParam->Value=vt;
  1062. return TRUE;
  1063. }catch(_com_error &e)
  1064. {
  1065. GetError(e);
  1066. return FALSE;
  1067. }
  1068. }
  1069. BOOL CGuiParameter::SetValue(bool blVal)
  1070. {
  1071. _variant_t vt;
  1072. vt.boolVal=blVal;
  1073. vt.vt=VT_BOOL;
  1074. try
  1075. {
  1076. pParam->Value=vt;
  1077. return TRUE;
  1078. }catch(_com_error &e)
  1079. {
  1080. GetError(e);
  1081. return FALSE;
  1082. }
  1083. }
  1084. BOOL CGuiParameter::SetValue(COleDateTime dtVal)
  1085. {
  1086. _variant_t vt;
  1087. vt.date=dtVal;
  1088. vt.vt=VT_DATE;
  1089. try
  1090. {
  1091. pParam->Value=vt;
  1092. return TRUE;
  1093. }catch(_com_error &e)
  1094. {
  1095. GetError(e);
  1096. return FALSE;
  1097. }
  1098. }
  1099. BOOL CGuiParameter::SetValue(_variant_t vt)
  1100. {
  1101. try
  1102. {
  1103. pParam->Value=vt;
  1104. return TRUE;
  1105. }catch(_com_error &e)
  1106. {
  1107. GetError(e);
  1108. return FALSE;
  1109. }
  1110. }
  1111. BOOL CGuiParameter::GetValue(int& nVal)
  1112. {
  1113. _variant_t vt;
  1114. vt = pParam->Value;
  1115. try
  1116. {
  1117. if (vt.vt==VT_I2)
  1118. {
  1119. nVal=vt.intVal;
  1120. return TRUE;
  1121. }else if (vt.vt==VT_BOOL)
  1122. {
  1123. nVal=vt.boolVal;
  1124. return TRUE;
  1125. }else return FALSE;
  1126. }catch(_com_error &e)
  1127. {
  1128. GetError(e);
  1129. return FALSE;
  1130. }
  1131. }
  1132. BOOL CGuiParameter::GetValue(long& lVal)
  1133. {
  1134. _variant_t vt;
  1135. vt = pParam->Value;
  1136. try
  1137. {
  1138. if (vt.vt==VT_I4)
  1139. {
  1140. lVal=vt.lVal;
  1141. return TRUE;
  1142. }if (vt.vt==VT_BSTR)
  1143. {
  1144. CString cad=vt.bstrVal;
  1145. lVal=atol(cad);
  1146. return TRUE;
  1147. }
  1148. else return FALSE;
  1149. }catch(_com_error &e)
  1150. {
  1151. GetError(e);
  1152. return FALSE;
  1153. }
  1154. }
  1155. BOOL CGuiParameter::SetValue(COleCurrency cyVal)
  1156. {
  1157. _variant_t vt;
  1158. vt.cyVal=cyVal.m_cur;
  1159. vt.vt=VT_CY;
  1160. try
  1161. {
  1162. pParam->Value=vt;
  1163. return TRUE;
  1164. }catch(_com_error &e)
  1165. {
  1166. GetError(e);
  1167. return FALSE;
  1168. }
  1169. }
  1170. BOOL CGuiParameter::GetValue(double& dbVal)
  1171. {
  1172. _variant_t vt;
  1173. vt = pParam->Value;
  1174. try
  1175. {
  1176. if (vt.vt==VT_R8)
  1177. {
  1178. dbVal=vt.dblVal;
  1179. return TRUE;
  1180. }else return FALSE;
  1181. }catch(_com_error &e)
  1182. {
  1183. GetError(e);
  1184. return FALSE;
  1185. }
  1186. }
  1187. BOOL CGuiParameter::GetValue(CString& strValue)
  1188. {
  1189. _variant_t vt;
  1190. vt =pParam->Value;
  1191. try
  1192. {
  1193. if (vt.vt==VT_BSTR)
  1194. {
  1195. strValue=vt.bstrVal;
  1196. return TRUE;
  1197. }else return FALSE;
  1198. }catch(_com_error &e)
  1199. {
  1200. GetError(e);
  1201. return FALSE;
  1202. }
  1203. }
  1204. BOOL CGuiParameter::GetValue(COleDateTime& dtVal)
  1205. {
  1206. _variant_t vt;
  1207. vt = pParam->Value;
  1208. try
  1209. {
  1210. if (vt.vt==VT_DATE)
  1211. {
  1212. dtVal=vt.date;
  1213. return TRUE;
  1214. }else return FALSE;
  1215. }catch(_com_error &e)
  1216. {
  1217. GetError(e);
  1218. return FALSE;
  1219. }
  1220. }
  1221. BOOL CGuiParameter::GetValue(COleCurrency& cyVal)
  1222. {
  1223. _variant_t vt;
  1224. vt = pParam->Value;
  1225. try
  1226. {
  1227. if (vt.vt==VT_CY)
  1228. {
  1229. cyVal.m_cur=vt.cyVal;
  1230. return TRUE;
  1231. }else return FALSE;
  1232. }catch(_com_error &e)
  1233. {
  1234. GetError(e);
  1235. return FALSE;
  1236. }
  1237. }
  1238. BOOL CGuiParameter::GetFormatDate(CString& m_szDate, CString Format)
  1239. {
  1240. COleDateTime time;
  1241. if (!GetValue(time)) return FALSE;
  1242. CTime ct(time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond()); 
  1243. m_szDate =ct.Format(Format);
  1244. return TRUE;
  1245. }
  1246. BOOL CGuiParameter::GetValue(float& flVal)
  1247. {
  1248. _variant_t vt;
  1249. vt = pParam->Value;
  1250. try
  1251. {
  1252. if (vt.vt==VT_R4)
  1253. {
  1254. flVal=vt.fltVal;
  1255. return TRUE;
  1256. }else return FALSE;
  1257. }catch(_com_error &e)
  1258. {
  1259. GetError(e);
  1260. return FALSE;
  1261. }
  1262. }
  1263. BOOL CGuiParameter::GetValue(_variant_t& vt)
  1264. {
  1265. try
  1266. {
  1267. _variant_t vt = pParam->Value;
  1268. return TRUE;
  1269. }
  1270. catch(_com_error& e)
  1271. {
  1272. GetError(e);
  1273. return FALSE;
  1274. }
  1275. }
  1276. //----------------------------------------------------------------------------------------------
  1277. CGuiCommand::CGuiCommand()
  1278. {
  1279. ::CoInitialize(NULL);
  1280. pCommand.CreateInstance(__uuidof(Command));
  1281. }
  1282. CGuiCommand::~CGuiCommand()
  1283. {
  1284. Cancel();
  1285. pCommand->Release();
  1286. pCommand=NULL;
  1287. }
  1288. void CGuiCommand::SetActiveConnection(LPCTSTR szconnec)
  1289. {
  1290. m_pCon.Open(szconnec);
  1291. ASSERT( m_pCon.IsConnect());
  1292. SetActiveConnection(&m_pCon);
  1293. }
  1294. void CGuiCommand::SetActiveConnection(CGuiConnection* pCon)
  1295. {
  1296. ASSERT(pCon->IsConnect());
  1297. pCommand->ActiveConnection=pCon->GetConecction();
  1298. }
  1299. void CGuiCommand::Cancel()
  1300. {
  1301. pCommand->Cancel();
  1302. void CGuiCommand::SetCommandText(LPCTSTR lpCommand,CommandTypeEnum cmdType)
  1303. {
  1304. CString szCommand=lpCommand;
  1305. pCommand->CommandText=szCommand.AllocSysString();
  1306. pCommand->PutCommandType(cmdType);
  1307. }
  1308. void CGuiCommand::SetCommandTimeout(long CommandTimeout)
  1309. {
  1310. pCommand->PutCommandTimeout(CommandTimeout);
  1311. }
  1312. void CGuiCommand::SetPrepared(BOOL prepared)
  1313. {
  1314. pCommand->PutPrepared((BOOL) prepared);
  1315. }
  1316. long CGuiCommand::GetState()
  1317. {
  1318. return pCommand->GetState();
  1319. }
  1320. CGuiRecordSet* CGuiCommand::Execute(VARIANT* param1,VARIANT* param2,long Options)
  1321. {
  1322. try
  1323. {
  1324. _RecordsetPtr m_rs = pCommand->Execute(NULL, NULL, Options);
  1325. CGuiRecordSet* m_prs= new CGuiRecordSet();
  1326. m_prs->Attach(m_rs);
  1327. return m_prs;
  1328. }
  1329. catch(_com_error &e)
  1330. {
  1331. GetError(e);
  1332. return NULL;
  1333. }
  1334. }
  1335. CGuiParameter* CGuiCommand::CreateParameter(CString Name ,long Size ,
  1336. ADOCG::DataTypeEnum Type, 
  1337. ADOCG::ParameterDirectionEnum Direction)
  1338. {
  1339. _ParameterPtr param=pCommand->CreateParameter(Name.AllocSysString(), Type,Direction, Size);
  1340. CGuiParameter* pParam=new CGuiParameter();
  1341. pParam->Attach(param);
  1342. return pParam;
  1343. }
  1344. BOOL CGuiCommand::Append(CGuiParameter* pParam)
  1345. {
  1346. try
  1347. {
  1348. pCommand->Parameters->Append(pParam->GetParameter());
  1349. return TRUE;
  1350. }
  1351. catch(_com_error& e)
  1352. {
  1353. GetError(e);
  1354. return FALSE;
  1355. }
  1356. }