1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_ADO_AWRAPADO_HXX_
24*b1cdbd2cSJim Jagielski #define _CONNECTIVITY_ADO_AWRAPADO_HXX_
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski // Includes fuer ADO
29*b1cdbd2cSJim Jagielski #include "ado_pre_sys_include.h"
30*b1cdbd2cSJim Jagielski #include <oledb.h>
31*b1cdbd2cSJim Jagielski #include <ocidl.h>
32*b1cdbd2cSJim Jagielski #include <adoint.h>
33*b1cdbd2cSJim Jagielski #include "ado_post_sys_include.h"
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include "ado/adoimp.hxx"
37*b1cdbd2cSJim Jagielski #include "ado/Aolewrap.hxx"
38*b1cdbd2cSJim Jagielski #include "ado/Aolevariant.hxx"
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski namespace connectivity
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski 	namespace ado
43*b1cdbd2cSJim Jagielski 	{
44*b1cdbd2cSJim Jagielski 		class WpADOConnection;
45*b1cdbd2cSJim Jagielski 		class WpADOCommand;
46*b1cdbd2cSJim Jagielski 		class WpADORecordset;
47*b1cdbd2cSJim Jagielski 		class WpADOField;
48*b1cdbd2cSJim Jagielski 		class WpADOParameter;
49*b1cdbd2cSJim Jagielski 		class WpADOError;
50*b1cdbd2cSJim Jagielski 		class WpADOProperty;
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski 		typedef WpOLEAppendCollection<	ADOFields,		ADOField,		WpADOField>			WpADOFields;
53*b1cdbd2cSJim Jagielski 		typedef WpOLECollection<		ADOProperties,	ADOProperty,	WpADOProperty>		WpADOProperties;
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski 		//------------------------------------------------------------------------
56*b1cdbd2cSJim Jagielski 		class WpADOConnection : public WpOLEBase<ADOConnection>
57*b1cdbd2cSJim Jagielski 		{
58*b1cdbd2cSJim Jagielski 			friend class WpADOCommand;
59*b1cdbd2cSJim Jagielski 		public:
60*b1cdbd2cSJim Jagielski 
WpADOConnection(ADOConnection * pInt)61*b1cdbd2cSJim Jagielski 			WpADOConnection(ADOConnection* pInt)	:	WpOLEBase<ADOConnection>(pInt){}
62*b1cdbd2cSJim Jagielski 
WpADOConnection(const WpADOConnection & rhs)63*b1cdbd2cSJim Jagielski 			WpADOConnection(const WpADOConnection& rhs){operator=(rhs);}
64*b1cdbd2cSJim Jagielski 
operator =(const WpADOConnection & rhs)65*b1cdbd2cSJim Jagielski 			 WpADOConnection& operator=(const WpADOConnection& rhs)
66*b1cdbd2cSJim Jagielski 				{WpOLEBase<ADOConnection>::operator=(rhs); return *this;}
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski 			WpADOProperties get_Properties() const;
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski 			 rtl::OUString GetConnectionString() const;
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski 			 sal_Bool PutConnectionString(const ::rtl::OUString &aCon) const;
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski 			 sal_Int32 GetCommandTimeout() const;
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 			 void PutCommandTimeout(sal_Int32 nRet);
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski 			 sal_Int32 GetConnectionTimeout() const	;
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski 			 void PutConnectionTimeout(sal_Int32 nRet);
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski 			 sal_Bool Close( ) ;
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski 			 sal_Bool Execute(const ::rtl::OUString& _CommandText,OLEVariant& RecordsAffected,long Options, WpADORecordset** ppiRset);
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski 			 sal_Bool BeginTrans();
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski 			 sal_Bool CommitTrans( ) ;
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 			 sal_Bool RollbackTrans( );
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 			 sal_Bool Open(const ::rtl::OUString& ConnectionString, const ::rtl::OUString& UserID,const ::rtl::OUString& Password,long Options);
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski 			 sal_Bool GetErrors(ADOErrors** pErrors);
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetDefaultDatabase() const;
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 			 sal_Bool PutDefaultDatabase(const ::rtl::OUString& _bstr);
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski 			 IsolationLevelEnum get_IsolationLevel() const ;
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski 			 sal_Bool put_IsolationLevel(const IsolationLevelEnum& eNum) ;
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 			 sal_Int32 get_Attributes() const;
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski 			 sal_Bool put_Attributes(sal_Int32 nRet);
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 			 CursorLocationEnum get_CursorLocation() const;
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 			 sal_Bool put_CursorLocation(const CursorLocationEnum &eNum) ;
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 			 ConnectModeEnum get_Mode() const;
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski 			 sal_Bool put_Mode(const ConnectModeEnum &eNum) ;
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski 			 ::rtl::OUString get_Provider() const;
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski 			 sal_Bool put_Provider(const ::rtl::OUString& _bstr);
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski 			 sal_Int32 get_State() const;
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski 			 sal_Bool OpenSchema(SchemaEnum eNum,OLEVariant& Restrictions,OLEVariant& SchemaID,ADORecordset**pprset);
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski 			 ::rtl::OUString get_Version() const;
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski 			 // special methods
129*b1cdbd2cSJim Jagielski 			 ADORecordset* getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table );
130*b1cdbd2cSJim Jagielski 			 ADORecordset* getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table );
131*b1cdbd2cSJim Jagielski 			 ADORecordset* getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table );
132*b1cdbd2cSJim Jagielski 			 ADORecordset* getIndexInfo( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Bool unique, sal_Bool approximate );
133*b1cdbd2cSJim Jagielski 			 ADORecordset* getTablePrivileges( const ::com::sun::star::uno::Any& catalog,
134*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& schemaPattern,
135*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& tableNamePattern );
136*b1cdbd2cSJim Jagielski 			 ADORecordset* getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog,
137*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& primarySchema,
138*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& primaryTable,
139*b1cdbd2cSJim Jagielski 												  const ::com::sun::star::uno::Any& foreignCatalog,
140*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& foreignSchema,
141*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& foreignTable);
142*b1cdbd2cSJim Jagielski 			 ADORecordset* getProcedures( const ::com::sun::star::uno::Any& catalog,
143*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& schemaPattern,
144*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& procedureNamePattern );
145*b1cdbd2cSJim Jagielski 			 ADORecordset* getProcedureColumns( const ::com::sun::star::uno::Any& catalog,
146*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& schemaPattern,
147*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& procedureNamePattern,
148*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& columnNamePattern );
149*b1cdbd2cSJim Jagielski 			 ADORecordset* getTables( const ::com::sun::star::uno::Any& catalog,
150*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& schemaPattern,
151*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& tableNamePattern,
152*b1cdbd2cSJim Jagielski 												  const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types );
153*b1cdbd2cSJim Jagielski 			 ADORecordset* getColumns( const ::com::sun::star::uno::Any& catalog,
154*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& schemaPattern,
155*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& tableNamePattern,
156*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& columnNamePattern );
157*b1cdbd2cSJim Jagielski 			 ADORecordset* getColumnPrivileges( const ::com::sun::star::uno::Any& catalog,
158*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& schemaPattern,
159*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& table,
160*b1cdbd2cSJim Jagielski 												  const ::rtl::OUString& columnNamePattern );
161*b1cdbd2cSJim Jagielski 			 ADORecordset* getTypeInfo(DataTypeEnum _eType = adEmpty );
162*b1cdbd2cSJim Jagielski 		};
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski 		//------------------------------------------------------------------------
165*b1cdbd2cSJim Jagielski 		class WpADOCommand : public WpOLEBase<ADOCommand>
166*b1cdbd2cSJim Jagielski 		{
167*b1cdbd2cSJim Jagielski 		public:
WpADOCommand()168*b1cdbd2cSJim Jagielski 			WpADOCommand(){}
169*b1cdbd2cSJim Jagielski 			// Konstruktoren, operator=
170*b1cdbd2cSJim Jagielski 			// diese rufen nur die Oberklasse
WpADOCommand(ADOCommand * pInt)171*b1cdbd2cSJim Jagielski 			WpADOCommand(ADOCommand* pInt)	:	WpOLEBase<ADOCommand>(pInt){}
172*b1cdbd2cSJim Jagielski 
WpADOCommand(const WpADOCommand & rhs)173*b1cdbd2cSJim Jagielski 			WpADOCommand(const WpADOCommand& rhs){operator=(rhs);}
174*b1cdbd2cSJim Jagielski 
operator =(const WpADOCommand & rhs)175*b1cdbd2cSJim Jagielski 			 WpADOCommand& operator=(const WpADOCommand& rhs)
176*b1cdbd2cSJim Jagielski 			{
177*b1cdbd2cSJim Jagielski 				WpOLEBase<ADOCommand>::operator=(rhs); return *this;}
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
180*b1cdbd2cSJim Jagielski 
181*b1cdbd2cSJim Jagielski 			sal_Bool putref_ActiveConnection( WpADOConnection *pCon);
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski 			void put_ActiveConnection(/* [in] */ const OLEVariant& vConn);
184*b1cdbd2cSJim Jagielski 			 void Create();
185*b1cdbd2cSJim Jagielski 			 sal_Int32 get_State() const;
186*b1cdbd2cSJim Jagielski 			 ::rtl::OUString get_CommandText() const;
187*b1cdbd2cSJim Jagielski 			 sal_Bool put_CommandText(const ::rtl::OUString &aCon) ;
188*b1cdbd2cSJim Jagielski 			 sal_Int32 get_CommandTimeout() const;
189*b1cdbd2cSJim Jagielski 			 void put_CommandTimeout(sal_Int32 nRet);
190*b1cdbd2cSJim Jagielski 			 sal_Bool get_Prepared() const;
191*b1cdbd2cSJim Jagielski 			 sal_Bool put_Prepared(VARIANT_BOOL bPrepared) const;
192*b1cdbd2cSJim Jagielski 			 sal_Bool Execute(OLEVariant& RecordsAffected,OLEVariant& Parameters,long Options, ADORecordset** ppiRset);
193*b1cdbd2cSJim Jagielski 			 ADOParameter* CreateParameter(const ::rtl::OUString &_bstr,DataTypeEnum Type,ParameterDirectionEnum Direction,long nSize,const OLEVariant &Value);
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski 			 ADOParameters* get_Parameters() const;
196*b1cdbd2cSJim Jagielski 			 sal_Bool put_CommandType( /* [in] */ CommandTypeEnum lCmdType);
197*b1cdbd2cSJim Jagielski 			 CommandTypeEnum get_CommandType( ) const ;
198*b1cdbd2cSJim Jagielski 			// gibt den Namen des Feldes zur"ueck
199*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetName() const ;
200*b1cdbd2cSJim Jagielski 			 sal_Bool put_Name(const ::rtl::OUString& _Name);
201*b1cdbd2cSJim Jagielski 			 sal_Bool Cancel();
202*b1cdbd2cSJim Jagielski 		};
203*b1cdbd2cSJim Jagielski 		//------------------------------------------------------------------------
204*b1cdbd2cSJim Jagielski 		class WpADOError : public WpOLEBase<ADOError>
205*b1cdbd2cSJim Jagielski 		{
206*b1cdbd2cSJim Jagielski 		public:
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski 			// Konstruktoren, operator=
209*b1cdbd2cSJim Jagielski 			// diese rufen nur die Oberklasse
210*b1cdbd2cSJim Jagielski 
WpADOError(ADOError * pInt)211*b1cdbd2cSJim Jagielski 			WpADOError(ADOError* pInt):WpOLEBase<ADOError>(pInt){}
212*b1cdbd2cSJim Jagielski 
WpADOError(const WpADOError & rhs)213*b1cdbd2cSJim Jagielski 			WpADOError(const WpADOError& rhs){operator=(rhs);}
214*b1cdbd2cSJim Jagielski 
operator =(const WpADOError & rhs)215*b1cdbd2cSJim Jagielski 			 WpADOError& operator=(const WpADOError& rhs)
216*b1cdbd2cSJim Jagielski 				{WpOLEBase<ADOError>::operator=(rhs); return *this;}
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetDescription() const;
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetSource() const ;
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski 			 sal_Int32 GetNumber() const ;
225*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetSQLState() const ;
226*b1cdbd2cSJim Jagielski 			 sal_Int32 GetNativeError() const ;
227*b1cdbd2cSJim Jagielski 		};
228*b1cdbd2cSJim Jagielski 
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski 		//------------------------------------------------------------------------
232*b1cdbd2cSJim Jagielski 		class WpADOField : public WpOLEBase<ADOField>
233*b1cdbd2cSJim Jagielski 		{
234*b1cdbd2cSJim Jagielski 			//	friend class WpADOFields;
235*b1cdbd2cSJim Jagielski 		public:
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski 			// Konstruktoren, operator=
238*b1cdbd2cSJim Jagielski 			// diese rufen nur die Oberklasse
WpADOField(ADOField * pInt=NULL)239*b1cdbd2cSJim Jagielski 			WpADOField(ADOField* pInt=NULL):WpOLEBase<ADOField>(pInt){}
WpADOField(const WpADOField & rhs)240*b1cdbd2cSJim Jagielski 			WpADOField(const WpADOField& rhs){operator=(rhs);}
241*b1cdbd2cSJim Jagielski 
operator =(const WpADOField & rhs)242*b1cdbd2cSJim Jagielski 			 WpADOField& operator=(const WpADOField& rhs)
243*b1cdbd2cSJim Jagielski 				{WpOLEBase<ADOField>::operator=(rhs); return *this;}
244*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski 			 WpADOProperties get_Properties();
247*b1cdbd2cSJim Jagielski 			 sal_Int32 GetActualSize() const ;
248*b1cdbd2cSJim Jagielski 			 sal_Int32 GetAttributes() const ;
249*b1cdbd2cSJim Jagielski 			 sal_Int32 GetStatus() const 	  ;
250*b1cdbd2cSJim Jagielski 			 sal_Int32 GetDefinedSize() const ;
251*b1cdbd2cSJim Jagielski 			// gibt den Namen des Feldes zur"ueck
252*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetName() const ;
253*b1cdbd2cSJim Jagielski 			 DataTypeEnum GetADOType() const  ;
254*b1cdbd2cSJim Jagielski 			 void get_Value(OLEVariant& aValVar) const ;
255*b1cdbd2cSJim Jagielski 			 OLEVariant get_Value() const;
256*b1cdbd2cSJim Jagielski 			 sal_Bool PutValue(const OLEVariant& aVariant);
257*b1cdbd2cSJim Jagielski 			 sal_Int32 GetPrecision() const ;
258*b1cdbd2cSJim Jagielski 			 sal_Int32 GetNumericScale() const ;
259*b1cdbd2cSJim Jagielski 			 sal_Bool AppendChunk(const OLEVariant& _Variant);
260*b1cdbd2cSJim Jagielski 			 OLEVariant GetChunk(long Length) const;
261*b1cdbd2cSJim Jagielski 			 void GetChunk(long Length,OLEVariant &aValVar) const;
262*b1cdbd2cSJim Jagielski 			 OLEVariant GetOriginalValue() const;
263*b1cdbd2cSJim Jagielski 			 void GetOriginalValue(OLEVariant &aValVar) const;
264*b1cdbd2cSJim Jagielski 			 OLEVariant GetUnderlyingValue() const;
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 			 void GetUnderlyingValue(OLEVariant &aValVar) const;
267*b1cdbd2cSJim Jagielski 
268*b1cdbd2cSJim Jagielski 			 sal_Bool PutPrecision(sal_Int8 _prec);
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski 			 sal_Bool PutNumericScale(sal_Int8 _prec);
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski 			 void PutADOType(DataTypeEnum eType) ;
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski 			 sal_Bool PutDefinedSize(sal_Int32 _nDefSize);
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski 			 sal_Bool PutAttributes(sal_Int32 _nDefSize);
277*b1cdbd2cSJim Jagielski 		};
278*b1cdbd2cSJim Jagielski 
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski 
281*b1cdbd2cSJim Jagielski 		//------------------------------------------------------------------------
282*b1cdbd2cSJim Jagielski 		class WpADOProperty: public WpOLEBase<ADOProperty>
283*b1cdbd2cSJim Jagielski 		{
284*b1cdbd2cSJim Jagielski 		public:
285*b1cdbd2cSJim Jagielski 			// Konstruktoren, operator=
286*b1cdbd2cSJim Jagielski 			// diese rufen nur die Oberklasse
WpADOProperty(ADOProperty * pInt=NULL)287*b1cdbd2cSJim Jagielski 			WpADOProperty(ADOProperty* pInt=NULL):WpOLEBase<ADOProperty>(pInt){}
WpADOProperty(const WpADOProperty & rhs)288*b1cdbd2cSJim Jagielski 			WpADOProperty(const WpADOProperty& rhs){operator=(rhs);}
operator =(const WpADOProperty & rhs)289*b1cdbd2cSJim Jagielski 			 WpADOProperty& operator=(const WpADOProperty& rhs)
290*b1cdbd2cSJim Jagielski 				{WpOLEBase<ADOProperty>::operator=(rhs); return *this;}
291*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski 			 OLEVariant GetValue() const;
294*b1cdbd2cSJim Jagielski 			 void GetValue(OLEVariant &aValVar) const;
295*b1cdbd2cSJim Jagielski 			 sal_Bool PutValue(const OLEVariant &aValVar) ;
296*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetName() const ;
297*b1cdbd2cSJim Jagielski 			 DataTypeEnum GetADOType() const ;
298*b1cdbd2cSJim Jagielski 			 sal_Int32 GetAttributes() const ;
299*b1cdbd2cSJim Jagielski 			 sal_Bool PutAttributes(sal_Int32 _nDefSize);
300*b1cdbd2cSJim Jagielski 		};
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski 		class WpADORecordset : public WpOLEBase<ADORecordset>
304*b1cdbd2cSJim Jagielski 		{
305*b1cdbd2cSJim Jagielski 
306*b1cdbd2cSJim Jagielski 		public:
307*b1cdbd2cSJim Jagielski 			// Konstruktoren, operator=
308*b1cdbd2cSJim Jagielski 			// diese rufen nur die Oberklasse
WpADORecordset(ADORecordset * pInt=NULL)309*b1cdbd2cSJim Jagielski 			WpADORecordset(ADORecordset* pInt=NULL):WpOLEBase<ADORecordset>(pInt){}
WpADORecordset(const WpADORecordset & rhs)310*b1cdbd2cSJim Jagielski 			WpADORecordset(const WpADORecordset& rhs){operator=(rhs);}
operator =(const WpADORecordset & rhs)311*b1cdbd2cSJim Jagielski 			 WpADORecordset& operator=(const WpADORecordset& rhs)
312*b1cdbd2cSJim Jagielski 			{
313*b1cdbd2cSJim Jagielski 				WpOLEBase<ADORecordset>::operator=(rhs);
314*b1cdbd2cSJim Jagielski 				return *this;
315*b1cdbd2cSJim Jagielski 			}
~WpADORecordset()316*b1cdbd2cSJim Jagielski 			~WpADORecordset()
317*b1cdbd2cSJim Jagielski 			{
318*b1cdbd2cSJim Jagielski 				//	if(pInterface && get_State() == adStateOpen)
319*b1cdbd2cSJim Jagielski 					//	Close();
320*b1cdbd2cSJim Jagielski 			}
321*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
322*b1cdbd2cSJim Jagielski 			 void Create();
323*b1cdbd2cSJim Jagielski 			 sal_Bool Open(
324*b1cdbd2cSJim Jagielski 					/* [optional][in] */ VARIANT Source,
325*b1cdbd2cSJim Jagielski 					/* [optional][in] */ VARIANT ActiveConnection,
326*b1cdbd2cSJim Jagielski 					/* [defaultvalue][in] */ CursorTypeEnum CursorType,
327*b1cdbd2cSJim Jagielski 					/* [defaultvalue][in] */ LockTypeEnum LockType,
328*b1cdbd2cSJim Jagielski 					/* [defaultvalue][in] */ sal_Int32 Options);
329*b1cdbd2cSJim Jagielski 			 LockTypeEnum GetLockType();
330*b1cdbd2cSJim Jagielski 			 void Close();
331*b1cdbd2cSJim Jagielski 			 sal_Bool Cancel() const;
332*b1cdbd2cSJim Jagielski 			 sal_Int32 get_State( );
333*b1cdbd2cSJim Jagielski 			 sal_Bool Supports( /* [in] */ CursorOptionEnum CursorOptions);
334*b1cdbd2cSJim Jagielski 			PositionEnum get_AbsolutePosition();
335*b1cdbd2cSJim Jagielski 			 void GetDataSource(IUnknown** pIUnknown) const ;
336*b1cdbd2cSJim Jagielski 			 void PutRefDataSource(IUnknown* pIUnknown);
337*b1cdbd2cSJim Jagielski 			 void GetBookmark(VARIANT& var);
338*b1cdbd2cSJim Jagielski 			 OLEVariant GetBookmark();
339*b1cdbd2cSJim Jagielski 			CompareEnum CompareBookmarks(const OLEVariant& left,const OLEVariant& right);
340*b1cdbd2cSJim Jagielski 			 sal_Bool SetBookmark(const OLEVariant &pSafeAr);
341*b1cdbd2cSJim Jagielski 			 WpADOFields GetFields() const;
342*b1cdbd2cSJim Jagielski 			 sal_Bool Move(sal_Int32 nRows, VARIANT aBmk);
343*b1cdbd2cSJim Jagielski 			 sal_Bool MoveNext();
344*b1cdbd2cSJim Jagielski 			 sal_Bool MovePrevious();
345*b1cdbd2cSJim Jagielski 			 sal_Bool MoveFirst();
346*b1cdbd2cSJim Jagielski 			 sal_Bool MoveLast();
347*b1cdbd2cSJim Jagielski 
348*b1cdbd2cSJim Jagielski 			 sal_Bool IsAtBOF() const;
349*b1cdbd2cSJim Jagielski 			 sal_Bool IsAtEOF() const;
350*b1cdbd2cSJim Jagielski 			 sal_Bool Delete(AffectEnum eNum);
351*b1cdbd2cSJim Jagielski 			 sal_Bool AddNew(const OLEVariant &FieldList,const OLEVariant &Values);
352*b1cdbd2cSJim Jagielski 			 sal_Bool Update(const OLEVariant &FieldList,const OLEVariant &Values);
353*b1cdbd2cSJim Jagielski 			 sal_Bool CancelUpdate();
354*b1cdbd2cSJim Jagielski 			 WpADOProperties get_Properties() const;
355*b1cdbd2cSJim Jagielski 			 sal_Bool NextRecordset(OLEVariant& RecordsAffected,ADORecordset** ppiRset);
356*b1cdbd2cSJim Jagielski 			 sal_Bool get_RecordCount(sal_Int32 &_nRet) const;
357*b1cdbd2cSJim Jagielski 			 sal_Bool get_MaxRecords(sal_Int32 &_nRet) const;
358*b1cdbd2cSJim Jagielski 			 sal_Bool put_MaxRecords(sal_Int32 _nRet);
359*b1cdbd2cSJim Jagielski 			 sal_Bool get_CursorType(CursorTypeEnum &_nRet) const;
360*b1cdbd2cSJim Jagielski 			 sal_Bool put_CursorType(CursorTypeEnum _nRet);
361*b1cdbd2cSJim Jagielski 			 sal_Bool get_LockType(LockTypeEnum &_nRet) const;
362*b1cdbd2cSJim Jagielski 			 sal_Bool put_LockType(LockTypeEnum _nRet);
363*b1cdbd2cSJim Jagielski 			 sal_Bool get_CacheSize(sal_Int32 &_nRet) const;
364*b1cdbd2cSJim Jagielski 			 sal_Bool put_CacheSize(sal_Int32 _nRet);
365*b1cdbd2cSJim Jagielski 			 sal_Bool UpdateBatch(AffectEnum AffectRecords);
366*b1cdbd2cSJim Jagielski 		};
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski 		//------------------------------------------------------------------------
369*b1cdbd2cSJim Jagielski 		class WpADOParameter:public WpOLEBase<ADOParameter>
370*b1cdbd2cSJim Jagielski 		{
371*b1cdbd2cSJim Jagielski 		public:
372*b1cdbd2cSJim Jagielski 			// Konstruktoren, operator=
373*b1cdbd2cSJim Jagielski 			// diese rufen nur die Oberklasse
WpADOParameter(ADOParameter * pInt)374*b1cdbd2cSJim Jagielski 			WpADOParameter(ADOParameter* pInt):WpOLEBase<ADOParameter>(pInt){}
WpADOParameter(const WpADOParameter & rhs)375*b1cdbd2cSJim Jagielski 			WpADOParameter(const WpADOParameter& rhs):WpOLEBase<ADOParameter>(rhs){}
operator =(const WpADOParameter & rhs)376*b1cdbd2cSJim Jagielski 			 WpADOParameter& operator=(const WpADOParameter& rhs)
377*b1cdbd2cSJim Jagielski 				{WpOLEBase<ADOParameter>::operator=(rhs); return *this;}
378*b1cdbd2cSJim Jagielski 			//////////////////////////////////////////////////////////////////////
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski 			 ::rtl::OUString GetName() const ;
381*b1cdbd2cSJim Jagielski 			 DataTypeEnum GetADOType() const ;
382*b1cdbd2cSJim Jagielski 			 void put_Type(const DataTypeEnum& _eType);
383*b1cdbd2cSJim Jagielski 			 sal_Bool put_Size(const sal_Int32& _nSize);
384*b1cdbd2cSJim Jagielski 			 sal_Int32 GetAttributes() const ;
385*b1cdbd2cSJim Jagielski 			 sal_Int32 GetPrecision() const ;
386*b1cdbd2cSJim Jagielski 			 sal_Int32 GetNumericScale() const ;
387*b1cdbd2cSJim Jagielski 			 ParameterDirectionEnum get_Direction() const;
388*b1cdbd2cSJim Jagielski 			 void GetValue(OLEVariant& aValVar) const ;
389*b1cdbd2cSJim Jagielski 			 OLEVariant GetValue() const;
390*b1cdbd2cSJim Jagielski 			 sal_Bool PutValue(const OLEVariant& aVariant);
391*b1cdbd2cSJim Jagielski 			 sal_Bool AppendChunk(const OLEVariant& aVariant);
392*b1cdbd2cSJim Jagielski 		};
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski 		class OTools
395*b1cdbd2cSJim Jagielski 		{
396*b1cdbd2cSJim Jagielski 		public:
397*b1cdbd2cSJim Jagielski 			/** putValue set the property value at the ado column
398*b1cdbd2cSJim Jagielski 				@param	_rProps		the properties where to set
399*b1cdbd2cSJim Jagielski 				@param	_aPosition	which property to set
400*b1cdbd2cSJim Jagielski 				@param	_aValVar	the value to set
401*b1cdbd2cSJim Jagielski 			*/
402*b1cdbd2cSJim Jagielski 			static void				putValue(const WpADOProperties& _rProps,const OLEVariant &_aPosition,const OLEVariant &_aValVar);
403*b1cdbd2cSJim Jagielski 
404*b1cdbd2cSJim Jagielski 			/** getValue returns a specific property value
405*b1cdbd2cSJim Jagielski 				@param	_rProps		the properties where to set
406*b1cdbd2cSJim Jagielski 				@param	_aPosition	the property
407*b1cdbd2cSJim Jagielski 
408*b1cdbd2cSJim Jagielski 				@return	the property value
409*b1cdbd2cSJim Jagielski 			*/
410*b1cdbd2cSJim Jagielski 			static OLEVariant		getValue(const WpADOProperties& _rProps,const OLEVariant &_aPosition);
411*b1cdbd2cSJim Jagielski 		};
412*b1cdbd2cSJim Jagielski 	}
413*b1cdbd2cSJim Jagielski }
414*b1cdbd2cSJim Jagielski #endif //_CONNECTIVITY_ADO_AWRAPADO_HXX_
415*b1cdbd2cSJim Jagielski 
416