summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2005-09-23 10:38:15 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2005-09-23 10:38:15 +0000
commit86d67dd8c3b5ea9b47d0e7c0ed065ec177c2b5e5 (patch)
tree94ca5aa0000948dc3fdfaf8fb0a9260ea824796a /connectivity
parenta5bbbaaf652cd4dc8d2c9c174c36f874ad92d879 (diff)
INTEGRATION: CWS dba201b (1.14.122); FILE MERGED
2005/09/21 07:22:49 oj 1.14.122.2: RESYNC: (1.14-1.15); FILE MERGED 2005/07/11 13:56:38 fs 1.14.122.1: merging CWS dba201a into dba201b
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/ado/Awrapado.cxx61
1 files changed, 37 insertions, 24 deletions
diff --git a/connectivity/source/drivers/ado/Awrapado.cxx b/connectivity/source/drivers/ado/Awrapado.cxx
index 9c01fc8f17f2..4c5ebcb120ee 100644
--- a/connectivity/source/drivers/ado/Awrapado.cxx
+++ b/connectivity/source/drivers/ado/Awrapado.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: Awrapado.cxx,v $
*
- * $Revision: 1.15 $
+ * $Revision: 1.16 $
*
- * last change: $Author: rt $ $Date: 2005-09-08 05:33:14 $
+ * last change: $Author: hr $ $Date: 2005-09-23 11:38:15 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -41,6 +41,10 @@
#ifndef _COMPHELPER_TYPES_HXX_
#include <comphelper/types.hxx>
#endif
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
namespace connectivity
{
@@ -1994,40 +1998,49 @@ ADORecordset* WpADOConnection::getTables( const ::com::sun::star::uno::Any& cata
{
// Create elements used in the array
HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
OLEVariant varCriteria[4];
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(::comphelper::getString(catalog));
+ ::rtl::OUString sCatalog;
+ if ( catalog.hasValue() && (catalog >>= sCatalog) )
+ varCriteria[nPos].setString(sCatalog);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ ++nPos;
if(schemaPattern.getLength() && schemaPattern.toChar() != '%')
varCriteria[nPos].setString(schemaPattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+ ++nPos;
if(tableNamePattern.toChar() != '%')
varCriteria[nPos].setString(tableNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
- ::rtl::OUString aTypes,aComma = ::rtl::OUString::createFromAscii(",");
- const ::rtl::OUString* pBegin = types.getConstArray();
- const ::rtl::OUString* pEnd = pBegin + types.getLength();
- for(;pBegin != pEnd;++pBegin)
- aTypes = aTypes + *pBegin + aComma;
+ ++nPos;
+ ::rtl::OUStringBuffer aTypes;
+ ::rtl::OUString aComma = ::rtl::OUString::createFromAscii(",");
+ const ::rtl::OUString* pIter = types.getConstArray();
+ const ::rtl::OUString* pEnd = pIter + types.getLength();
+ for( ; pIter != pEnd ; ++pIter)
+ {
+ if ( aTypes.getLength() )
+ aTypes.append(aComma);
+ aTypes.append(*pIter);
+ }
+
+ ::rtl::OUString sTypeNames = aTypes.makeStringAndClear();
+ if ( sTypeNames.getLength() )
+ varCriteria[nPos].setString(sTypeNames);
- if(aTypes.getLength())
- varCriteria[nPos].setString(aTypes);
- // else
- // varCriteria[nPos].setString(::rtl::OUString::createFromAscii("TABLE"));
+ // Create SafeArray Bounds and initialize the array
+ const sal_Int32 nCrit = sizeof varCriteria / sizeof varCriteria[0];
+ SAFEARRAYBOUND rgsabound[1];
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = nCrit;
+ SAFEARRAY *psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_TYPE
+ // Set the values for each element of the array
+ for( long i = 0 ; i < nCrit && SUCCEEDED( hr );i++)
+ {
+ hr = SafeArrayPutElement(psa, &i,&varCriteria[i]);
+ }
OLEVariant vtEmpty;
vtEmpty.setNoArg();