webForumDet fria alternativet

Fnuttar till tusen

ASP

3 svar · 219 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

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

Medlem sedan juni 200032 967 inlägg
#2

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,

Medlem sedan sep. 20011 722 inlägg
#3

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&#0124; Function FixaTecken(strText) 
120&#0124; strText = Replace(strText,"'","''") 
121&#0124; strText = Replace(strText,"""","""""") 
122&#0124; FixaTecken = strText 
123&#0124; End Function 
%>
En massa massa kod
<%
142&#0124; Set RecSet = Server.CreateObject("ADODB.Recordset")			
143&#0124; visa = "UPDATE fusk SET fusk = '" &  FixaTecken(Request.Form("fusk")) & "' WHERE ID = " &  Request.Form("id") & ""
144&#0124; RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic  
146&#0124;

%>

Nån som kan se varför det blir fel?

------------------
// Ronny "KoTTeN" Andersson

Medlem sedan dec. 200012 464 inlägg
#4

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

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)