[JAVA en MS Access] Valuta wordt niet goed weergegeven

Pagina: 1
Acties:

  • RvL
  • Registratie: Maart 2002
  • Laatst online: 17:34
Hallo allemaal,

ik ben momenteel bezig met een programma in Java, waarbij ik gebruik maak van een MS Access database. Het programma moet de rekening van een gast in een hotel bijhouden en opslaan in de database.

In deze database staat een tabel genaamd 'bar', waarin de prijzen van de verschillende produkten in de bar worden opgeslagen. De tabel bestaat uit twee velden, 'Artikel' en Prijs'. Hierin staan dus de artikelen en prijs van het artikel, bijvoorbeeld 'Biefstuk', '11.00'.

Nu lees ik de prijs uit in het javaprogramma:
code:
1
ResultSet select = myStat.executeQuery("Select prijs from bar where artikel = '"+strSelect+"'");

strSelect hierin is een string-variabele waarin de naam van een eerder gekozen artikel wordt gezet.

De prijs van het artikel wordt netjes uitgelezen. Vervolgens geef ik deze weer in een JTextField door de volgende code:
code:
1
2
3
4
5
6
while(select.next())
{
float fltPrijs = select.getFloat("prijs");
arrArtikel[intLoop].setText(strSelect);
arrPrijs[intLoop].setText(String.valueOf(fltPrijs));
}

Hierin is 'select' de resultset waar de prijs uit de database in wordt gezet en 'arrArtikel' en 'arrPrijs' zijn arrays van JTextFields. 'intLoop' zorgt ervoor dat het juiste JTextField uit de arrays wordt genomen.

Het gaat echter niet helemaal zoals ik zou willen. Een voorbeeld: ik vraag de prijs van artikel 'Biefstuk' op. In de database staat deze als '11.00'.
Vervolgens schrijf ik deze waarde in het JTextField 'arrPrijs[intLoop]' weg (zie code hierboven voor de code). In het textfield wordt echter niet '11.00', zoals het in de database staat, maar '11.0' gezet.

Om een lang verhaal kort te maken, ik mis een '0' achter de komma bij bedragen waarvan het laatste cijfer achter de komma een '0' is. Een bedrag als '1.75' gaat wel goed. Ook wordt er goed gerekend met de bedragen.

In de database heeft het veld 'Prijs' al vele instellingen gehad: decimaal, enkele precisie, dubbele precisie en alles wat daar weer aan in te stellen valt (notatie: valuta, vast, standaard enz.). Ik denk dus dat de oplossing in java gezocht moet worden. Ik kan echter niet vinden waar, ik heb al in de helpfiles van Sun zelf gekeken.

Wie weet de oplossing? En sorry van de lange lap tekst :P ;)

Roy

[ Voor 7% gewijzigd door RvL op 10-04-2003 12:17 ]

Liefde maakt een smal bed breed!
Nu de dekens nog...


Verwijderd

ja uiteraard bestaat een getal als 3,00 niet. Dus je zult een vertaal slag moeten maken als je er bijvoorbeeld een string van maakt...

  • RvL
  • Registratie: Maart 2002
  • Laatst online: 17:34
Bijvoorbeeld door de string te splitsen bij de komma en dan het gedeelte rechts van de komma te controleren en eventueel een '0' toe te voegen?

Of zijn er nog andere methodes? Ik ben nog niet zo heel erg lang met java bezig dus misschien kan het wel veel makkelijker!

Roy

Liefde maakt een smal bed breed!
Nu de dekens nog...


  • momania
  • Registratie: Mei 2000
  • Laatst online: 17:50

momania

iPhone 30! Bam!

je kan in je database het beste de decimal gebruiken en dan in je JAVA code java.math.BigDecimal
Bij een BigDecimal kan je de scale (aantal cijfers achter de komma) instellen en ook de komma eventueel verschuiven naar links of rechts.

[ Voor 9% gewijzigd door momania op 10-04-2003 12:22 ]

Neem je whisky mee, is het te weinig... *zucht*