Dy kan ju testa med att byta [ mot [[]
Vet inte om det hjälper dock.
Det finns en escape klausul i SQL
col like '%\[%' escape '\'
vilket betyder att [ inte tolkas som ett specialtecken, vet ej om Access stöder detta dock.
4 svar · 170 visningar · startad av Pace
SELECT ForumForums.*, ForumReplys.*, ForumTopics.* FROM (ForumForums LEFT JOIN ForumTopics ON ForumForums.Forum_ID = ForumTopics.Forum_id) LEFT JOIN ForumReplys ON ForumTopics.Topic_ID = ForumReplys.Topic_ID WHERE (ForumForums.F_Description LIKE '%[%' OR ForumReplys.R_Message LIKE '%[%' OR ForumTopics.T_Message LIKE '%[%' ) ORDER BY ForumTopics.topic_id
Från följande SQL sats får jag felet:
Microsoft JET Database Engine fel '80040e14'
Invalid pattern string
Det uppstår när jag matar in ett [ tecken i sökfältet som "kodas om" till LIKE '%[%' ... Hur ska man göra för att undgå detta?
Dy kan ju testa med att byta [ mot [[]
Vet inte om det hjälper dock.
Det finns en escape klausul i SQL
col like '%\[%' escape '\'
vilket betyder att [ inte tolkas som ett specialtecken, vet ej om Access stöder detta dock.
Helsjukt fel...
Jag gjorde i alla fall en funktion som fixar till strängen innan den körs i databasen (escape funkade inte i access):
' Sjuk buggfix:
' Gör om [ till [] om det inte finns någon ] i strängen.
' Ex: "Hesjan [hoppsan" blir "Hejsan []hoppsan".
Function convChar(tmp)
If inStr(tmp, "[") And Not inStr(tmp, "]") Then
tmp = Replace(tmp, "[", "[]")
End If
convChar = tmp
End Function
I access kan man använda uttryck som
c1 like 'A[BCD]E'
vilket matchar ABE ACE ADE
så att skriva
c1 like '%[]%'
-- eller
c1 like '%%'
är samma sak
däremot så borde
c1 like '%[[]%'
matcha en sträng som innehåller [
Så om du byter [ mot [] så blir väl din sökning inte korrekt.
Jo, konstigt nog så gjorde det.
Det blir fel så fort jag anger ett [ men inte avslutar med ett ]...
Ex: Nu söker jag efter ett [ tecken och detta kommer inte att funka
Ovanstående blir fel eftersom [ inte avslutas. Men däremot så kvittar det hur många ] jag skriver efteråt:
Ex: Nu söker jag efter []] och detta kommer faktiskt att funka!