Hej. Står lite här: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctclng.asp Anna-Karin; Jag har skrivit ut dem, de är inte tomma. Alla tre innehåller "1". Kolla så att inte Mail är ett sk reserverat ord, men då borde SQL strängen smälla istället. Felet verkar ligga någon annan stans. Hallå! Jag brukar använda if CINT(Request("mail") = 1 thenHur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Med nedanstående kod så vill jag kunna uppdater en post i databasen men det vil sig inte riktigt. Trotts att Request.Form("mail")-värdet är 1 uppdateras relationer.mail (samma sak gäller Request.Form("kommentarer") och Request.Form("grupper")) till 0.
Känns som man måste säga berätta att Request.Form("mail") just är ett tal.
Hur gör man detta?
Har detta att göra med Int, Cint och cLng, eller?
Ifall det har det. Var kan man läsa om detta?
Koden:
<code>
<%
If Len(Request.QueryString("spara"))>=1 Then
If Request.Form("mail")="1" Then
mail="1"
else
mail="0"
end if
If Request.Form("kommentarer")="1" Then
kommentarer="1"
else
kommentarer="0"
end if
If CLng(Request.Form("grupper")="1" Then
grupper="1"
else
grupper="0"
end if
dim adoConn
dim adoRS
dim strQuery
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "DRIVER={MySQL};DATABASE=hemligt"
strQuery = "UPDATE relationer SET mail='"&mail&"', kommentarer='"&kommentarer&"', grupper='"&grupper&"' WHERE person="&Request.QueryString("spara")&" and id="&Session("id")
adoConn.Execute strQuery
adoConn.Close
Set adoConn = Nothing
End If
%>
</code>Sv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Skriv ut variablerna så att du ser vad de innehåller, de kanske är tomma och då går din ELSE sats in automatiskt.
Ett annat tips är ju att skriva ut SQL satsen också och se vilka värden man har fått med.
//Anna-KarinSv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Testa såhär:
If CLng(Request.Form("mail")) = 1 Then
/JohanSv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Johan: "If CLng(Request.Form("mail")) = 1 Then" fungerade inte heller.
Får det verkligen inte till att fungera.
Testat med Clng, Fix och Int.
Kan man göra på något annat sätt?Sv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Fast felet borde ligga in dina IF satser om värdet blir 0 hela tiden.
Kolla så att allt är rättstavat och att det postas med POST och inte GET
//Anna-KarinSv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Formuläret finns på sidan dokument.asp vilket även koden som skall uppdatera databasen gör. Koden som skall uppdatera databasen ligger överstpå sidan. Jag skickar alltså värderna till samma sida som formuläret finns på med denna kod:
<code>
<form name="spara" method="post" action="<% Response.Write "dokument.asp?UserGroup=" & UsersGroup & "&spara=" & RecSet("person") %>"">
</code>
Det verkar vara detta som ställer till det.
Testade med att skicka värderna till en annan sida och därifrån uppdatera databasen, då funkade det.
Får helt enkelt köra med att jag skickar värderna till annan sida och sedan köra Response.Redirect, ett extra dokument men men.Sv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
I din kod har du dessa rader:
If Request.Form("mail")="1" Then
mail="1"
else
mail="0"
end if
Där testar du värdet på Request.Form("mail") och om det har värdet "1" sätter du en variabel
(mail) till "1".
Genom att omsluta siffran med sitationstecken blir denna variabel en textsträng.
Ta bort sitationstecknen så blir värdet ett tal:
If Request.Form("mail")="1" Then
mail = 1
else
mail = 0
end if
SvenneSv: Hur gär jag så att talet 1 är just ett tal, talet 1 och inget annat?
Om du inte vill använda det så går det med
if CINT(Request("mail") - 1 = 0 then
Jag tycker den första är bättre.
Lycka till.