Tag: cws_src680_dba30 User: fs Date: 06/03/21 10:37:26 Modified: /dba/dbaccess/source/ui/misc/ DExport.cxx
Log: RESYNC: (1.26-1.28); FILE MERGED File Changes: Directory: /dba/dbaccess/source/ui/misc/ ======================================== File [changed]: DExport.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/misc/DExport.cxx?r1=1.26.16.1&r2=1.26.16.2 Delta lines: +110 -30 ---------------------- --- DExport.cxx 2 Jan 2006 09:17:12 -0000 1.26.16.1 +++ DExport.cxx 21 Mar 2006 18:37:24 -0000 1.26.16.2 @@ -132,12 +132,21 @@ #ifndef _DBHELPER_DBEXCEPTION_HXX_ #include <connectivity/dbexception.hxx> #endif +#ifndef _CONNECTIVITY_FILE_VALUE_HXX_ +#include <connectivity/FValue.hxx> +#endif #ifndef _COM_SUN_STAR_SDBC_SQLWARNING_HPP_ #include <com/sun/star/sdbc/SQLWarning.hpp> #endif #ifndef _COM_SUN_STAR_SDB_SQLCONTEXT_HPP_ #include <com/sun/star/sdb/SQLContext.hpp> #endif +#ifndef _DBAUI_SQLMESSAGE_HXX_ +#include "sqlmessage.hxx" +#endif +#ifndef _SV_MSGBOX_HXX +#include <vcl/msgbox.hxx> +#endif #define CONTAINER_ENTRY_NOTFOUND ((ULONG)0xFFFFFFFF) @@ -165,7 +174,9 @@ const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, const TColumnVector* pList, const OTypeInfoMap* _pInfoMap) - :m_nColumnPos(0) + :m_pColumnList(pList) + ,m_pInfoMap(_pInfoMap) + ,m_nColumnPos(0) ,m_nRows(1) ,m_nRowCount(0) ,m_bError(FALSE) @@ -205,11 +216,6 @@ { SvtSysLocale aSysLocale; m_nLocale = aSysLocale.GetLocaleData().getLocale(); -// Any aValue = ConfigManager::GetDirectConfigProperty(ConfigManager::LOCALE); -// m_nLocale.Language = ::comphelper::getString(aValue); -// String sLanguage, sCountry; -// ConvertLanguageToIsoNames(Window::GetSettings().GetLanguage(), sLanguage, sCountry); -// m_nLocale = Locale(sLanguage, sCountry, ::rtl::OUString()); } catch(Exception&) { @@ -224,6 +230,8 @@ const TColumnVector* pList, const OTypeInfoMap* _pInfoMap) :m_xConnection(_rxConnection) + ,m_pColumnList(NULL) + ,m_pInfoMap(NULL) ,m_nColumnPos(0) ,m_nRows(1) ,m_nRowCount(0) @@ -244,11 +252,6 @@ { SvtSysLocale aSysLocale; m_nLocale = aSysLocale.GetLocaleData().getLocale(); -// Any aValue = ConfigManager::GetDirectConfigProperty(ConfigManager::LOCALE); -// m_nLocale.Language = ::comphelper::getString(aValue); -// String sLanguage, sCountry; -// ConvertLanguageToIsoNames(Window::GetSettings().GetLanguage(), sLanguage, sCountry); -// m_nLocale = Locale(sLanguage, sCountry, ::rtl::OUString()); } catch(Exception&) { @@ -263,30 +266,89 @@ Reference<XResultSet> xSet = xMeta.is() ? xMeta->getTypeInfo() : Reference<XResultSet>(); if(xSet.is()) { + ::connectivity::ORowSetValue aValue; + ::std::vector<sal_Int32> aTypes; + Reference<XResultSetMetaData> xResultSetMetaData = Reference<XResultSetMetaDataSupplier>(xSet,UNO_QUERY)->getMetaData(); Reference<XRow> xRow(xSet,UNO_QUERY); while(xSet->next()) { - ::rtl::OUString sTypeName = xRow->getString (1); - sal_Int16 nType = xRow->getShort(2); + if ( aTypes.empty() ) + { + sal_Int32 nCount = xResultSetMetaData->getColumnCount(); + if ( nCount < 1 ) + nCount = 18; + aTypes.reserve(nCount+1); + aTypes.push_back(-1); + for (sal_Int32 j = 1; j <= nCount ; ++j) + aTypes.push_back(xResultSetMetaData->getColumnType(j)); + } + + sal_Int32 nPos = 1; + aValue.fill(nPos,aTypes[nPos],xRow); + ::rtl::OUString sTypeName = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + sal_Int32 nType = aValue; + ++nPos; + if( nType == DataType::VARCHAR) { m_pTypeInfo = TOTypeInfoSP(new OTypeInfo()); + m_pTypeInfo->aTypeName = sTypeName; m_pTypeInfo->nType = nType; - m_pTypeInfo->nPrecision = xRow->getInt (3); - m_pTypeInfo->aLiteralPrefix = xRow->getString (4); - m_pTypeInfo->aLiteralSuffix = xRow->getString (5); - m_pTypeInfo->aCreateParams = xRow->getString (6); - m_pTypeInfo->bNullable = xRow->getInt (7) == ColumnValue::NULLABLE; - m_pTypeInfo->bCaseSensitive = xRow->getBoolean (8); - m_pTypeInfo->nSearchType = xRow->getShort (9); - m_pTypeInfo->bUnsigned = xRow->getBoolean (10); - m_pTypeInfo->bCurrency = xRow->getBoolean (11); - m_pTypeInfo->bAutoIncrement = xRow->getBoolean (12); - m_pTypeInfo->aLocalTypeName = xRow->getString (13); - m_pTypeInfo->nMinimumScale = xRow->getShort (14); - m_pTypeInfo->nMaximumScale = xRow->getShort (15); - m_pTypeInfo->nNumPrecRadix = xRow->getInt (18); + + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->nPrecision = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->aLiteralPrefix = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->aLiteralSuffix = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->aCreateParams = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->bNullable = (sal_Int32)aValue == ColumnValue::NULLABLE; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->bCaseSensitive = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->nSearchType = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->bUnsigned = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->bCurrency = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->bAutoIncrement = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->aLocalTypeName = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->nMinimumScale = aValue; + ++nPos; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->nMaximumScale = aValue; + nPos = 18; + aValue.fill(nPos,aTypes[nPos],xRow); + m_pTypeInfo->nNumPrecRadix = aValue; + + // check if values are less than zero like it happens in a oracle jdbc driver + if( m_pTypeInfo->nPrecision < 0) + m_pTypeInfo->nPrecision = 0; + if( m_pTypeInfo->nMinimumScale < 0) + m_pTypeInfo->nMinimumScale = 0; + if( m_pTypeInfo->nMaximumScale < 0) + m_pTypeInfo->nMaximumScale = 0; + if( m_pTypeInfo->nNumPrecRadix < 0) + m_pTypeInfo->nNumPrecRadix = 10; break; } } @@ -399,6 +461,7 @@ { OSL_ENSURE((m_nColumnPos) < static_cast<sal_Int32>(m_vColumns.size()),"Illegal index for vector"); + OSL_ENSURE(m_vColumns[m_nColumnPos].first < static_cast<sal_Int32>(m_vFormatKey.size()),"Illegal index for vector"); m_vFormatKey[m_vColumns[m_nColumnPos].first] = nFormat; // wird sp"ater f"ur die Column gebraucht switch(nType) { @@ -722,6 +785,23 @@ } return bError; +} +//--------------------------------------------------------------------------------- +void ODatabaseExport::showErrorDialog(const ::com::sun::star::sdbc::SQLException& e) +{ + if(!m_bDontAskAgain) + { + String aMsg(e.Message); + aMsg += '\n'; + aMsg += String(ModuleRes(STR_QRY_CONTINUE)); + OSQLMessageBox aBox(NULL, String(ModuleRes(STR_STAT_WARNING)), + aMsg, WB_YES_NO | WB_DEF_NO, OSQLMessageBox::Warning); + + if (aBox.Execute() == RET_YES) + m_bDontAskAgain = TRUE; + else + m_bError = TRUE; + } // if(!m_bDontAskAgain) } // ----------------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
