summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2012-08-22 14:25:01 -0400
committerMichael Meeks <michael.meeks@suse.com>2012-08-22 20:20:06 +0100
commita28d9cad672739cbf8dc6cf1f9db7d0f8becfee1 (patch)
tree8ce6df93409b3821aaac56f5b1b43186846b41ad
parentd632fa4d8fc6a42a58cb981865d6267d90951b69 (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 Signed-off-by: Michael Meeks <michael.meeks@suse.com>
-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 3299ba050372..a11db558b799 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());