Ik heb volgende query:
Als ik deze query uitvoer in m'n .NET applicatie op een SQL Server databank, met behulp van de SqlClient classes, dan krijg ik de verwachte resultaten.
Voer ik deze query echter uit in een .NET applicatie op een Access DB (met de OleDb classes), dan krijg ik foute resultaten.
Ik voer de query uit en loop met een OleDbDataReader over de resultaten, en vul een custom collectie met de resultaten van de query.
Het veld-type van tblCashflow.Amount is een decimal (zowel in sql server als in access). De data-reader leest dit als volgt uit:
Mbhv de SqlClient krijg ik de juiste resultaten, met de OleDb classes krijg ik in bepaalde gevallen een 0 terug, en in andere gevallen 241.900 (ook dat is fout) terug.
Het vreemde is dat, als ik die query direct uitvoer in Access, ik wel de juiste resultaten terugkrijg. Ik denk dus dat het probleem ergens bij de OleDb classes moet liggen, maar ik zie niet direct hoe ik daaromheen kan werken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| SELECT tblCategory.CategoryId, tblCategory.Name,
( SELECT SUM (tblCashflow.Amount)
FROM tblCashflow
WHERE tblCashflow.CategoryId = tblCategory.CategoryId
AND tblCashflow.TypeId = 1
AND tblCashflow.TransactionDate >= @p_aBeginDate
AND tblCashflow.TransactionDate < @p_aEndDate ) AS a,
( SELECT SUM (tblCashflow.Amount)
FROM tblCashflow
WHERE tblCashflow.CategoryId = tblCategory.CategoryId
AND tblCashflow.TypeId = 2
AND tblCashflow.TransactionDate >= @p_bBeginDate
AND tblCashflow.TransactionDate < @p_bEndDate ) AS b,
FROM tblCategory |
Als ik deze query uitvoer in m'n .NET applicatie op een SQL Server databank, met behulp van de SqlClient classes, dan krijg ik de verwachte resultaten.
Voer ik deze query echter uit in een .NET applicatie op een Access DB (met de OleDb classes), dan krijg ik foute resultaten.
Ik voer de query uit en loop met een OleDbDataReader over de resultaten, en vul een custom collectie met de resultaten van de query.
Het veld-type van tblCashflow.Amount is een decimal (zowel in sql server als in access). De data-reader leest dit als volgt uit:
code:
1
| decimal a = Convert.ToDecimal (dr[2]); |
Mbhv de SqlClient krijg ik de juiste resultaten, met de OleDb classes krijg ik in bepaalde gevallen een 0 terug, en in andere gevallen 241.900 (ook dat is fout) terug.
Het vreemde is dat, als ik die query direct uitvoer in Access, ik wel de juiste resultaten terugkrijg. Ik denk dus dat het probleem ergens bij de OleDb classes moet liggen, maar ik zie niet direct hoe ik daaromheen kan werken.
https://fgheysels.github.io/