Toon posts:

[C# / Access] Decimaal opslaan

Pagina: 1
Acties:
  • 221 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste tweakers,

Is het iemand gelukt om met C# via de oledb provider een decimal waarde in een decimal veld van Access op te slaan? Bij mij wordt alles achter de komma er gewoon aanvast geplakt. Als voorbeeld het volgende stuk code:

code:
1
2
3
4
5
string sqlString = "Insert into TestTabelMetDecimalen (decimaalveld) values (?)" ;
decimal mijnDecimaal = 123.45;
OleDbCommand uitvoeren = new OleDbCommand(sqlString, eengeldigeconnectionstring);
uitvoeren.Parameters.Add("Decimaal", mijnDecimaal);
uitvoeren.ExecuteNonQuery();


In access is het veld als volgt aangemaakt:
Veldlengte: Decimaal
Precisie: 18
Schaal: 4
Decimalen: 4

Volgens mij zou hij dus gewoon 4 decimalen op moeten kunnen slaan. Als ik de tabel in access open en hier 123,45 in gooi dan staat het er ook mooi met decimalen.

Voer ik echter de C# code uit dan staat er 12345 als resultaat. Voor mij dus volkomen onlogisch. Iemand enig idee? Zoeken op Google heeft mij nog bijzonder weinig opgeleverd... en ja... ik weet dat Access niet de meest joepie storage is, maar voor deze applicatie is het goed toepasbaar.

[ Voor 4% gewijzigd door Verwijderd op 23-04-2006 16:43 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:43

gorgi_19

Kruimeltjes zijn weer op :9

Gebruik eens een volledige OleDbParameter, waarbij je ook het OleDBType kan opgeven? Of gebruik iig de juiste overload waarbij je het op kan geven.

[ Voor 28% gewijzigd door gorgi_19 op 23-04-2006 16:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
@gorgi: Bedankt voor de goede tip, hij werkt helaas niet, maar was zeker het proberen waard. Ik was al bang dat het zou werken, want zoals ik hem nu gebruik is de enige overload waarin je direct de waarde mee kan geven. Anders moest ik eerst de param toewijzen en dan de value zetten (of er weer een functie voor maken natuurlijk). Maar... het werkt net zo beroerd. Ik heb OleDbType.Decimal meegegeven. Nadat de value is gezet staat er ook gewoon 123,45 in. Bij het wegschrijven naar de database is het weer 12345 geworden.

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

is het geen probleem met "." en "," ?

ASSUME makes an ASS out of U and ME


Verwijderd

Topicstarter
@HighGuy: Zou niet mogen, de waarde wordt met een parameter meegegeven en het parameter type is decimal. Als het een probleem met . en , is dan zit er een bug in de oledb provider (volgens mij is die verantwoordelijk om dit goed om te zetten). Ik wordt er in elk geval helemaal gestoord van.

Verwijderd

Topicstarter
AAAAAAARGH... #$@#$@#$@# Microsoft producten... http://www.dotnet247.com/247reference/msgs/39/197695.aspx 't is dus zeer waarschijnlijk gewoon weer een meeeeeega bug in de OleDb provider waar volgens mij gewoon geen workaround / patch voor beschikbaar is. Dat soort grappen is echt meeeega irritant.

  • whoami
  • Registratie: December 2000
  • Laatst online: 07:13
Dat heb ik ook al eens gehad; ipv OleDbType.Decimal moet je eens OleDbType.Currency meegeven, en dan werkt het wel.

https://fgheysels.github.io/


Verwijderd

Topicstarter
@WhoAmI: _/-\o_
Ik blijf het een ongelovelijk nare bug vinden en echt 8)7 dat er nog nooit een patch voor is gekomen... maar... met jou workaround kan ik er in elk geval omheen werken. Tnx! _/-\o_

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 17-01 10:57
moet je geen "m" achter een decimal getal zetten?

bijv.

decimal x = 1.48374m

[ Voor 17% gewijzigd door Mastermind op 23-04-2006 19:09 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 07:13
Mastermind schreef op zondag 23 april 2006 @ 19:08:
moet je geen "m" achter een decimal getal zetten?

bijv.

decimal x = 1.48374m
Dat heeft imo niets met het probleem te maken.

https://fgheysels.github.io/

Pagina: 1