home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / SRCBDTO.PAK / QUERY.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  5.2 KB  |  290 lines

  1. //-----------------------------------------------------------------------------
  2. // Visual Database Tools
  3. // Copyright (c) 1996 by Borland International, All Rights Reserved
  4. //
  5. // query.cpp
  6. // TQuery wrapper class
  7. //-----------------------------------------------------------------------------
  8.  
  9. #include <vdbt\bdto.h>
  10.  
  11. #pragma hdrstop
  12.  
  13. #include "wrapit.h"
  14. #include "misc.h"
  15.  
  16. //-----------------------------------------------------------------------------
  17.  
  18. void TQuery::SetTQuery( PIUnknown p )
  19. {
  20.     query = 0;
  21.     if (p)
  22.         p->QueryInterface( IID_ITQuery, (void**) &query );
  23. }
  24.  
  25. void TQuery::ClearTQuery( void )
  26. {
  27.     if (query)
  28.     {
  29.         query->Release();
  30.         query = 0;
  31.     }
  32. }
  33.  
  34. TQuery::TQuery( void ) : TDBDataSet()
  35. {
  36.     query = CreateITQuery();
  37.     TDBDataSet::SetPIT( query );
  38. }
  39.  
  40. TQuery::TQuery( PITQuery p ) : TDBDataSet( p )
  41. {
  42.     SetTQuery( p );
  43. }
  44.  
  45. TQuery::TQuery( const TQuery& p ) : TDBDataSet( p )
  46. {
  47.     SetTQuery( p.query );
  48. }
  49.  
  50. TQuery::TQuery( PTQuery p ) : TDBDataSet( p )
  51. {
  52.     SetTQuery( p ? p->query : 0 );
  53. }
  54.  
  55. TQuery::TQuery( HWND hdlg, int idc ) : TDBDataSet()
  56. {
  57.     SetTQuery( GetVBXPIUnknown( hdlg, idc ) );
  58.     TDBDataSet::SetPIT( query );
  59. }
  60.  
  61. void TQuery::AttachToControl( HWND hdlg, int idc )
  62. {
  63.     SetPIT( GetVBXPIUnknown( hdlg, idc ) );
  64. }
  65.  
  66. void TQuery::AttachControl( HWND hdlg, int idc )
  67. {
  68.     SetVBXPIUnknown( hdlg, idc, query );
  69. }
  70.  
  71. TQuery& TQuery::operator=( PITQuery p )
  72. {
  73.     TDBDataSet::operator=(p);
  74.     ClearTQuery();
  75.     SetTQuery( p );
  76.     return *this;
  77. }
  78.  
  79. TQuery& TQuery::operator=( const TQuery& p )
  80. {
  81.     if (this != &p)
  82.     {
  83.         TDBDataSet::operator=(p);
  84.         ClearTQuery();
  85.         SetTQuery( p.query );
  86.     }
  87.     return *this;
  88. }
  89.  
  90. int TQuery::operator==( const TQuery& p ) const
  91. {
  92.     if (this == &p)
  93.         return true;
  94.     if (query == p.query)
  95.         return true;
  96.     return false;
  97. }
  98.  
  99. int TQuery::operator!=( const TQuery& p ) const
  100. {
  101.     return ! operator==(p);
  102. }
  103.  
  104. TQuery::~TQuery()
  105. {
  106.     ClearTQuery();
  107. }
  108.  
  109. void TQuery::SetPIT( PIUnknown p )
  110. {
  111.     ClearTQuery();
  112.     SetTQuery( p );
  113.     TDBDataSet::SetPIT( p );
  114. }
  115.  
  116. void TQuery::ExecSQL( void )
  117. {
  118.     if (query)
  119.         query->ExecSQL();
  120. }
  121.  
  122. DEFINE_BDTO_OBJECTMETHOD1( TQuery, TParam, PITParam, ParamByName, string& );
  123.  
  124. void TQuery::CallParamByName( string& value, TParam& p )
  125. {
  126.     if (query)
  127.     {
  128.         PITParam pit = query->ParamByName( AnyString(value).GetPITAnyString() );
  129.         if (pit)
  130.         {
  131.             p.SetPIT( pit );
  132.             pit->Release();
  133.         }
  134.     }
  135. }
  136.  
  137. void TQuery::Prepare( void )
  138. {
  139.     if (query)
  140.         query->Prepare();
  141. }
  142.  
  143. void TQuery::UnPrepare( void )
  144. {
  145.     if (query)
  146.         query->UnPrepare();
  147. }
  148.  
  149. DEFINE_BDTO_PROP_RW( TQuery, bool, Prepared );
  150. DEFINE_BDTO_PROP_RO( TQuery, uint16, ParamCount );
  151. DEFINE_BDTO_PROP_RO( TQuery, bool, Local );
  152. DEFINE_BDTO_PROP_RO( TQuery, hDBIStmt, StmtHandle );
  153. DEFINE_BDTO_OBJECTPROP_RO( TQuery, string, Text );
  154.  
  155. void TQuery::GetPrepared( bool& p )
  156. {
  157.     if (query)
  158.         p = MakeBool( query->get_Prepared() );
  159. }
  160.  
  161. void TQuery::SetPrepared( bool p )
  162. {
  163.     if (query)
  164.         query->put_Prepared( MakeVariantBool( p ) );
  165. }
  166.  
  167. void TQuery::GetParamCount( uint16& c )
  168. {
  169.     if (query)
  170.         c = query->get_ParamCount();
  171. }
  172.  
  173. void TQuery::GetLocal( bool& l )
  174. {
  175.     if (query)
  176.         l = MakeBool( query->get_Local() );
  177. }
  178.  
  179. void TQuery::GetStmtHandle( hDBIStmt& h )
  180. {
  181.     if (query)
  182.         h = query->get_StmtHandle();
  183. }
  184.  
  185. void TQuery::GetText( string& s )
  186. {
  187.     if (query)
  188.         AnyString( query->get_Text() ).GetString( s );
  189. }
  190.  
  191. DEFINE_BDTO_OBJECTPROP_RW_FAST( TQuery, TStrings, PITStrings, SQL );
  192. DEFINE_BDTO_OBJECTPROP_RW_FAST( TQuery, TDataSource, PITDataSource, DataSource );
  193. DEFINE_BDTO_PROP_RW( TQuery, bool, UniDirectional );
  194. DEFINE_BDTO_PROP_RW( TQuery, bool, RequestLive );
  195. DEFINE_BDTO_OBJECTPROP_RW_FAST( TQuery, TParams, PITParams, Params );
  196. DEFINE_BDTO_PROP_RW( TQuery, TUpdateMode, UpdateMode );
  197.  
  198. void TQuery::GetSQL( TStrings& s )
  199. {
  200.     if (query)
  201.     {
  202.         PITStrings pit = query->get_SQL();
  203.         if (pit)
  204.         {
  205.             s.SetPIT( pit );
  206.             pit->Release();
  207.         }
  208.     }
  209. }
  210.  
  211. void TQuery::SetSQL( const TStrings& s )
  212. {
  213.     if (query)
  214.         query->put_SQL( s.GetPITStrings() );
  215. }
  216.  
  217. void TQuery::GetDataSource( TDataSource& d )
  218. {
  219.     if (query)
  220.     {
  221.         PITDataSource pit = query->get_DataSource();
  222.         if (pit)
  223.         {
  224.             d.SetPIT( pit );
  225.             pit->Release();
  226.         }
  227.     }
  228. }
  229.  
  230. void TQuery::SetDataSource( const TDataSource& d )
  231. {
  232.     if (query)
  233.         query->put_DataSource( d.GetPITDataSource() );
  234. }
  235.  
  236. void TQuery::GetUniDirectional( bool& u )
  237. {
  238.     if (query)
  239.         u = MakeBool( query->get_UniDirectional() );
  240. }
  241.  
  242. void TQuery::SetUniDirectional( bool u )
  243. {
  244.     if (query)
  245.         query->put_UniDirectional( MakeVariantBool( u ) );
  246. }
  247.  
  248. void TQuery::GetRequestLive( bool& r )
  249. {
  250.     if (query)
  251.         r = MakeBool( query->get_RequestLive() );
  252. }
  253.  
  254. void TQuery::SetRequestLive( bool r )
  255. {
  256.     if (query)
  257.         query->put_RequestLive( MakeVariantBool( r ) );
  258. }
  259.  
  260. void TQuery::GetParams( TParams& p )
  261. {
  262.     if (query)
  263.     {
  264.         PITParams pit = query->get_Params();
  265.         if (pit)
  266.         {
  267.             p.SetPIT( pit );
  268.             pit->Release();
  269.         }
  270.     }
  271. }
  272.  
  273. void TQuery::SetParams( const TParams& p )
  274. {
  275.     if (query)
  276.         query->put_Params( p.GetPITParams() );
  277. }
  278.  
  279. void TQuery::GetUpdateMode( TUpdateMode& m )
  280. {
  281.     if (query)
  282.         m = query->get_UpdateMode();
  283. }
  284.  
  285. void TQuery::SetUpdateMode( TUpdateMode m )
  286. {
  287.     if (query)
  288.         query->put_UpdateMode( m );
  289. }
  290.