Tja! Hej Andreas! Nu hänger jag inte riktigt med. Varför skall du förändra värdena? Beror det på att du längre ner i du längre ner i dockumentet skriver ut dem på sidan? Jag vill ändra " & '. Till ' & " av den anledningen att databesen som tar emot informationen inte gillar dessa tecken. Det skall alltså göras innan värdena skickas till databasen. Det är bättre att escapa tecknen i SQL. Vilken databas använder du dig av? Jag kör Access. Hur skiver jag om det är 2 olika Replace jag vill göra per sträng? Varför behöver du gör två replace? Ersätta tecken (Replace)
Går det att på ngt smidigt sätt ersätta tecken i alla Request.Form som finns på en sida? Försöker komma undan att göra en för varje... det är MÅNGA formulär :)
Något sånt här:
<code>
For each itm in Request.Form
Replace(Chr(34), """)
Replace(Chr(39), "'")
Next
</code>
Just den där kodsnutten funkar inte men ni kanske förstår vad jag är ute efter.
Tack på förhand!
Mvh AndreasSv: Ersätta tecken (Replace)
En include-fil borde göra susen. Då minskar du det i alla fall till en kodrad per sida.
MVH / JohanSv: Ersätta tecken (Replace)
Jag har alltså en massa formulär som jag hämtar info ifrån. Jag är ute efter att slippa lägga till en Replace för varje Request.Form som är på sidan. Hur kan jag lösa det med en include fil?
Mvh AndreasSv: Ersätta tecken (Replace)
T.Ex.
<code>
<INPUT type="text" name="firstname" value="<%=Request.Form("firstname")%>">
</code>
Du bör inte förändra värdena för en det behövs.
T.Ex.
<code>
<INPUT type="text" name="firstname" value="<%=Server.HTMLEncode(Request.Form("firstname"))%>">
</code>Sv: Ersätta tecken (Replace)
Mvh AndreasSv: Ersätta tecken (Replace)
Så här gör du t.ex. i Access och SQL Server:
<code>
Function SQLText(Value)
Dim strTemp
strTemp = Trim("" & Value)
If Len(strTemp) Then
SQLText = """" & Replace(strTemp, """", """""") & """"
Else
SQLText = "Null"
End If
End Function
Dim strSQL
strSQL = "INSERT INTO Customers (FirstName, LastName)" & vbCrLf & _
"VALUES(" & SQLText(Request.Form("FirstName")) & ", " & SQLText(Request.Form("LastName")) & ")"
</code>Sv: Ersätta tecken (Replace)
För att trycka in värden i databasen skriver jag till skillnad mot dig såhär:
<code>
Set RS = Server.CreateObject ("ADODB.Recordset")
RS.Open "databas", strCon, adOpenStatic, adLockOptimistic, adCmdTable
RS.AddNew
RS("värde") = strVärde
RS.Update
RS.Close
Set RS = Nothing
</code>
Mvh AndreasSv: Ersätta tecken (Replace)
Du bör alltid instaniera och öppna ett connection objekt. Använda det till recordset och command objekt sedan stänga din connectionnär du utfört dina databasoperationer.
Detta är för att dit recorset internt skapar ett connections objekt som inte stängs och frigörs förän ditt recordset frigörs eller om du explecit gör det själv
En instans av ett connection kan du återanvända.
Här är ett fullständigt anrop för att köra SQL satsen:
<code>
Function SQLText(Value)
Dim strTemp
strTemp = Trim("" & Value)
If Len(strTemp) Then
SQLText = """" & Replace(strTemp, """", """""") & """"
Else
SQLText = "Null"
End If
End Function
Dim con
Dim strSQL
Const strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Inetpub\db\DinDatabas"
Set con = Server.CreateObject("ADODB.Connection")
con.Open strCon
strSQL = "INSERT INTO Customers (FirstName, LastName)" & vbCrLf & _
"VALUES(" & SQLText(Request.Form("FirstName")) & ", " & SQLText(Request.Form("LastName")) & ")"
con.Execute strSQL
con.Close
Set con = Nothing
</code>