Kan man göra något så det max går att skriva 2147483647 i ett tal fält?
max värde
11 svar · 410 visningar · startad av Meng
Vad är ett 'tal fält'?
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.
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.
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. :)
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.
dim maxNumb = 83975 är lite fel också.
Const maxNumb = 83975 funkar bättre...
dim foo = request.form("inputNumber") är också lite fel...
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.)
Här blev det uppståndelse.
Ett tag sen jag skrev asp men tanken stämmer nog ändå. ;)
Har redigerat ovan.
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.
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
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.