summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2005-03-10 15:53:16 +0000
committerVladimir Glazounov <vg@openoffice.org>2005-03-10 15:53:16 +0000
commit51349b64a095a7598a5523e329d7a75a13728b85 (patch)
treebe3b2e17da308a3f5e31af97eb75927b757d7677 /dbaccess/source/ui
parent7d06a25f83a4b0a8ea1eb7728989054307922bbb (diff)
INTEGRATION: CWS dba24 (1.60.50); FILE MERGED
2005/02/21 08:28:20 oj 1.60.50.1: #i42522# check if entry must added when order crit behind current position
Diffstat (limited to 'dbaccess/source/ui')
-rw-r--r--dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx62
1 files changed, 38 insertions, 24 deletions
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index 65158fe7a0dc5..d01c44b3045e0 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: SelectionBrowseBox.cxx,v $
*
- * $Revision: 1.60 $
+ * $Revision: 1.61 $
*
- * last change: $Author: rt $ $Date: 2004-10-22 09:07:06 $
+ * last change: $Author: vg $ $Date: 2005-03-10 16:53:16 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -1767,7 +1767,7 @@ void OSelectionBrowseBox::CheckFreeColumns(USHORT& _rColumnPosition)
}
}
//------------------------------------------------------------------------------
-void OSelectionBrowseBox::AddGroupBy( const OTableFieldDescRef& rInfo )
+void OSelectionBrowseBox::AddGroupBy( const OTableFieldDescRef& rInfo , sal_uInt32 _nCurrentPos)
{
Reference< XConnection> xConnection = static_cast<OQueryController*>(getDesignView()->getController())->getConnection();
if(!xConnection.is())
@@ -1777,8 +1777,11 @@ void OSelectionBrowseBox::AddGroupBy( const OTableFieldDescRef& rInfo )
OTableFieldDescRef pEntry;
Reference<XDatabaseMetaData> xMeta = xConnection->getMetaData();
::comphelper::UStringMixEqual bCase(xMeta.is() && xMeta->storesMixedCaseQuotedIdentifiers());
- OTableFields::iterator aIter = getFields().begin();
- for(;aIter != getFields().end();++aIter)
+ sal_Bool bAppend = sal_False;
+
+ OTableFields& rFields = getFields();
+ OTableFields::iterator aIter = rFields.begin();
+ for(;aIter != rFields.end();++aIter)
{
pEntry = *aIter;
OSL_ENSURE(pEntry.isValid(),"OTableFieldDescRef was null!");
@@ -1790,19 +1793,26 @@ void OSelectionBrowseBox::AddGroupBy( const OTableFieldDescRef& rInfo )
bCase(aAlias,rInfo->GetAlias()) &&
pEntry->GetFunctionType() == rInfo->GetFunctionType())
{
- if ( pEntry->isNumericOrAggreateFunction() && rInfo->IsGroupBy() )
- pEntry->SetGroupBy(sal_False);
+ sal_uInt32 nPos = aIter - rFields.begin();
+ bAppend = _nCurrentPos > nPos;
+ if ( bAppend )
+ aIter = rFields.end();
else
{
- pEntry->SetGroupBy(rInfo->IsGroupBy());
- if(!m_bGroupByUnRelated && pEntry->IsGroupBy())
- pEntry->SetVisible(sal_True);
+ if ( pEntry->isNumericOrAggreateFunction() && rInfo->IsGroupBy() )
+ pEntry->SetGroupBy(sal_False);
+ else
+ {
+ pEntry->SetGroupBy(rInfo->IsGroupBy());
+ if(!m_bGroupByUnRelated && pEntry->IsGroupBy())
+ pEntry->SetVisible(sal_True);
+ }
}
break;
}
}
- if (aIter == getFields().end())
+ if (aIter == rFields.end())
{
OTableFieldDescRef pTmp = InsertField(rInfo, BROWSER_INVALIDID, sal_False, sal_False );
if ( (pTmp->isNumericOrAggreateFunction() && rInfo->IsGroupBy()) ) // das GroupBy wird bereits von rInfo "ubernommen
@@ -1874,21 +1884,21 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const S
}
//------------------------------------------------------------------------------
-void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrderDir eDir, sal_uInt16& nPos )
+void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrderDir eDir, sal_uInt32 _nCurrentPos)
{
Reference< XConnection> xConnection = static_cast<OQueryController*>(getDesignView()->getController())->getConnection();
if(!xConnection.is())
return;
DBG_CHKTHIS(OSelectionBrowseBox,NULL);
DBG_ASSERT(!rInfo->IsEmpty(),"AddOrder:: OTableFieldDescRef sollte nicht Empty sein!");
- // nPos merkt sich die Spalte in die Sortierung eingetragen wird,
- // da weitere Sortierungen nur dahinter abgelegt werden duerfen
OTableFieldDescRef pEntry;
Reference<XDatabaseMetaData> xMeta = xConnection->getMetaData();
::comphelper::UStringMixEqual bCase(xMeta.is() && xMeta->storesMixedCaseQuotedIdentifiers());
- OTableFields::iterator aIter = getFields().begin();
- for(;aIter != getFields().end();++aIter)
+ sal_Bool bAppend = sal_False;
+ OTableFields& rFields = getFields();
+ OTableFields::iterator aIter = rFields.begin();
+ for(;aIter != rFields.end();++aIter)
{
pEntry = *aIter;
::rtl::OUString aField = pEntry->GetField();
@@ -1897,25 +1907,29 @@ void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrde
if (bCase(aField,rInfo->GetField()) &&
bCase(aAlias,rInfo->GetAlias()))
{
- if(!m_bOrderByUnRelated)
- pEntry->SetVisible(sal_True);
- pEntry->SetOrderDir( eDir );
- nPos = aIter - getFields().begin();
+ sal_uInt32 nPos = aIter - rFields.begin();
+ bAppend = _nCurrentPos > nPos;
+ if ( bAppend )
+ aIter = rFields.end();
+ else
+ {
+ if ( !m_bOrderByUnRelated )
+ pEntry->SetVisible(sal_True);
+ pEntry->SetOrderDir( eDir );
+ }
break;
}
}
- if (aIter == getFields().end())
+ if (aIter == rFields.end())
{
OTableFieldDescRef pTmp = InsertField(rInfo, BROWSER_INVALIDID, sal_False, sal_False );
if(pTmp.isValid())
{
- if(!m_bOrderByUnRelated)
+ if ( !m_bOrderByUnRelated && !bAppend )
pTmp->SetVisible(sal_True);
pTmp->SetOrderDir( eDir );
}
-
- nPos = (sal_uInt16)( getFields().size()-1 );
}
}