webForumDet fria alternativet

max värde

ASP

11 svar · 412 visningar · startad av Meng

Medlem sedan feb. 2003549 inlägg
Frågan#1

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

Medlem sedan dec. 20003 563 inlägg
#2

Vad är ett 'tal fält'?

Medlem 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.

Medlem 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.

Medlem 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. :)

Medlem 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.

Medlem 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...

Medlem 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.)

Medlem 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.

Medlem sedan juni 200032 967 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.

Medlem 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
Medlem sedan juni 200032 967 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.

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)