summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2012-08-22 14:25:01 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2012-08-22 14:58:39 -0400
commitf4ed9a5adbea3de88870ff4f5cb202bd606e0746 (patch)
treee380bd5d77b2d55da48d04ed7ad36d265e4c859b /sc
parent1db66c2a1a8ad5a60c68b09ddacc1bb6e021299f (diff)
fdo#53640: Correctly cache source data coming from database backend.
It was due to a simple misplacement of nRow = 0. Each record was labeled row 0. No wonder it screws up the result badly. Change-Id: Ia94f42a62f98a9bd7c9d34df3606351bb487931b
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/data/dpcache.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/sc/source/core/data/dpcache.cxx b/sc/source/core/data/dpcache.cxx
index d04adf15d94f..ff8fc6e45494 100644
--- a/sc/source/core/data/dpcache.cxx
+++ b/sc/source/core/data/dpcache.cxx
@@ -461,24 +461,27 @@ bool ScDPCache::InitFromDataBase (const Reference<sdbc::XRowSet>& xRowSet, const
Reference<sdbc::XRow> xRow(xRowSet, UNO_QUERY_THROW);
std::vector<Bucket> aBuckets;
+ ScDPItemData aData;
for (sal_Int32 nCol = 0; nCol < mnColumnCount; ++nCol)
{
xRowSet->first();
- ScDPItemData aData;
aBuckets.clear();
Field& rField = maFields[nCol];
+ SCROW nRow = 0;
do
{
- SCROW nRow = 0;
short nFormatType = NUMBERFORMAT_UNDEFINED;
+ aData.SetEmpty();
getItemValue(*this, aData, xRow, aColTypes[nCol], nCol+1, rNullDate, nFormatType);
- aBuckets.push_back(Bucket(aData, 0, nRow++));
+ aBuckets.push_back(Bucket(aData, 0, nRow));
if (!aData.IsEmpty())
{
maEmptyRows.insert_back(nRow, nRow+1, false);
SvNumberFormatter* pFormatter = mpDoc->GetFormatTable();
rField.mnNumFormat = pFormatter ? pFormatter->GetStandardFormat(nFormatType) : 0;
}
+
+ ++nRow;
}
while (xRowSet->next());