diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2012-08-22 14:25:01 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2012-08-22 14:58:39 -0400 |
commit | f4ed9a5adbea3de88870ff4f5cb202bd606e0746 (patch) | |
tree | e380bd5d77b2d55da48d04ed7ad36d265e4c859b /sc | |
parent | 1db66c2a1a8ad5a60c68b09ddacc1bb6e021299f (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.cxx | 9 |
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()); |