Hej!
Jag får följande felmeddelande när jag försöker lägga till i databasen:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket ''It's Over!')'.
/add.asp, rad 41
(texten som jag skrev in var "It's Over!", utan citationstecken alltså...)
Här är koden (som ser till att man inte ska kunna lägga till dubbletter..):
strNAMN = Request.Form("input_NAMN")
strNAMN2 = Request.Form("input_NAMN2")
strNAMN3 = Request.Form("textarea_NAMN3")
strNAMN3 = Replace(strNAMN3,vbcrlf,"<br>")
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("databas.mdb")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
' Kolla om det finns en dubblett.
SQL1 = "Select * From Texter Where NAMN='" & strNAMN & "' AND NAMN2 ='" & strNAMN2 & "'"
rs.Open SQL1, Conn, 1, 2
If rs.EOF Then
' Ingen dubblett hittad...lägg till i databasen.
SQL2 = "Insert Into Texter(NAMN, NAMN2, NAMN3) Values('" & strNAMN & "','" & strNAMN2 & "','" & strNAMN3 & "')"
' Rad 41 nedan
Conn.Execute SQL2,,128
' Posten inlagd!
Response.ReDirect "ny.asp"
' ######### Posten finns redan i databasen! #########
Else
%>
<center>
<br><br>
<%= strNAMN %> <%= strNAMN2 %>finns redan i databasen.<br>
<a href="javascript:history.back(-1)">Tillbaka till lägg till-sidan</a>
</center>
<%
End If
rs.close
%>
Du får med dig dubbla fnuttar (') när du gör SELECT:en.
Använd följande funktion på variablerna strNAMN1 och strNAMN2:
Function SqlString(ByVal sText)
If isNull(sText) OR isEmpty(sText) OR sText = "" Then Exit Function
sText = Replace(sText, "'", "''")
SqlString = Trim(sText)
End Function
Och sedan:
Kolla om det finns en dubblett.
SQL1 = "Select * From Texter Where NAMN='" & SqlString(strNAMN) & "' AND NAMN2 ='" & SqlString(strNAMN2) & "'"
...
SQL2 = "Insert Into Texter(NAMN, NAMN2, NAMN3) Values('" & SqlString(strNAMN) & "','" & SqlString(strNAMN2) & "','" & SqlString(strNAMN3) & "')"