GuiADODB.cpp
上传用户:maryhy001
上传日期:2007-05-02
资源大小:2317k
文件大小:28k
源码类别:

网格计算

开发平台:

Visual C++

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