Nu förstår jag kanske inte riktigt problematiken, men för att använda dubbelfnuttar i en sträng så escapear du med en dubbelfnutt.
Alltså borde replacen se ut så här:
strText = Replace(strText,"""","""""")
Mvh,
3 svar · 219 visningar · startad av KoTTeN
Hallå igen! Nu ska jag försöka förklara något som inte ens jag kommer förstå men men…
Jag har en tabell i databasen där en kolumn är avsedd för längre texter (PM). Via ett formulär lägger man till data i tabellen. Jag har en funktion som gör om enkelfnuttar (’) till dubbla enkelfnuttar (’’) innan den läggs in och tvärt om när jag hämtar ut datan från databasen.
Det funkar ju bra, men om jag skriver in en dubbelfnutt (”) blir det fel, så testade jag att göra en liknande funktion som gör om dubbelfnuttar till dubbla dubbelfnuttar (Är det någon som hänger me här?). Jag tycker koden borde se ut så här:
strText = Replace(strText,""","""")
Men då svarar nissen till datorn med: Oavslutad strängkonstant
Är det någon som fattar? Om, vad ska jag göra? Har jag gjort helt fel?
------------------
// Ronny "KoTTeN" Andersson
Nu förstår jag kanske inte riktigt problematiken, men för att använda dubbelfnuttar i en sträng så escapear du med en dubbelfnutt.
Alltså borde replacen se ut så här:
strText = Replace(strText,"""","""""")
Mvh,
Tack, men de funkar fortfarande inte. För om jag matar in detta i formuläret: Lite text, ”Mer” text.
Då får man antingen detta fel:
]Microsoft JET Database Engine fel '80040e14'
Syntaxfel (operator saknas) i frågeuttrycket 'ID ='.
/gc2/crew/fusk.asp, rad 144
Eller så blir det inget felmedelande alls, utan datan läggs in i databasen, men bara biten före dubbelfnutten. Om vi använde exemplet ovan skulle de bli: Lite text,
Den avbryter alltså när den stöter på en dubbelfnutt. Jag kan inte hitta ett mönster varför den ibland genererar fel och ibland inte.
Koden för att lägga in uppdatera datan ser ut så här:
<%
119| Function FixaTecken(strText)
120| strText = Replace(strText,"'","''")
121| strText = Replace(strText,"""","""""")
122| FixaTecken = strText
123| End Function
%>
En massa massa kod
<%
142| Set RecSet = Server.CreateObject("ADODB.Recordset")
143| visa = "UPDATE fusk SET fusk = '" & FixaTecken(Request.Form("fusk")) & "' WHERE ID = " & Request.Form("id") & ""
144| RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
146|
%>
Nån som kan se varför det blir fel?
------------------
// Ronny "KoTTeN" Andersson
Det felet du får beror inte på något problem med replace utan på att Request.Form("id") är odefinierat.
Du kanske skickar det i querystring?
Det räcker om du ersätter ' med dubbla ' eftersom du använder ' som strängavgränsare i din sql-sats.
------------------
essentitia preter non sans multiplicandum