home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / borland / srcbdto.pak / STOREDPR.CPP < prev    next >
Text File  |  1997-05-06  |  5KB  |  259 lines

  1. //-----------------------------------------------------------------------------
  2. // Visual Database Tools
  3. // Copyright (c) 1996 by Borland International, All Rights Reserved
  4. //
  5. // storedpr.cpp
  6. // TStoredProc 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 TStoredProc::SetTStoredProc( PIUnknown p )
  19. {
  20.     storedproc = 0;
  21.     if (p)
  22.         p->QueryInterface( IID_ITStoredProc, (void**) &storedproc );
  23. }
  24.  
  25. void TStoredProc::ClearTStoredProc( void )
  26. {
  27.     if (storedproc)
  28.     {
  29.         storedproc->Release();
  30.         storedproc = 0;
  31.     }
  32. }
  33.  
  34. TStoredProc::TStoredProc( void ) : TDBDataSet()
  35. {
  36.     storedproc = CreateITStoredProc();
  37.     TDBDataSet::SetPIT( storedproc );
  38. }
  39.  
  40. TStoredProc::TStoredProc( PITStoredProc p ) : TDBDataSet( p )
  41. {
  42.     SetTStoredProc( p );
  43. }
  44.  
  45. TStoredProc::TStoredProc( const TStoredProc& p ) : TDBDataSet( p )
  46. {
  47.     SetTStoredProc( p.storedproc );
  48. }
  49.  
  50. TStoredProc::TStoredProc( PTStoredProc p ) : TDBDataSet( p )
  51. {
  52.     SetTStoredProc( p ? p->storedproc : 0 );
  53. }
  54.  
  55. TStoredProc::TStoredProc( HWND hdlg, int idc ) : TDBDataSet()
  56.  
  57. {
  58.     SetTStoredProc( GetVBXPIUnknown( hdlg, idc ) );
  59.     TDBDataSet::SetPIT( storedproc );
  60. }
  61.  
  62. void TStoredProc::AttachToControl( HWND hdlg, int idc )
  63. {
  64.     SetPIT( GetVBXPIUnknown( hdlg, idc ) );
  65. }
  66.  
  67. void TStoredProc::AttachControl( HWND hdlg, int idc )
  68. {
  69.     SetVBXPIUnknown( hdlg, idc, storedproc );
  70. }
  71.  
  72. TStoredProc& TStoredProc::operator=( PITStoredProc p )
  73. {
  74.     TDBDataSet::operator=(p);
  75.     ClearTStoredProc();
  76.     SetTStoredProc( p );
  77.     return *this;
  78. }
  79.  
  80. TStoredProc& TStoredProc::operator=( const TStoredProc& p )
  81. {
  82.     if (this != &p)
  83.     {
  84.         TDBDataSet::operator=(p);
  85.         ClearTStoredProc();
  86.         SetTStoredProc( p.storedproc );
  87.     }
  88.     return *this;
  89. }
  90.  
  91. int TStoredProc::operator==( const TStoredProc& p ) const
  92. {
  93.     if (this == &p)
  94.         return true;
  95.     if (storedproc == p.storedproc)
  96.         return true;
  97.     return false;
  98. }
  99.  
  100. int TStoredProc::operator!=( const TStoredProc& p ) const
  101. {
  102.     return ! operator==(p);
  103. }
  104.  
  105. TStoredProc::~TStoredProc()
  106. {
  107.     ClearTStoredProc();
  108. }
  109.  
  110. void TStoredProc::SetPIT( PIUnknown p )
  111. {
  112.     ClearTStoredProc();
  113.     SetTStoredProc( p );
  114.     TDBDataSet::SetPIT( p );
  115. }
  116.  
  117. void TStoredProc::CopyParams( TParams& p )
  118. {
  119.     if (storedproc)
  120.         storedproc->CopyParams( p.GetPITParams() );
  121. }
  122.  
  123. DEFINE_BDTO_PROP_RO( TStoredProc, bool, DescriptionsAvailable );
  124.  
  125. void TStoredProc::GetDescriptionsAvailable( bool& d )
  126. {
  127.     if (storedproc)
  128.         d = MakeBool( storedproc->get_DescriptionsAvailable() );
  129.     else
  130.         d = false;
  131. }
  132.  
  133. void TStoredProc::ExecProc( void )
  134. {
  135.     if (storedproc)
  136.         storedproc->ExecProc();
  137. }
  138.  
  139. DEFINE_BDTO_OBJECTMETHOD1( TStoredProc, TParam, PITParam, ParamByName, string& );
  140.  
  141. void TStoredProc::CallParamByName( string& value, TParam& p )
  142. {
  143.     if (storedproc)
  144.     {
  145.         PITParam pit = storedproc->ParamByName( AnyString(value).GetPITAnyString() );
  146.         if (pit)
  147.         {
  148.             p.SetPIT( pit );
  149.             pit->Release();
  150.         }
  151.     }
  152. }
  153.  
  154. void TStoredProc::Prepare( void )
  155. {
  156.     if (storedproc)
  157.         storedproc->Prepare();
  158. }
  159.  
  160. void TStoredProc::GetResults( void )
  161. {
  162.     if (storedproc)
  163.         storedproc->GetResults();
  164. }
  165.  
  166. void TStoredProc::UnPrepare( void )
  167. {
  168.     if (storedproc)
  169.         storedproc->UnPrepare();
  170. }
  171.  
  172. DEFINE_BDTO_PROP_RO( TStoredProc, uint16, ParamCount );
  173. DEFINE_BDTO_PROP_RO( TStoredProc, hDBIStmt, StmtHandle );
  174. DEFINE_BDTO_PROP_RW( TStoredProc, bool, Prepared );
  175.  
  176. void TStoredProc::GetParamCount( uint16& c )
  177. {
  178.     if (storedproc)
  179.         c = storedproc->get_ParamCount();
  180. }
  181.  
  182. void TStoredProc::GetStmtHandle( hDBIStmt& h )
  183. {
  184.     if (storedproc)
  185.         h = storedproc->get_StmtHandle();
  186. }
  187.  
  188. void TStoredProc::GetPrepared( bool& p )
  189. {
  190.     if (storedproc)
  191.         p = MakeBool( storedproc->get_Prepared() );
  192. }
  193.  
  194. void TStoredProc::SetPrepared( bool p )
  195. {
  196.     if (storedproc)
  197.         storedproc->put_Prepared( MakeVariantBool( p ) );
  198. }
  199.  
  200. DEFINE_BDTO_OBJECTPROP_RW( TStoredProc, string, StoredProcName );
  201. DEFINE_BDTO_PROP_RW( TStoredProc, uint16, Overload );
  202. DEFINE_BDTO_OBJECTPROP_RW_FAST( TStoredProc, TParams, PITParams, Params );
  203. DEFINE_BDTO_PROP_RW( TStoredProc, TParamBindMode, ParamBindMode );
  204.  
  205. void TStoredProc::GetStoredProcName( string& s )
  206. {
  207.     if (storedproc)
  208.         AnyString( storedproc->get_StoredProcName() ).GetString( s );
  209. }
  210.  
  211. void TStoredProc::SetStoredProcName( const string& n )
  212. {
  213.     if (storedproc)
  214.         storedproc->put_StoredProcName( AnyString(n).GetPITAnyString() );
  215. }
  216.  
  217. void TStoredProc::GetOverload( uint16& o )
  218. {
  219.     if (storedproc)
  220.         o = storedproc->get_Overload();
  221. }
  222.  
  223. void TStoredProc::SetOverload( uint16 o )
  224. {
  225.     if (storedproc)
  226.         storedproc->put_Overload( o );
  227. }
  228.  
  229. void TStoredProc::GetParams( TParams& p )
  230. {
  231.     if (storedproc)
  232.     {
  233.         PITParams pit = storedproc->get_Params();
  234.         if (pit)
  235.         {
  236.             p.SetPIT( pit );
  237.             pit->Release();
  238.         }
  239.     }
  240. }
  241.  
  242. void TStoredProc::SetParams( const TParams& p )
  243. {
  244.     if (storedproc)
  245.         storedproc->put_Params( p.GetPITParams() );
  246. }
  247.  
  248. void TStoredProc::GetParamBindMode( TParamBindMode& m )
  249. {
  250.     if (storedproc)
  251.         m = storedproc->get_ParamBindMode();
  252. }
  253.  
  254. void TStoredProc::SetParamBindMode( TParamBindMode m )
  255. {
  256.     if (storedproc)
  257.         storedproc->put_ParamBindMode( m );
  258. }
  259.