Optellen in VB, Help!

Status
Niet open voor verdere reacties.

Wabbit

Gebruiker
Lid geworden
28 mei 2008
Berichten
12
Hi,

Volgens mij heb ik een heel simpele vraag maar ik heb al een heel tijdje niet meer met VB gewerkt en kom er niet uit. Ik moet gewoon twee tekstboxen (getallen met 2 decimalen achter de komma) optellen, deze boxen worden gevuld met een bedrag uit een acces database.

Kortom gewoon: text3 = text1 + text2

text1 is bijv 34,67 en text2 is bij 12,50 ik krijg dan in text3 de twee getallen achter elkaar in niet opgeteld. Ik krijg ze alleen opgeteld als ik punten ipv komma's gebruik maar ik krijg het niet voor elkaar punten in de database getallen te krijgen, het zijn immers euro getallen en die komen met komma's uit de database. Ik heb voor mijn gevoel alles geprobeerd terwijl het waarschijnlijk iets heel simpels is waar ik overheen kijk. Vermeningvuldigen en aftrekken gaan prima..

Kortom, weet iemand hoe ik deze getalletjes kan optellen ipv samenvoegen?

Thanks!
 
Je voegt nu 2 strings aan elkaar.
hetzelfde als text3 = text1 & text2

Converteer het eerst eens naar een double?

text3 = (Convert.ToDouble(text1) + Convert.ToDouble(text2)) .ToString
 
Hi,

Ik krijg het er niet mee voor elkaar, ik krijg een compile error dus is er iets in de syntax fout, ik heb volgens mij alle mogelijkheden geprobeerd maar zonder resultaat.

Ik heb een klein test proggie gemaakt met 3 text boxen de deze code onder een knoppie gehangen maar het werkt niet, ik heb de haken geprobeerd te verzetten maar ik hou compile error 424 object required.

Wat doe ik fout?
 
als je met vb 2008 werk
probeer dit eens
Code:
 Private Sub Telop()
        Dim Tarief, Aantal
        Tarief = Val(TextBox1.Text)
        Aantal = Val(TextBox2.Text)
        Me.Totaal.Text = (Aantal + Tarief)
    End Sub
 
in elke (zover ik weet...) vb werkt dit - de functie die hippie gebruikt:
Code:
getal = val(string)
de functie val() geeft de numerieke waarde van een string. Voorbeeld:
Code:
msgbox val("Hallo") [COLOR="SeaGreen"]'geeft "0" oid[/COLOR]
msgbox val("1234") [COLOR="SeaGreen"]'geeft "1234"[/COLOR]
msgbox val("1234Hallo") [COLOR="SeaGreen"]'geeft "1234"[/COLOR]
msgbox val("Hallo1234") [COLOR="SeaGreen"]'geeft "0" oid[/COLOR]


dus in jouw geval (functie zoals die van hippie, maar dan beter (me.totaal.text????)):
Code:
public function Optellen(sWaarde1, sWaarde2) as double
   Optellen = val(sWaarde1)+val(sWaarde2)
end function
je roept-m dan zo aan (voorbeeld, antwoord in text3):
Code:
Private Sub Command1_Click()
text3.text = Optellen(text1.text,text2.text)
end sub
 
Laatst bewerkt:
Hi,

Bedankt voor alle info, maar jullie lezen mijn vraag niet helemaal goed! Het probleem zit hem namelijk niet perse in het optellen maar in de getallen. Zodra de getallen komma's bevatten werkt het niet meer en wordt het afgekapt naar een heel getal.

dus bijv 12,45 + 56,89 = 68 zodra je daar punten van maakt klopt het wel dan wordt het namelijk: 12.45 + 56.89 = 69,34

Ik haal mijn getallen (prijzen van produkten) uit een database via currency velden en werkt het dus opeens niet meer. Daar zit mijn probleem....

Snap je?
 
hi misschien iets met Re:rolleyes:place
Heb hem dan ook maar even in elkaar geknutseld:
Code:
        Dim value As Double = 0
        value = Convert.ToDouble(TextBox1.Text.Replace(",", ".")) + Convert.ToDouble(TextBox2.Text.Replace(",", "."))
        TextBox3.Text = value.ToString.Replace(".", ",")

Ps.
Al vind ik dit een zeer onpasselijke code. :)
Betekent dat in je database dus een string staat?
 
Laatst bewerkt:
Tadaa!

klein voorbeeld projectje, Anders dan ik het altijd doe maar kijk maar eens hoe het werkt ;)
 

Bijlagen

  • Voorbeeld Proj.zip
    2,3 KB · Weergaven: 101
yo, voordat we verder gaan :)p) met welke vb werk je? Meeste mensen hier geven vb200X antwoord, heb je niet extreem veel aan als je met pre-.NET werkt.

Zodra de getallen komma's bevatten werkt het niet meer en wordt het afgekapt naar een heel getal.

dus bijv 12,45 + 56,89 = 68 zodra je daar punten van maakt klopt het wel dan wordt het namelijk: 12.45 + 56.89 = 69,34

Ik haal mijn getallen (prijzen van produkten) uit een database via currency velden en werkt het dus opeens niet meer. Daar zit mijn probleem....
Zoals al gesuggereerd wordt moet je dan of je komma gaan veranderen naar een punt, of iets 'lastigers' doen en je databse currency veld veranderen etc etc, maar laten we het op het 1e houden.

Ohja, dit staat bij de msdn over val():
Note The Val function recognizes only the period (.) as a valid decimal separator. When different decimal separators are used, as in international applications, use CDbl or CInt instead to convert a string to a number.
(http://msdn.microsoft.com/en-us/library/k7beh1x9(VS.71).aspx)

Je moet dus kiezen, val() als je een punt gebruikt, anders cdbl().
Dit werkt in pre-.NET versies (4,5,6) - het gebruikt de cdbl() functie.
Code:
dim dUitkomst as double
dim sVar1 as double
dim sVar2 as double

sVar1 = cdbl(text1.text)
sVar2 = cdbl(text2.text)

dUitkomst = sVar1 + sVar2

:thumb:
 
Laatst bewerkt:
hallo jongens,

bedankt voor alle reacties, zo blijf je altijd zien dat er bij het programmeren altijd meerdere wegen zijn die een oplossing bieden.

Ik heb gekozen voor CDbl, ik heb gewoon een paar strings waar ik de berekeningen mee doe hiermee uitgevoerd en nu gaat alles goed. Tevens had ik al wat punten en komma's via Replace vervangen.

Kortom, ik ben een blij man... en nogmaals bedankt voor alle info!

Gr Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan