View | Details | Raw Unified | Return to issue 85305
Collapse All | Expand All

(-)sc/inc/document.hxx (-1 / +4 lines)
Lines 857-863 Link Here
857
	USHORT			GetErrCode( const ScAddress& ) const;
857
	USHORT			GetErrCode( const ScAddress& ) const;
858
858
859
	void			GetDataArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
859
	void			GetDataArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
860
									SCCOL& rEndCol, SCROW& rEndRow, BOOL bIncludeOld );
860
									SCCOL& rEndCol, SCROW& rEndRow, BOOL bIncludeOld ) const;
861
	BOOL			GetCellArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
861
	BOOL			GetCellArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
862
	BOOL			GetTableArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
862
	BOOL			GetTableArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
863
	BOOL			GetPrintArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow,
863
	BOOL			GetPrintArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow,
Lines 1365-1370 Link Here
1365
										SCTAB nTab, ScQueryParam& rQueryParam );
1365
										SCTAB nTab, ScQueryParam& rQueryParam );
1366
	void 			GetUpperCellString(SCCOL nCol, SCROW nRow, SCTAB nTab, String& rStr);
1366
	void 			GetUpperCellString(SCCOL nCol, SCROW nRow, SCTAB nTab, String& rStr);
1367
1367
1368
    /** Expands the database range in a presense of new data rows. */
1369
    void            ExpandDBDataRows(ScDBData& rDBData) const;
1370
1368
	BOOL			GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
1371
	BOOL			GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
1369
								TypedStrCollection& rStrings, bool bFilter = false );
1372
								TypedStrCollection& rStrings, bool bFilter = false );
1370
	SC_DLLPUBLIC BOOL			GetFilterEntriesArea( SCCOL nCol, SCROW nStartRow, SCROW nEndRow,
1373
	SC_DLLPUBLIC BOOL			GetFilterEntriesArea( SCCOL nCol, SCROW nStartRow, SCROW nEndRow,
(-)sc/inc/table.hxx (-1 / +1 lines)
Lines 355-361 Link Here
355
						SCCOL nStartCol, SCROW nStartRow, SCCOL& rEndCol, SCROW nEndRow );
355
						SCCOL nStartCol, SCROW nStartRow, SCCOL& rEndCol, SCROW nEndRow );
356
356
357
	void		GetDataArea( SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, SCROW& rEndRow,
357
	void		GetDataArea( SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, SCROW& rEndRow,
358
								BOOL bIncludeOld );
358
								BOOL bIncludeOld ) const;
359
359
360
	SCSIZE	    GetEmptyLinesInBlock( SCCOL nStartCol, SCROW nStartRow,
360
	SCSIZE	    GetEmptyLinesInBlock( SCCOL nStartCol, SCROW nStartRow,
361
										SCCOL nEndCol, SCROW nEndRow, ScDirection eDir );
361
										SCCOL nEndCol, SCROW nEndRow, ScDirection eDir );
(-)sc/source/core/data/documen3.cxx (+15 lines)
Lines 1337-1342 Link Here
1337
//	GetFilterEntries - Eintraege fuer AutoFilter-Listbox
1337
//	GetFilterEntries - Eintraege fuer AutoFilter-Listbox
1338
//
1338
//
1339
1339
1340
void ScDocument::ExpandDBDataRows(ScDBData& rDBData) const
1341
{
1342
    SCCOL nCol1, nCol2;
1343
    SCROW nRow1, nRow2;
1344
    SCTAB nTab;
1345
    rDBData.GetArea(nTab, nCol1, nRow1, nCol2, nRow2);
1346
    SCCOL nCol1a = nCol1, nCol2a = nCol2;
1347
    SCROW nRow1a = nRow1, nRow2a = nRow2;
1348
    GetDataArea(nTab, nCol1a, nRow1a, nCol2a, nRow2a, false);
1349
    if (nRow2a > nRow2)
1350
        // resize only when the data size grows.
1351
        rDBData.SetArea(nTab, nCol1, nRow1, nCol2, nRow2a);
1352
}
1353
1340
BOOL ScDocument::GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, TypedStrCollection& rStrings, bool bFilter )
1354
BOOL ScDocument::GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, TypedStrCollection& rStrings, bool bFilter )
1341
{
1355
{
1342
	if ( ValidTab(nTab) && pTab[nTab] && pDBCollection )
1356
	if ( ValidTab(nTab) && pTab[nTab] && pDBCollection )
Lines 1344-1349 Link Here
1344
		ScDBData* pDBData = pDBCollection->GetDBAtCursor(nCol, nRow, nTab, FALSE);	//!??
1358
		ScDBData* pDBData = pDBCollection->GetDBAtCursor(nCol, nRow, nTab, FALSE);	//!??
1345
		if (pDBData)
1359
		if (pDBData)
1346
		{
1360
		{
1361
            ExpandDBDataRows(*pDBData);
1347
			SCTAB nAreaTab;
1362
			SCTAB nAreaTab;
1348
			SCCOL nStartCol;
1363
			SCCOL nStartCol;
1349
			SCROW nStartRow;
1364
			SCROW nStartRow;
(-)sc/source/core/data/document.cxx (-1 / +1 lines)
Lines 590-596 Link Here
590
//	zusammenhaengender Bereich
590
//	zusammenhaengender Bereich
591
591
592
void ScDocument::GetDataArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
592
void ScDocument::GetDataArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
593
								SCCOL& rEndCol, SCROW& rEndRow, BOOL bIncludeOld )
593
								SCCOL& rEndCol, SCROW& rEndRow, BOOL bIncludeOld ) const
594
{
594
{
595
	if (VALIDTAB(nTab))
595
	if (VALIDTAB(nTab))
596
		if (pTab[nTab])
596
		if (pTab[nTab])
(-)sc/source/core/data/table1.cxx (-1 / +1 lines)
Lines 619-625 Link Here
619
}
619
}
620
620
621
void ScTable::GetDataArea( SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, SCROW& rEndRow,
621
void ScTable::GetDataArea( SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, SCROW& rEndRow,
622
							BOOL bIncludeOld )
622
							BOOL bIncludeOld ) const
623
{
623
{
624
	BOOL bLeft       = FALSE;
624
	BOOL bLeft       = FALSE;
625
	BOOL bRight  = FALSE;
625
	BOOL bRight  = FALSE;
(-)sc/source/ui/inc/dbfunc.hxx (-1 / +1 lines)
Lines 85-91 Link Here
85
	void			GotoDBArea( const String& rDBName );
85
	void			GotoDBArea( const String& rDBName );
86
86
87
					// DB-Bereich vom Cursor
87
					// DB-Bereich vom Cursor
88
	ScDBData* 		GetDBData( BOOL bMarkArea = TRUE, ScGetDBMode eMode = SC_DB_MAKE );
88
    ScDBData* 		GetDBData( bool bMarkArea = true, ScGetDBMode eMode = SC_DB_MAKE, bool bExpandRows = false );
89
89
90
	void			NotifyCloseDbNameDlg( const ScDBCollection& rNewColl, const List& rDelAreaList );
90
	void			NotifyCloseDbNameDlg( const ScDBCollection& rNewColl, const List& rDelAreaList );
91
91
(-)sc/source/ui/view/dbfunc.cxx (-2 / +11 lines)
Lines 112-118 Link Here
112
112
113
//	aktuellen Datenbereich fuer Sortieren / Filtern suchen
113
//	aktuellen Datenbereich fuer Sortieren / Filtern suchen
114
114
115
ScDBData* ScDBFunc::GetDBData( BOOL bMark, ScGetDBMode eMode )
115
ScDBData* ScDBFunc::GetDBData( bool bMark, ScGetDBMode eMode, bool bExpandRows )
116
{
116
{
117
	ScDocShell* pDocSh = GetViewData()->GetDocShell();
117
	ScDocShell* pDocSh = GetViewData()->GetDocShell();
118
	ScDBData* pData = NULL;
118
	ScDBData* pData = NULL;
Lines 124-131 Link Here
124
					ScRange( GetViewData()->GetCurX(), GetViewData()->GetCurY(),
124
					ScRange( GetViewData()->GetCurX(), GetViewData()->GetCurY(),
125
							 GetViewData()->GetTabNo() ),
125
							 GetViewData()->GetTabNo() ),
126
					eMode, FALSE );
126
					eMode, FALSE );
127
    if (!pData)
128
        return NULL;
127
129
128
	if ( pData && bMark )
130
    if (bExpandRows && pData->GetName() != ScGlobal::GetRscString(STR_DB_NONAME))
131
    {
132
        // Dynamically expand rows to include any new data rows that are
133
        // immediately below the original range.
134
        GetViewData()->GetDocument()->ExpandDBDataRows(*pData);
135
    }
136
137
    if (bMark)
129
	{
138
	{
130
		ScRange aFound;
139
		ScRange aFound;
131
		pData->GetArea(aFound);
140
		pData->GetArea(aFound);
(-)sc/source/ui/view/tabvwshc.cxx (-2 / +2 lines)
Lines 194-200 Link Here
194
									 SCITEM_QUERYDATA,
194
									 SCITEM_QUERYDATA,
195
									 SCITEM_QUERYDATA );
195
									 SCITEM_QUERYDATA );
196
196
197
			ScDBData* pDBData = GetDBData();
197
            ScDBData* pDBData = GetDBData(true, SC_DB_MAKE, true);
198
			pDBData->GetQueryParam( aQueryParam );
198
			pDBData->GetQueryParam( aQueryParam );
199
199
200
			ScQueryItem aItem( SCITEM_QUERYDATA, GetViewData(), &aQueryParam );
200
			ScQueryItem aItem( SCITEM_QUERYDATA, GetViewData(), &aQueryParam );
Lines 219-225 Link Here
219
									 SCITEM_QUERYDATA,
219
									 SCITEM_QUERYDATA,
220
									 SCITEM_QUERYDATA );
220
									 SCITEM_QUERYDATA );
221
221
222
			ScDBData* pDBData = GetDBData();
222
            ScDBData* pDBData = GetDBData(true, SC_DB_MAKE, true);
223
			pDBData->GetQueryParam( aQueryParam );
223
			pDBData->GetQueryParam( aQueryParam );
224
224
225
			aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,
225
			aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,

Return to issue 85305