webForumDet fria alternativet

Type missmatch

10 svar · 248 visningar · startad av soffan76

soffan76Medlem sedan maj 2001684 inlägg
#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?

LarsGMedlem 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"
soffan76Medlem 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!

@ndersMedlem sedan juni 200032 969 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,

soffan76Medlem 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")

LarsGMedlem 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
@ndersMedlem sedan juni 200032 969 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,

soffan76Medlem sedan maj 2001684 inlägg
#8

OK, tackar tackar. Ska testa!

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

LarsGMedlem 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")) & "'>"
soffan76Medlem sedan maj 2001684 inlägg
#11

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

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