Får inte detta att fungera! Vad använder du för anslutningssträng? Gör så här så blir de okänsligt mot stora och små bokstäver: Tack, det var jokertecknet som var fel! Normalt ersäter man ' med två ''. men eftersom man bar skall kunan skicka ett tecken så tar jag bar första tecknet av värdet. Jaha, ok.. Så det var därför du körde Left(char,1).. Access tillåter bara körandet av en SQL sats per anrop. Så faran är inte lika stor. Men t.ex. i MS SQL Server kan man köra flera SQL satser efter varandra.LIKE
Ska hämta de poster som börjar på bokstaven som QueryStringen innehåller, oavsett om det är stor eller liten bokstav i början av namnet.
<code>
char = LCase(Request.QueryString("char"))
char2 = UCase(Request.QueryString("char"))
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT ID, Name, Owner From album WHERE Name LIKE '" & char & "*' OR Name Like '" & char2 & "*'"
rs.Open SQL, Connection, 1, 2
</code>Sv: LIKE
Om du använder SQL server ELE OLEDB providern för Access är det % som är jokerteken.
Access är okänsligt mot stora och små bokstäver.
Du bör oxå skyadda din kod mot att man skickar SQL. T.ex.
<code>
char = LCase(Left(Request.QueryString("char"), 1))
SQL = "SELECT ID, Name, Owner From album WHERE Name LIKE '" & char & "%'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Connection
</code>Sv: LIKE
<code>
SQL = "SELECT ID, Name, Owner From album WHERE UPPER(Name) LIKE '" & UCASE(char) & "%'"
</code>Sv: LIKE
Nu blev jag lite nyfiken, hur skyddar man koden på det sättet?Sv: LIKE
Då kan man inte infoga en sql sats.Sv: LIKE
Löste det genom att använda en select med bokstäverna i å sen hämta värdet med Request.Form.
Vad kan man åstadkomma för skada genom att skicka en SQL-sträng via ett formulär då? Om man skulle använda sig av DELETE och liknande kommandon eller?Sv: LIKE
Man bör alltid sträva efter att begränsa öppningar i sin kod så mycket som möjligt.