webForumDet fria alternativet

vad skall det stå för att fungera?

ASP

6 svar · 216 visningar · startad av Percy

Medlem sedan mars 2000187 inlägg
Frågan#1

Hej!
Vad skall det stå för att fungera? Jag kan inte se något fel i SQL-satsen!

<%
'sökväg till databas
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=links.mdb"
SQLStmt = "UPDATE links SET namn = "'" & Request.Form("namn") & "'" WHERE id = "'" & Request.Form("id") & "'""
Set RS = Connection.Execute(SQLStmt)
%>

får följande felmeddelane som den hänvisar till rad 11 vilket är raden som börjar med set RS:
"Data type mismatch in criteria expression"

Vore även tacksam om någon kunde tala om hur man skriver då man vill uppdatera med rs-objektets metod update?

Medlem sedan maj 2000376 inlägg
#2

Kolla i databasen vad du har för datatyp på ID och NAMN. Skulle tro att felet ligger på ID som du behandlar som en textsträng i SQL-frågan, men som säkert är integer el. likn. i databasen.

Medlem sedan mars 2000187 inlägg
#3

Jag har en sida som infogar länkar i databasen och där fungerar det ok! Jag har id som räknare och namn som text i databasen.

Medlem sedan maj 2000376 inlägg
#4

Prova att skriva WHERE id LIKE
istället för WHERE id =

------------------
CF

Medlem sedan dec. 19996 721 inlägg
#5

Jo, men som cf säger, du måste ha rätt datatyp på ID, och dessutom var din SQL-sträng lite tillknasad. Det ska alltså vara:

SQLStmt = "UPDATE links SET namn = "'" & Request.Form("namn") & "' WHERE id = " & Request.Form("id")

Dessutom räcler det att bara köra Connection.Execute(SQLStmt) (utan set RS), eftersom du inte får tillbaka något.

Visst kan jag visa hur du använder rs.update, men jag vill inte :) Det är inte en bra teknik.

------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB

[Redigerat av emission den 25 jul 2000]

Medlem sedan mars 2000187 inlägg
#6

Vad gör den till dålig/mindre bra framför den andra?
Enligt en bok jag läst stod det att man bör använda sig av metoden update så fort det fanns en risk att data kunde innehålla citattecken och apostrofer? Hur löser jag detta om jag kör en SQL-fråga?

Medlem sedan dec. 19996 721 inlägg
#7

Vad gör den till dålig/mindre bra framför den andra?

Den är dålig eftersom den kräver att man skapar ett recordset, och det blir extra dåligt då många använder "SELECT * from tabell" för att skapa detta. Med vanlig INSERT eller UPDATE blir det ju bara:


 Hej databasen! 
 
 Uppdatera med det här!

Med rs.update blir det


Hej databasen!

Sök upp den post i databasen som.....

Skapa ett recordset som tar onödigt med minne, och håller i kopplingen till databasen onödigt länge, och lägg sökresultatet där

Sätt dit det nya värdet

Uppdatera databasen

Hur löser jag detta om jag kör en SQL-fråga?

Genom att byta ut alla apostrofer till två apostrofer

replace(sträng,"'","''")

[Redigerat av emission den 25 jul 2000]

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