summaryrefslogtreecommitdiff
path: root/forms
diff options
context:
space:
mode:
authorFrank Schönheit <fs@openoffice.org>2010-02-25 12:47:23 +0000
committerFrank Schönheit <fs@openoffice.org>2010-02-25 12:47:23 +0000
commit88df38f41b5f6317d1b9faeafe846bb4c6f8753b (patch)
tree290b883496bb4e7e140d44380054796429d1fc5b /forms
parent51a5e6160e830a2acd2aa4d44c0340d74a808311 (diff)
#i109081# translateDbColumnToControlValue: force the current value to be the same type as our bound field (if we have one), since the values we will compare it with will also have this type
Diffstat (limited to 'forms')
-rw-r--r--forms/source/component/ListBox.cxx22
-rw-r--r--forms/source/component/ListBox.hxx5
2 files changed, 14 insertions, 13 deletions
diff --git a/forms/source/component/ListBox.cxx b/forms/source/component/ListBox.cxx
index 0aa90d9919cf..88135c040d71 100644
--- a/forms/source/component/ListBox.cxx
+++ b/forms/source/component/ListBox.cxx
@@ -41,7 +41,6 @@
/** === begin UNO includes === **/
#include <com/sun/star/util/XNumberFormatTypes.hpp>
#include <com/sun/star/sdbc/XRowSet.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
#include <com/sun/star/sdb/XQueriesSupplier.hpp>
@@ -167,7 +166,7 @@ namespace frm
,OErrorBroadcaster( OComponentHelper::rBHelper )
,m_aListRowSet( getContext() )
,m_nNULLPos(-1)
- ,m_bBoundComponent(sal_False)
+ ,m_nBoundColumnType( DataType::SQLNULL )
{
DBG_CTOR(OListBoxModel,NULL);
@@ -189,7 +188,7 @@ namespace frm
,m_aBoundValues( _pOriginal->m_aBoundValues )
,m_aDefaultSelectSeq( _pOriginal->m_aDefaultSelectSeq )
,m_nNULLPos(-1)
- ,m_bBoundComponent(sal_False)
+ ,m_nBoundColumnType( DataType::SQLNULL )
{
DBG_CTOR(OListBoxModel,NULL);
}
@@ -629,7 +628,7 @@ namespace frm
DBG_ASSERT( !hasExternalListSource(), "OListBoxModel::loadData: cannot load from DB when I have an external list source!" );
m_nNULLPos = -1;
- m_bBoundComponent = sal_False;
+ m_nBoundColumnType = DataType::SQLNULL;
// pre-requisites:
// PRE1: connection
@@ -832,20 +831,19 @@ namespace frm
::dbtools::FormattedColumnValue aValueFormatter( getContext(), m_xCursor, xDataField );
// Feld der BoundColumn des ResultSets holen
- sal_Int32 nBoundColumnType = DataType::SQLNULL;
+ m_nBoundColumnType = DataType::SQLNULL;
if ( ( nBoundColumn > 0 ) && m_xColumn.is() )
{ // don't look for a bound column if we're not connected to a field
try
{
Reference< XPropertySet > xBoundField( xColumns->getByIndex( nBoundColumn ), UNO_QUERY_THROW );
- OSL_VERIFY( xBoundField->getPropertyValue( ::rtl::OUString::createFromAscii( "Type" ) ) >>= nBoundColumnType );
+ OSL_VERIFY( xBoundField->getPropertyValue( ::rtl::OUString::createFromAscii( "Type" ) ) >>= m_nBoundColumnType );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION();
}
}
- m_bBoundComponent = ( nBoundColumnType != DataType::SQLNULL );
// Ist die LB an ein Feld gebunden und sind Leereintraege zulaessig
// dann wird die Position fuer einen Leereintrag gemerkt
@@ -860,9 +858,9 @@ namespace frm
aStr = aValueFormatter.getFormattedValue();
aDisplayList.push_back( aStr );
- if ( m_bBoundComponent )
+ if ( impl_hasBoundComponent() )
{
- aBoundValue.fill( nBoundColumn + 1, nBoundColumnType, xCursorRow );
+ aBoundValue.fill( nBoundColumn + 1, m_nBoundColumnType, xCursorRow );
aValueList.push_back( aBoundValue );
}
@@ -907,7 +905,7 @@ namespace frm
// NULL eintrag hinzufuegen
if (bUseNULL && m_nNULLPos == -1)
{
- if ( m_bBoundComponent )
+ if ( impl_hasBoundComponent() )
aValueList.insert( aValueList.begin(), ORowSetValue() );
aDisplayList.insert( aDisplayList.begin(), ORowSetValue( ::rtl::OUString() ) );
@@ -940,7 +938,7 @@ namespace frm
{
ValueList().swap(m_aBoundValues);
m_nNULLPos = -1;
- m_bBoundComponent = sal_False;
+ m_nBoundColumnType = DataType::SQLNULL;
if ( !hasExternalListSource() )
setFastPropertyValue( PROPERTY_ID_STRINGITEMLIST, makeAny( StringSequence() ) );
@@ -1035,7 +1033,7 @@ namespace frm
Sequence< sal_Int16 > aSelectionIndicies;
ORowSetValue aCurrentValue;
- aCurrentValue.fill( getFieldType(), m_xColumn );
+ aCurrentValue.fill( impl_hasBoundComponent() ? m_nBoundColumnType : getFieldType(), m_xColumn );
// reset selection for NULL values
if ( aCurrentValue.isNull() )
diff --git a/forms/source/component/ListBox.hxx b/forms/source/component/ListBox.hxx
index d2af81c1c52c..04db6069d89e 100644
--- a/forms/source/component/ListBox.hxx
+++ b/forms/source/component/ListBox.hxx
@@ -41,6 +41,7 @@
#include <com/sun/star/awt/XFocusListener.hpp>
#include <com/sun/star/awt/XListBox.hpp>
#include <com/sun/star/form/XChangeBroadcaster.hpp>
+#include <com/sun/star/sdbc/DataType.hpp>
/** === end UNO includes === **/
#include <comphelper/asyncnotification.hxx>
@@ -82,7 +83,7 @@ class OListBoxModel :public OBoundControlModel
// </properties>
sal_Int16 m_nNULLPos; // position of the NULL value in our list
- sal_Bool m_bBoundComponent : 1;
+ sal_Int32 m_nBoundColumnType;
private:
::connectivity::ORowSetValue getFirstSelectedValue() const;
@@ -177,6 +178,8 @@ private:
void impl_refreshDbEntryList( bool _bForce );
ValueList impl_getValues() const;
+
+ bool impl_hasBoundComponent() const { return m_nBoundColumnType != ::com::sun::star::sdbc::DataType::SQLNULL; }
};
//==================================================================