Vraag & Antwoord

Webprogrammeren & scripting

ASP-vraag over strings en numeriek

5 antwoorden
  • Ik heb een form-invulveld waar men een bedrag dient in de vullen. Stel men vult een string-waarde in, bijv. "25 Euro" D.m.v. REPLACE(bedrag, " Euro","") kan ik er "25" van maken, echter dit is nog steeds een string. Hoe maak ik er nu een numerieke waarde van zodat ik er alsnog meer kan rekenen?
  • myInt = CInt(myString) -> Integer myLng = CLng(myString) -> Long myDbl = CDbl(myString) -> Double (die laatste lijkt me wel handig als je met gebroken getallen moet werken)
  • <% Dim iEuro iEuro = Clng(Request.Form("euro")) %> VBScript heeft een aantal conversie functies: zie o.a. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriFunctions.asp Cint() converteert naar een Integer Clng() converteert naar een Long Het verschil tussen Integer en Long is dat een "long" een hoger getal kan bevatten, in jouw geval is een Integer echter waarschijnlijk goed genoeg. Twee opmerkingen: * Als je met een database werkt en daar (gehele) getallen uit opvraagt, krijg je het type "long" terug. Als je vervolgens een vergelijking uitvoert (If a = b Then) en de types van de a en b zijn verschillend (bijvoorbeeld Long en Integer) dan zijn ze *nooit* gelijk. Dit is één van de redenen waarom ik altijd met type Long werk (conversie met de Clng functie), en niet met type Integer. * Conversie functies kunnen een foutmelding geven. Als de conversie onmogelijk is komt er een foutmelding, en stopt de ASP-pagina met verdere verwerking. Onmogelijke conversies zijn als er *geen* getal van te maken is. Bijvoorbeeld Clng("abcd") geeft een fout. Die fout moet je afvangen, anders breekt de ASP pagina halverwege af. Het beste is om zelf een conversie functie te maken, bijvoorbeeld: Function MakeLong(ByVal var) On Error Resume Next MakeLong = Clng(var) If Err Then MakeLong = 0 End If End Function In deze functie wordt de waarde 0 (zero) als er een conversiefout optreedt. De error wordt afgevangen en de ASP-pagina blijft gewoon werken. De code die je dan gebruikt is: <% Dim iEuro iEuro = MakeLong(Request.Form("euro")) %>
  • Thanx, werkt perfect.
  • Nog een vraagje: Bedrag = 25 SESSION("bedrag") = Bedrag SESSION(Bedrag) = Bedrag Klopt het dat de onderste een numerieke sessie-variabele is? Zo ja, werkt die wel, want ik heb het bedrag gekoppeld aan een sessievariabele, echter in de volgende pagina's is de waarde weg.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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