Toon posts:

[vb6], decimaalteken ==> van een punt een komma maken

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

Verwijderd

Topicstarter
Ik ontwerp een programma die samenwerkt met access. Het programma bevat een deel boekhouding en kan gebruikt worden in een winkel waar kleren worden ingescand enz... Zoals je weet zal een punt in Access 2000 als komma geschreven worden. Wanneer je dan bijvoorbeeld in de winkel een getal intikt met uw numeriek klavier dan zal er een punt getikt worden dan een komma vb:
VB6 = 21.03
Wanneer je dan met getallen van access laat samenwerken met getallen van VB6 zal dit een probleem op leveren. Ik had gedacht om de wijzigingen aan te brengen in landinstellingen waar je het decimaalteken kan aanpassen. Maar deze staat blijkbaar al correct. Dus wanneer je het numeriek klavier gebruikt dan krijgt je een punt in te plaats van een komma, dit zal problemen opleveren wanneer je berekeningen doet met Access.
Weet iemand hoe je dit punt kunt omzetten in een komma in vb6?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02-04 14:17

Janoz

Moderator Devschuur®

!litemod

Zolang je de waarden gewoon als floats over stuurt en niet als strings moet dit geen enkel probleem opleveren. Of een getal met een komma of punt wordt weergegeven wordt pas in het allerlaatste stapje bepaald waarbij de data opgemaakt wordt om op het scherm te zetten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Een bijkomend probleem is wanneer je door een bewerking enkele getallen neemt van enkele tekstvakken dan een bewerking uitvoert en het resultaat overzet in een ander tekstvak dan zal hij de getallen met een punt als decimaalteken interpreteren als vb: 1.11 wordt dan 111
De tekstvakken zijn gedeclareerd als currency, dus dat wil betekenen dat het decimaalteken een "," moet zijn.

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Dan maak je even een functie die dit even omzet:

function convert(getal){
convert = cint(replace(cstr(getal), ".",","))
}


Zoiets dan.

In asp kan je met LCID aangeven hoe dit soort dingen behandelt moeten worden, misschien dat dit ook voor VB6 bestaat?

Huur mij in als freelance SEO consultant!


Verwijderd

Topicstarter
Wanneer ik uw functie gebruik dan wordt 11.11 gelijk aan 11

Verwijderd

Verwijderd schreef op 28 juli 2004 @ 09:39:
Wanneer ik uw functie gebruik dan wordt 11.11 gelijk aan 11
Dat is ook correct als je cint gebruikt.
Wellicht Cdbl proberen ?

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Het was ook uit het hoofd als voorbeeld bedoelt, niks aan getest.

Maar ik denk dat je het toch ergens nij LCID moet zoeken.
Verwijderd schreef op 28 juli 2004 @ 09:42:
[...]


Dat is ook correct als je cint gebruikt.
Wellicht Cdbl proberen ?
idd, nog al logisch, domme fout :P

[ Voor 49% gewijzigd door CrashOne op 28-07-2004 09:44 ]

Huur mij in als freelance SEO consultant!


Verwijderd

Topicstarter
Verwijderd schreef op 28 juli 2004 @ 09:42:
[...]


Dat is ook correct als je cint gebruikt.
Wellicht Cdbl proberen ?
Ja hoor prachtig het werkt met Cdbl

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Toch is het geen nette oplossing, probeer het eens met LCID.

Huur mij in als freelance SEO consultant!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02-04 14:17

Janoz

Moderator Devschuur®

!litemod

Binnen je programma zou je helemaal niet na moeten denken over de gebruikte localisation instellingen. Hiermee bedoel ik dat je niks zelf moet gaan programeren dat punten in komma's veranderd en omgekeerd. Ik kan me onmogenlijk voorstellen dat er geen localisation afhankelijke string naar int/float omzetter is. Stel je voor dat iemand je programma gaat gebruiken op een computer waar de . toch het decimalen scheidings teken is? Of misschien heel exotisch wel de | oid? Het is de bedoeling dat je OS dit afhandeld, en niet jij zelf.

Of is dat wat jij bedoeld CrashOne

[ Voor 7% gewijzigd door Janoz op 28-07-2004 09:59 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op 28 juli 2004 @ 09:53:
Binnen je programma zou je helemaal niet na moeten denken over de gebruikte localisation instellingen. Hiermee bedoel ik dat je niks zelf moet gaan programeren dat punten in komma's veranderd en omgekeerd. Ik kan me onmogenlijk voorstellen dat er geen localisation afhankelijke string naar int/float omzetter is. Stel je voor dat iemand je programma gaat gebruiken op een computer waar de . toch het decimalen scheidings teken is? Of misschien heel exotisch wel de | oid? Het is de bedoeling dat je OS dit afhandeld, en niet jij zelf.

Of is dat wat jij bedoeld CrashOne
En hoe kun je dit dan aanpassen in VB6, sorry ben nog een tamelijke leek in het programmeren

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Janoz schreef op 28 juli 2004 @ 09:53:
Of is dat wat jij bedoeld CrashOne
Dat is exact wat ik bedoel, de "oplossing" die ik gaf lost het probleem nu wel op maar is inderdaad niet handig als je exotische dingen als | tegen gaat komen. Tevens zou je dit dan op alle getallen moeten doen die uit je db komt.

Met LCID (binnen asp, waarschijnlijk ook wel binnen VB6) kan je een andere datum, tijd en currency formaat gebruiken dan standaard op je pc.

Huur mij in als freelance SEO consultant!


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 31-03 00:07
Naar mijn idee wordt dit:
Visual Basic .NET:
1
2
Dim blaat as Double:
blaat = CDbl( txtDouble.Text )


Altijd correct omgezet. Als user 1.1 intikken, en ze bedoelen eigenlijk 1,1 dan zou je dat kunnen opvangen door in een LostFocus event dit te doen:

Visual Basic .NET:
1
2
3
... Exception handling code missing ....

txtDouble.Text = Cstr( CDbl( txtDouble.Text ) )


Men kan dan meteen zien wat er van gemaakt wordt. Netjes is het niet, maja.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1