webForumDet fria alternativet

Type missmatch

ASP

10 svar · 248 visningar · startad av soffan76

Medlem sedan maj 2001684 inlägg
Frågan#1

Hej alla, igen!

Jag har en uppdateringsbar webbsida där man ska fylla i olika tal i olika fält. Datatypen i Access-databasen är tal och obligatorisk är satt till nej. Men man måste alltid skriva i en nolla i input-fältet , det går inte att lämna fältet tomt för då blir det "type missmatch". Kan nån berätta varför?

Medlem sedan dec. 200012 464 inlägg
#2

Därför att "" inte är ett giltigt tal och det är inte heller samma som null.

Du kan ju lägga till så att du i din kod ontrollerar om fältet är tomt och i så fall lägger dit 0

c = request.form("canape") 
if c = "" then  c = "0"
Medlem sedan maj 2001684 inlägg
#3

Ok, misstänkte det. Det är bara det att jag har 34 fält så det blir lite bökigt...

IF RS("v23") ="" Then
RS("v23") ="0"
Else
RS("v23") = Request.Form("v23")
End IF

IF RS("v24") ="" Then
RS("v24") ="0"
Else
RS("v24") = Request.Form("v24")
End IF

IF RS("v25") ="" Then
RS("v25") ="0"
Else
RS("v25") = Request.Form("v25")
End IF

Men det är väl bara att börja knappra på.
Tack för hjälpen!

Medlem sedan juni 200032 967 inlägg
#4

Eller så skapar du en liten funktion...

Function GetRequestNumber(strKey)
    If Trim(Request.Form(strKey)) = "" then
           GetRequestNumber = "0"
    Else
           GetRequestNumber = Request.Form(strKey)
    End IF
End Function

Sedan byter du bara ut dina Request.Form ("fält") i koden till GetRequestNumber("fält").

Mvh,

Medlem sedan maj 2001684 inlägg
#5

Fattar tyvärr inte hur jag gör detta:

Sedan byter du bara ut dina Request.Form ("fält") i koden till GetRequestNumber("fält")

Medlem sedan dec. 200012 464 inlägg
#6
...
RS("v24") = GetRequestNumber("v24")
RS("v25") = GetRequestNumber("v25")
...

eller om fälten heter V1 till v35

for i = 1 to 35
rs("v" & i) = GetRequestNumber("v" & i)
next
Medlem sedan juni 200032 967 inlägg
#7

Istället för det som blir fel, som jag antar ser ut typ så här:

RS("v25") = Request.Form("v25")

och istället för det du skrivit med ifsatserna ovan:

IF RS("v25") ="" Then
RS("v25") ="0"
Else
RS("v25") = Request.Form("v25")
End IF

skriver du

RS("v25") = GetRequestNumber("v25")

Mvh,

Medlem sedan maj 2001684 inlägg
#8

OK, tackar tackar. Ska testa!

Medlem sedan maj 2001684 inlägg
#9

Ja nu funkar det att man inte behöver skriva dit en nolla men om man ska uppdatera igen står det nollor där man tidigare lämnat fältet tomt. Kan detta undvikas? Kanske kan vara förvirrande, eller är jag för petig..?
Kanske ska förklara att det gäller veckor och hur många timmar man jobbar med ett visst projekt den veckan.

Medlem sedan dec. 200012 464 inlägg
#10

Du kan ju göra en funktion som du använder när du fyller i fälten med värden från databasen

function replaceZero(str)
if  str = "0" then replaceZero = "" else replaceZero = str
end function
response.write "<input type='text' name = 'v24' value='" & replaceZero(rs("V24")) & "'>"
Medlem sedan maj 2001684 inlägg
#11

Tack så mycket för er hjälp! Det blev jätte-bra!

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