Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

VB 6.0 Decimaalberekeningen en landinstellingen.

Anoniem
Yvonne
5 antwoorden
  • Hoi allemaal

    Als ik met mijn programma in VB berekeningen maak
    dan gaat alles goed. Ik sla alles op als text en
    bij het rekenen maak ik er weer met VAL(textgetal) een
    mooi getal van.

    Maar……………..

    Als ik via Start , instellingen, configuratiescherm
    bij landinstellingen naar getal ga en ik wijzig
    decimaalsymbool van ,(komma) naar . (punt) dan lopen
    de berekeningen met decimalen in de soep.


    Hoe kan dit, en is het te omzeilen, want het programma
    draait alleen goed op een PC met als decimaalsymbool
    een , (komma).

    Weten jullie raad ?

    groetjes, Yvonne.
  • De VAL function heeft een bekende bug met betrekking tot de regional settings.

    Gebruik in plaats van VAL de functie CDBL.

    Kijk eens naar de volgende MSDN documenten

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctVal.asp

    Greetz,

    Taz
  • mag het misschien geen bug noemen. Waar het om gaat is dat de VAL functie alleen de punt (.) als onderdeel van een getal ziet, onafhankelijk van de regional settings.

    CDBL houdt daar wel rekening mee, maar kan niet zo goed tegen niet numerieke karakters (afgezien van die gerelateerd aan getallen)

    Greetz,

    Taz
  • Hoi Tazzzzzzzzzzzz

    Bedankt, ik zal het uittesten met een testprogramma.


    groetjes, Yvonne :D
  • Beste Yvonne,

    Je getallen staan in tekstvorm in je programma.
    Je moet getallen met een punt als decimaal converteren naar een getal met een komma als decimaal.
    Maak de volgende sub

    private sub Conversie(textgetal)

    for Teller=1 to len(textgetal)
    strA=mid(textgetal,Teller,1)
    if strA="." then
    strGetal=left(textgetal,Teller-1) & "," & _
    right(textgetal,len(textgetal)-Teller)
    exit for
    endif
    next Teller
    textgetal=strGetal

    end sub

    ga naar deze sub met: call Conversie(textgetal)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.