1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_dbaccess.hxx"
26*b1cdbd2cSJim Jagielski #ifndef DBAUI_QUERYORDER_HRC
27*b1cdbd2cSJim Jagielski #include "queryorder.hrc"
28*b1cdbd2cSJim Jagielski #endif
29*b1cdbd2cSJim Jagielski #ifndef DBAUI_QUERYORDER_HXX
30*b1cdbd2cSJim Jagielski #include "queryorder.hxx"
31*b1cdbd2cSJim Jagielski #endif
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
34*b1cdbd2cSJim Jagielski #include "dbustrings.hrc"
35*b1cdbd2cSJim Jagielski #endif
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDB_XSINGLESELECTQUERYCOMPOSER_HPP_
38*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
39*b1cdbd2cSJim Jagielski #endif
40*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBC_COLUMNSEARCH_HPP_
41*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/ColumnSearch.hpp>
42*b1cdbd2cSJim Jagielski #endif
43*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
44*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp>
45*b1cdbd2cSJim Jagielski #endif
46*b1cdbd2cSJim Jagielski #ifndef _TOOLS_DEBUG_HXX
47*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
48*b1cdbd2cSJim Jagielski #endif
49*b1cdbd2cSJim Jagielski #ifndef _DBAUI_MODULE_DBU_HXX_
50*b1cdbd2cSJim Jagielski #include "moduledbu.hxx"
51*b1cdbd2cSJim Jagielski #endif
52*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_PARSE_SQLITERATOR_HXX_
53*b1cdbd2cSJim Jagielski #include <connectivity/sqliterator.hxx>
54*b1cdbd2cSJim Jagielski #endif
55*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_DBTOOLS_HXX_
56*b1cdbd2cSJim Jagielski #include <connectivity/dbtools.hxx>
57*b1cdbd2cSJim Jagielski #endif
58*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_EXTRACT_HXX_
59*b1cdbd2cSJim Jagielski #include <comphelper/extract.hxx>
60*b1cdbd2cSJim Jagielski #endif
61*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
62*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
63*b1cdbd2cSJim Jagielski #endif
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski #ifndef TOOLS_DIAGNOSE_EX_H
66*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h>
67*b1cdbd2cSJim Jagielski #endif
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski #include <algorithm>
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski using namespace dbaui;
73*b1cdbd2cSJim Jagielski using namespace connectivity;
74*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
75*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
76*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
77*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdb;
78*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdbc;
79*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdbcx;
80*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
81*b1cdbd2cSJim Jagielski 
DBG_NAME(DlgOrderCrit)82*b1cdbd2cSJim Jagielski DBG_NAME(DlgOrderCrit)
83*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
84*b1cdbd2cSJim Jagielski DlgOrderCrit::DlgOrderCrit(	Window * pParent,
85*b1cdbd2cSJim Jagielski 							const Reference< XConnection>& _rxConnection,
86*b1cdbd2cSJim Jagielski 							const Reference< XSingleSelectQueryComposer >& _rxComposer,
87*b1cdbd2cSJim Jagielski 							const Reference< XNameAccess>& _rxCols)
88*b1cdbd2cSJim Jagielski 			 :ModalDialog( pParent, ModuleRes(DLG_ORDERCRIT) )
89*b1cdbd2cSJim Jagielski 			,aLB_ORDERFIELD1(	this, ModuleRes( LB_ORDERFIELD1 ) )
90*b1cdbd2cSJim Jagielski 			,aLB_ORDERVALUE1(	this, ModuleRes( LB_ORDERVALUE1 ) )
91*b1cdbd2cSJim Jagielski 			,aLB_ORDERFIELD2(	this, ModuleRes( LB_ORDERFIELD2 ) )
92*b1cdbd2cSJim Jagielski 			,aLB_ORDERVALUE2(	this, ModuleRes( LB_ORDERVALUE2 ) )
93*b1cdbd2cSJim Jagielski 			,aLB_ORDERFIELD3(	this, ModuleRes( LB_ORDERFIELD3 ) )
94*b1cdbd2cSJim Jagielski 			,aLB_ORDERVALUE3(	this, ModuleRes( LB_ORDERVALUE3 ) )
95*b1cdbd2cSJim Jagielski 			,aFT_ORDERFIELD(	this, ModuleRes( FT_ORDERFIELD ) )
96*b1cdbd2cSJim Jagielski 			,aFT_ORDERAFTER1(	this, ModuleRes( FT_ORDERAFTER1 ) )
97*b1cdbd2cSJim Jagielski 			,aFT_ORDERAFTER2(	this, ModuleRes( FT_ORDERAFTER2 ) )
98*b1cdbd2cSJim Jagielski 			,aFT_ORDEROPER(		this, ModuleRes( FT_ORDEROPER ) )
99*b1cdbd2cSJim Jagielski 			,aFT_ORDERDIR(		this, ModuleRes( FT_ORDERDIR ) )
100*b1cdbd2cSJim Jagielski 			,aBT_OK(			this, ModuleRes( BT_OK ) )
101*b1cdbd2cSJim Jagielski 			,aBT_CANCEL(		this, ModuleRes( BT_CANCEL ) )
102*b1cdbd2cSJim Jagielski 			,aBT_HELP(			this, ModuleRes( BT_HELP ) )
103*b1cdbd2cSJim Jagielski             ,aFL_ORDER(         this, ModuleRes( FL_ORDER ) )
104*b1cdbd2cSJim Jagielski 			,aSTR_NOENTRY(		ModuleRes( STR_NOENTRY ) )
105*b1cdbd2cSJim Jagielski 			,m_xQueryComposer( _rxComposer )
106*b1cdbd2cSJim Jagielski 			,m_xColumns(_rxCols)
107*b1cdbd2cSJim Jagielski 			,m_xConnection(_rxConnection)
108*b1cdbd2cSJim Jagielski {
109*b1cdbd2cSJim Jagielski 	DBG_CTOR(DlgOrderCrit,NULL);
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski     AllSettings aSettings( GetSettings() );
112*b1cdbd2cSJim Jagielski     StyleSettings aStyle( aSettings.GetStyleSettings() );
113*b1cdbd2cSJim Jagielski     aStyle.SetAutoMnemonic( sal_False );
114*b1cdbd2cSJim Jagielski     aSettings.SetStyleSettings( aStyle );
115*b1cdbd2cSJim Jagielski     SetSettings( aSettings );
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski 	m_aColumnList[0] = &aLB_ORDERFIELD1;
118*b1cdbd2cSJim Jagielski 	m_aColumnList[1] = &aLB_ORDERFIELD2;
119*b1cdbd2cSJim Jagielski 	m_aColumnList[2] = &aLB_ORDERFIELD3;
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski 	m_aValueList[0] = &aLB_ORDERVALUE1;
122*b1cdbd2cSJim Jagielski 	m_aValueList[1] = &aLB_ORDERVALUE2;
123*b1cdbd2cSJim Jagielski 	m_aValueList[2] = &aLB_ORDERVALUE3;
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 	xub_StrLen j;
126*b1cdbd2cSJim Jagielski 	for(j=0 ; j < DOG_ROWS ; j++ )
127*b1cdbd2cSJim Jagielski 	{
128*b1cdbd2cSJim Jagielski 		m_aColumnList[j]->InsertEntry( aSTR_NOENTRY );
129*b1cdbd2cSJim Jagielski 	}
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski 	for( j=0 ; j < DOG_ROWS ; j++ )
132*b1cdbd2cSJim Jagielski 	{
133*b1cdbd2cSJim Jagielski 		m_aColumnList[j]->SelectEntryPos(0);
134*b1cdbd2cSJim Jagielski 		m_aValueList[j]->SelectEntryPos(0);
135*b1cdbd2cSJim Jagielski 	}
136*b1cdbd2cSJim Jagielski 	try
137*b1cdbd2cSJim Jagielski 	{
138*b1cdbd2cSJim Jagielski 		// ... sowie auch die restlichen Felder
139*b1cdbd2cSJim Jagielski 		Sequence< ::rtl::OUString> aNames = m_xColumns->getElementNames();
140*b1cdbd2cSJim Jagielski 		const ::rtl::OUString* pIter = aNames.getConstArray();
141*b1cdbd2cSJim Jagielski 		const ::rtl::OUString* pEnd   = pIter + aNames.getLength();
142*b1cdbd2cSJim Jagielski 		Reference<XPropertySet> xColumn;
143*b1cdbd2cSJim Jagielski 		for(;pIter != pEnd;++pIter)
144*b1cdbd2cSJim Jagielski 		{
145*b1cdbd2cSJim Jagielski 			xColumn.set(m_xColumns->getByName(*pIter),UNO_QUERY);
146*b1cdbd2cSJim Jagielski 			OSL_ENSURE(xColumn.is(),"Column is null!");
147*b1cdbd2cSJim Jagielski 			if ( xColumn.is() )
148*b1cdbd2cSJim Jagielski 			{
149*b1cdbd2cSJim Jagielski 				sal_Int32 nDataType = 0;
150*b1cdbd2cSJim Jagielski 				xColumn->getPropertyValue(PROPERTY_TYPE) >>= nDataType;
151*b1cdbd2cSJim Jagielski 				sal_Int32 eColumnSearch = dbtools::getSearchColumnFlag(m_xConnection,nDataType);
152*b1cdbd2cSJim Jagielski 				if(eColumnSearch != ColumnSearch::NONE)
153*b1cdbd2cSJim Jagielski 				{
154*b1cdbd2cSJim Jagielski 					for( j=0 ; j < DOG_ROWS ; j++ )
155*b1cdbd2cSJim Jagielski 					{
156*b1cdbd2cSJim Jagielski 						m_aColumnList[j]->InsertEntry(*pIter);
157*b1cdbd2cSJim Jagielski 					}
158*b1cdbd2cSJim Jagielski 				}
159*b1cdbd2cSJim Jagielski 			}
160*b1cdbd2cSJim Jagielski 		}
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 		m_sOrgOrder = m_xQueryComposer->getOrder();
163*b1cdbd2cSJim Jagielski         impl_initializeOrderList_nothrow();
164*b1cdbd2cSJim Jagielski 	}
165*b1cdbd2cSJim Jagielski 	catch(const Exception&)
166*b1cdbd2cSJim Jagielski 	{
167*b1cdbd2cSJim Jagielski         DBG_UNHANDLED_EXCEPTION();
168*b1cdbd2cSJim Jagielski 	}
169*b1cdbd2cSJim Jagielski 	EnableLines();
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski 	aLB_ORDERFIELD1.SetSelectHdl(LINK(this,DlgOrderCrit,FieldListSelectHdl));
172*b1cdbd2cSJim Jagielski 	aLB_ORDERFIELD2.SetSelectHdl(LINK(this,DlgOrderCrit,FieldListSelectHdl));
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski 	FreeResource();
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski }
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski #define LbText(x)		((x).GetSelectEntry())
181*b1cdbd2cSJim Jagielski #define LbPos(x)		((x).GetSelectEntryPos())
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
~DlgOrderCrit()184*b1cdbd2cSJim Jagielski DlgOrderCrit::~DlgOrderCrit()
185*b1cdbd2cSJim Jagielski {
186*b1cdbd2cSJim Jagielski 	DBG_DTOR(DlgOrderCrit,NULL);
187*b1cdbd2cSJim Jagielski }
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
190*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_START( DlgOrderCrit, FieldListSelectHdl, ListBox *, /*pListBox*/ )
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(DlgOrderCrit,NULL);
193*b1cdbd2cSJim Jagielski 	EnableLines();
194*b1cdbd2cSJim Jagielski 	return 0;
195*b1cdbd2cSJim Jagielski }
IMPL_LINK_INLINE_END(DlgOrderCrit,FieldListSelectHdl,ListBox *,pListBox)196*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_END( DlgOrderCrit, FieldListSelectHdl, ListBox *, pListBox )
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
199*b1cdbd2cSJim Jagielski void DlgOrderCrit::impl_initializeOrderList_nothrow()
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski     try
202*b1cdbd2cSJim Jagielski     {
203*b1cdbd2cSJim Jagielski         const ::rtl::OUString sNameProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) );
204*b1cdbd2cSJim Jagielski         const ::rtl::OUString sAscendingProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsAscending" ) );
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski         Reference< XIndexAccess > xOrderColumns( m_xQueryComposer->getOrderColumns(), UNO_QUERY_THROW );
207*b1cdbd2cSJim Jagielski         sal_Int32 nColumns = xOrderColumns->getCount();
208*b1cdbd2cSJim Jagielski         if ( nColumns > DOG_ROWS )
209*b1cdbd2cSJim Jagielski             nColumns = DOG_ROWS;
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski         for ( sal_Int32 i = 0; i < nColumns; ++i )
212*b1cdbd2cSJim Jagielski         {
213*b1cdbd2cSJim Jagielski             Reference< XPropertySet > xColumn( xOrderColumns->getByIndex( i ), UNO_QUERY_THROW );
214*b1cdbd2cSJim Jagielski 
215*b1cdbd2cSJim Jagielski             ::rtl::OUString sColumnName;
216*b1cdbd2cSJim Jagielski             sal_Bool        bIsAscending( sal_True );
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski             xColumn->getPropertyValue( sNameProperty ) >>= sColumnName;
219*b1cdbd2cSJim Jagielski             xColumn->getPropertyValue( sAscendingProperty ) >>= bIsAscending;
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski             m_aColumnList[i]->SelectEntry( sColumnName );
222*b1cdbd2cSJim Jagielski             m_aValueList[i]->SelectEntryPos( bIsAscending ? 0 : 1 );
223*b1cdbd2cSJim Jagielski         }
224*b1cdbd2cSJim Jagielski     }
225*b1cdbd2cSJim Jagielski     catch( const Exception& )
226*b1cdbd2cSJim Jagielski     {
227*b1cdbd2cSJim Jagielski     	DBG_UNHANDLED_EXCEPTION();
228*b1cdbd2cSJim Jagielski     }
229*b1cdbd2cSJim Jagielski }
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
EnableLines()232*b1cdbd2cSJim Jagielski void DlgOrderCrit::EnableLines()
233*b1cdbd2cSJim Jagielski {
234*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(DlgOrderCrit,NULL);
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski     if ( aLB_ORDERFIELD1.GetSelectEntryPos() == 0 )
237*b1cdbd2cSJim Jagielski     {
238*b1cdbd2cSJim Jagielski 		aLB_ORDERFIELD2.Disable();
239*b1cdbd2cSJim Jagielski 		aLB_ORDERVALUE2.Disable();
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski         aLB_ORDERFIELD2.SelectEntryPos( 0 );
242*b1cdbd2cSJim Jagielski 		aLB_ORDERVALUE2.SelectEntryPos( 0 );
243*b1cdbd2cSJim Jagielski     }
244*b1cdbd2cSJim Jagielski     else
245*b1cdbd2cSJim Jagielski     {
246*b1cdbd2cSJim Jagielski 		aLB_ORDERFIELD2.Enable();
247*b1cdbd2cSJim Jagielski 		aLB_ORDERVALUE2.Enable();
248*b1cdbd2cSJim Jagielski     }
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski     if ( aLB_ORDERFIELD2.GetSelectEntryPos() == 0 )
251*b1cdbd2cSJim Jagielski     {
252*b1cdbd2cSJim Jagielski 		aLB_ORDERFIELD3.Disable();
253*b1cdbd2cSJim Jagielski 		aLB_ORDERVALUE3.Disable();
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski         aLB_ORDERFIELD3.SelectEntryPos( 0 );
256*b1cdbd2cSJim Jagielski 		aLB_ORDERVALUE3.SelectEntryPos( 0 );
257*b1cdbd2cSJim Jagielski     }
258*b1cdbd2cSJim Jagielski     else
259*b1cdbd2cSJim Jagielski     {
260*b1cdbd2cSJim Jagielski 		aLB_ORDERFIELD3.Enable();
261*b1cdbd2cSJim Jagielski 		aLB_ORDERVALUE3.Enable();
262*b1cdbd2cSJim Jagielski     }
263*b1cdbd2cSJim Jagielski }
264*b1cdbd2cSJim Jagielski 
265*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
GetOrderList() const266*b1cdbd2cSJim Jagielski ::rtl::OUString DlgOrderCrit::GetOrderList( ) const
267*b1cdbd2cSJim Jagielski {
268*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(DlgOrderCrit,NULL);
269*b1cdbd2cSJim Jagielski 	Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
270*b1cdbd2cSJim Jagielski 	::rtl::OUString sQuote	= xMetaData.is() ? xMetaData->getIdentifierQuoteString() : ::rtl::OUString();
271*b1cdbd2cSJim Jagielski 	static const ::rtl::OUString sDESC = ::rtl::OUString::createFromAscii(" DESC ");
272*b1cdbd2cSJim Jagielski 	static const ::rtl::OUString sASC  = ::rtl::OUString::createFromAscii(" ASC ");
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski 	Reference< XNameAccess> xColumns = Reference< XColumnsSupplier >(m_xQueryComposer,UNO_QUERY)->getColumns();
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski 	::rtl::OUString sOrder;
277*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i=0 ; i<DOG_ROWS; i++ )
278*b1cdbd2cSJim Jagielski 	{
279*b1cdbd2cSJim Jagielski 		if(m_aColumnList[i]->GetSelectEntryPos() != 0)
280*b1cdbd2cSJim Jagielski 		{
281*b1cdbd2cSJim Jagielski 			if(sOrder.getLength())
282*b1cdbd2cSJim Jagielski 				sOrder += ::rtl::OUString::createFromAscii(",");
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski 			String sName = m_aColumnList[i]->GetSelectEntry();
285*b1cdbd2cSJim Jagielski 			try
286*b1cdbd2cSJim Jagielski 			{
287*b1cdbd2cSJim Jagielski 				sal_Bool bFunction = sal_False;
288*b1cdbd2cSJim Jagielski 				Reference< XPropertySet > xColumn;
289*b1cdbd2cSJim Jagielski 				if ( xColumns.is() && xColumns->hasByName( sName ) && (xColumns->getByName( sName ) >>= xColumn) && xColumn.is() )
290*b1cdbd2cSJim Jagielski 				{
291*b1cdbd2cSJim Jagielski 					if ( xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_REALNAME) )
292*b1cdbd2cSJim Jagielski 					{
293*b1cdbd2cSJim Jagielski 						::rtl::OUString sRealName;
294*b1cdbd2cSJim Jagielski 						xColumn->getPropertyValue(PROPERTY_REALNAME)	>>= sRealName;
295*b1cdbd2cSJim Jagielski 						sName = sRealName;
296*b1cdbd2cSJim Jagielski 						static ::rtl::OUString sAgg(RTL_CONSTASCII_USTRINGPARAM("AggregateFunction"));
297*b1cdbd2cSJim Jagielski 						static ::rtl::OUString sFunction(RTL_CONSTASCII_USTRINGPARAM("Function"));
298*b1cdbd2cSJim Jagielski 						if ( xColumn->getPropertySetInfo()->hasPropertyByName(sFunction) )
299*b1cdbd2cSJim Jagielski 							xColumn->getPropertyValue(sFunction) >>= bFunction;
300*b1cdbd2cSJim Jagielski 					}
301*b1cdbd2cSJim Jagielski 				}
302*b1cdbd2cSJim Jagielski 				if ( bFunction )
303*b1cdbd2cSJim Jagielski 					sOrder += sName;
304*b1cdbd2cSJim Jagielski 				else
305*b1cdbd2cSJim Jagielski 					sOrder += ::dbtools::quoteName(sQuote,sName);
306*b1cdbd2cSJim Jagielski 			}
307*b1cdbd2cSJim Jagielski 			catch(Exception)
308*b1cdbd2cSJim Jagielski 			{
309*b1cdbd2cSJim Jagielski 			}
310*b1cdbd2cSJim Jagielski 			if(m_aValueList[i]->GetSelectEntryPos())
311*b1cdbd2cSJim Jagielski 				sOrder += sDESC;
312*b1cdbd2cSJim Jagielski 			else
313*b1cdbd2cSJim Jagielski 				sOrder += sASC;
314*b1cdbd2cSJim Jagielski 		}
315*b1cdbd2cSJim Jagielski 	}
316*b1cdbd2cSJim Jagielski 	return sOrder;
317*b1cdbd2cSJim Jagielski }
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
BuildOrderPart()320*b1cdbd2cSJim Jagielski void DlgOrderCrit::BuildOrderPart()
321*b1cdbd2cSJim Jagielski {
322*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(DlgOrderCrit,NULL);
323*b1cdbd2cSJim Jagielski 	m_xQueryComposer->setOrder(GetOrderList());
324*b1cdbd2cSJim Jagielski }
325*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski 
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 
331