webForumDet fria alternativet

Kolla dubbletter...lägga till i databas?

ASP

3 svar · 239 visningar · startad av henrik2001

Medlem sedan dec. 2000241 inlägg
Frågan#1

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
%>

Vad är fel??

/Henrik

Medlem sedan juni 20019 024 inlägg
#2

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) & "')"
Medlem sedan feb. 20012 412 inlägg
#3

Du måsta escapa bort enkla citattecken ( ' ) på dina variabler som ska in i en databas på följande sätt:

strNAMN = replace(Request.Form("input_NAMN"),"'","''")

Eller bygg en funktion av det istället.

mvh Jörgen HP

Medlem sedan dec. 2000241 inlägg
#4

Tack för hjälpen...klockan två på natten dessutom!
wF: 24/7!
=)

/Henrik

249 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)