webForumDet fria alternativet

max värde

ASPur ASP

11 svar · 410 visningar · startad av Meng

MengMedlem sedan feb. 2003549 inlägg
#1

Kan man göra något så det max går att skriva 2147483647 i ett tal fält?

cyprysMedlem sedan dec. 20003 563 inlägg
#2

Vad är ett 'tal fält'?

MengMedlem sedan feb. 2003549 inlägg
#3

Det är en vanlig input text som jag vill spärra så det inte blir overflow i skrivningen till databasen, i databasen är mottagaren upsatt till att vara ett talfält med ett långt heltal.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#4

En if-sats i ASP.

If CDbl(Request.Form("foo")) > 2^31-1 Then
'bail
End If

Annars kan du ju göra det med javascript.

cyprysMedlem sedan dec. 20003 563 inlägg
#5

Kontrollera vid inmatningen. Du kan sätta maxlength på ett inputfält, men det syftar på antal tecken och är nog inte det du är ute efter.

dim foo, bar 
foo = request.form("inputNumber")
bar = 83975
if isnumeric(foo) then
  if cDbl(foo) <= bar then
    ' VALID
  else
    ' Call errorHandler
  end if
else
  ' Call errorHandler
end if

'edit: Bah. Blandar gött ihop variabler här. :)

GuffaMedlem sedan juni 2004533 inlägg
#6

cyprys skrev:

dim foo = request.form("inputNumber")
dim maxNumb = 83975
if isnumeric(foo) then
if foo <= maxNumb then

Oops... Där jämför du en sträng med ett tal. Det fungerar inte.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#7

dim maxNumb = 83975 är lite fel också.
Const maxNumb = 83975 funkar bättre...

dim foo = request.form("inputNumber") är också lite fel...

GuffaMedlem sedan juni 2004533 inlägg
#8

Erik Juhlin skrev:

dim maxNumb = 83975 är lite fel också.
Const maxNumb = 83975 funkar bättre...

dim foo = request.form("inputNumber") är också lite fel...

(Jag brydde mig inte om att kommentera de felen. De är ju relativt harmlösa eftersom koden inte går att köra om man inte rättar till dem. Att jämföra ett tal med en sträng går däremot alldeles utmärkt att göra, men det fungerar inte, så det är mycket svårare att upptäcka.)

cyprysMedlem sedan dec. 20003 563 inlägg
#9

Här blev det uppståndelse.
Ett tag sen jag skrev asp men tanken stämmer nog ändå. ;)

Har redigerat ovan.

@ndersMedlem sedan juni 200032 969 inlägg
#10

cyprys skrev:

Ett tag sen jag skrev asp men tanken stämmer nog ändå. ;)

Tanken kanske, men cint(bar) kommer att ge ett felmeddelande. Vid så stora tal, använd CLng() istället.

GuffaMedlem sedan juni 2004533 inlägg
#11

cyprys skrev:

if foo <= cint(bar) then

Du jämför fortfarande en sträng med ett tal. Det är ju foo som innehåller strängen.

@nders skrev:

Vid så stora tal, använd CLng() istället.

Använd alltid CLng istället för CInt. Dock räcker inte ens CLng i det här fallet. Du måste använda CDbl för att klara tal större än 2147483647.

If CDbl(foo) <= bar Then
@ndersMedlem sedan juni 200032 969 inlägg
#12

Dock räcker inte ens CLng i det här fallet. Du måste använda CDbl för att klara tal större än 2147483647

Absolut. Jag syftade dock på cyprys exempel 83975.

129 ms totalt · 3 externa anrop · v20260731065814-full.b2af184d
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)