diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2003-04-04 16:52:28 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2003-04-04 16:52:28 +0000 |
commit | 8ad2ba7e386d4f5dc82de119e216bca37fa31763 (patch) | |
tree | ba3e71527712f64edce67852f4fb4ba80a40eb7c /dbaccess/source/ui/browser | |
parent | 937270ba019511a2a47a1fb6b10f526bd13b0104 (diff) |
INTEGRATION: CWS os7 (1.59.2.2.6); FILE MERGED
2003/03/28 14:13:30 os 1.59.2.2.6.2: RESYNC: (1.59.2.2-1.60); FILE MERGED
2003/03/22 17:22:11 fs 1.59.2.2.6.1: #108018# new property BookmarkSelection in the DataAccessDescriptor service
Diffstat (limited to 'dbaccess/source/ui/browser')
-rw-r--r-- | dbaccess/source/ui/browser/dsbrowserDnD.cxx | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/dbaccess/source/ui/browser/dsbrowserDnD.cxx b/dbaccess/source/ui/browser/dsbrowserDnD.cxx index 237f7036435d..282b6cb36c02 100644 --- a/dbaccess/source/ui/browser/dsbrowserDnD.cxx +++ b/dbaccess/source/ui/browser/dsbrowserDnD.cxx @@ -2,9 +2,9 @@ * * $RCSfile: dsbrowserDnD.cxx,v $ * - * $Revision: 1.60 $ + * $Revision: 1.61 $ * - * last change: $Author: hr $ $Date: 2003-03-19 17:52:12 $ + * last change: $Author: hr $ $Date: 2003-04-04 17:52:28 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -96,6 +96,9 @@ #ifndef _COM_SUN_STAR_SDBC_XCOLUMNLOCATE_HPP_ #include <com/sun/star/sdbc/XColumnLocate.hpp> #endif +#ifndef _COM_SUN_STAR_SDBCX_XROWLOCATE_HPP_ +#include <com/sun/star/sdbcx/XRowLocate.hpp> +#endif #ifndef _COM_SUN_STAR_SDB_XQUERYDEFINITIONSSUPPLIER_HPP_ #include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp> #endif @@ -236,12 +239,20 @@ namespace dbaui const Reference<XPropertySet>& _xDestTable, const Reference<XDatabaseMetaData>& _xMetaData, sal_Bool bIsAutoIncrement, - const Sequence<Any>& _aSelection) throw(SQLException, RuntimeException) + const Sequence<Any>& _aSelection, + sal_Bool _bBookmarkSelection + ) throw(SQLException, RuntimeException) { Reference< XResultSetMetaDataSupplier> xSrcMetaSup(xSrcRs,UNO_QUERY); Reference<XRow> xRow(xSrcRs,UNO_QUERY); - if(!xSrcRs.is() || !xRow.is()) + Reference< XRowLocate > xRowLocate( xSrcRs, UNO_QUERY ); + sal_Bool bUseSelection = _aSelection.getLength() > 0; + + if ( !xRow.is() || ( bUseSelection && _bBookmarkSelection && !xRowLocate.is() ) ) + { + DBG_ERROR( "insertRows: bad arguments!" ); return; + } ::rtl::OUString aSql(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("INSERT INTO "))); ::rtl::OUString sComposedTableName; @@ -300,7 +311,6 @@ namespace dbaui sal_Int32 nRowCount = 0; const Any* pSelBegin = _aSelection.getConstArray(); const Any* pSelEnd = pSelBegin + _aSelection.getLength(); - sal_Bool bUseSelection = _aSelection.getLength() > 0; sal_Bool bNext = sal_True; do // loop as long as there are more rows or the selection ends { @@ -308,9 +318,16 @@ namespace dbaui { if ( pSelBegin != pSelEnd ) { - sal_Int32 nPos = 0; - *pSelBegin >>= nPos; - bNext = xSrcRs->absolute( nPos ); + if ( _bBookmarkSelection ) + { + xRowLocate->moveToBookmark( *pSelBegin ); + } + else + { + sal_Int32 nPos = 0; + *pSelBegin >>= nPos; + bNext = xSrcRs->absolute( nPos ); + } ++pSelBegin; } else @@ -685,6 +702,7 @@ namespace dbaui Reference<XConnection> xSrcConnection; Reference<XResultSet> xSrcRs; // the source resultset may be empty Sequence< Any > aSelection; + sal_Bool bBookmarkSelection; ::rtl::OUString sCommand,sSrcDataSourceName; _rPasteData[daDataSource] >>= sSrcDataSourceName; _rPasteData[daCommand] >>= sCommand; @@ -692,6 +710,8 @@ namespace dbaui _rPasteData[daConnection] >>= xSrcConnection; if ( _rPasteData.has(daSelection) ) _rPasteData[daSelection] >>= aSelection; + if ( _rPasteData.has(daBookmarkSelection) ) + _rPasteData[daBookmarkSelection] >>= bBookmarkSelection; if ( _rPasteData.has(daCursor) ) _rPasteData[daCursor] >>= xSrcRs; @@ -832,7 +852,8 @@ namespace dbaui xTable, xDestConnection->getMetaData(), aWizard.isAutoincrementEnabled(), - aSelection); + aSelection, + bBookmarkSelection); } break; case OCopyTableWizard::WIZARD_DEF_VIEW: |