---
title: "Vad är fel?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/47260-vad-är-fel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Sammy"
published: "2002-07-05T12:53:20.000Z"
updated: "2002-07-05T14:00:29.000Z"
replies: 11
views: 423
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/47260-vad-är-fel"
---

# Vad är fel?

## #1 — Sammy, 2002-07-05T12:53Z

Vad är det för fel på den här "koden"?

\<%
 Set Connect = Server.CreateObject("ADODB.Connection")
 MdbFilePath = Server.MapPath("gbkif.mdb")
 Connect.Open "Driver={Microsoft Access Driver (\*.mdb)}; DBQ=" & MdbFilePath & ";"
 Set RStemp = Connect.Execute("SELECT \* FROM gastbok")

 RStemp.Addnew
 RStemp("namn")=Request.Form("namn")
 RStemp("epost")=Request.Form("epost")
 RStemp("inlagg")=Request.Form("inlagg")
 RStemp.Update 

 Connect.close
 Set Connect = nothing

 Response.redirect "default.asp"
%\>

Jag får felmeddelandet:

Aktuellt Recordset kan inte uppdateras. Det kan bero på en begränsning av providern eller den valda låstypen.
/test/gb_spara.asp, line 11

när jag försöker spara/uppdatera min 'gästbok'?

Line 11 =  RStemp.Update 

Vad gör jag för fel? Tacksam för svar!

Permalänk: https://www.webforum.nu/p/47260

## #2 — SPiN, 2002-07-05T13:00Z

Gör så här i stället:
Byt ut följande rader:

```
 Set RStemp = Connect.Execute("SELECT * FROM gastbok")

RStemp.Addnew
RStemp("namn")=Request.Form("namn")
RStemp("epost")=Request.Form("epost")
RStemp("inlagg")=Request.Form("inlagg")
RStemp.Update
```

Mot:

```
Connect.Execute( "INSERT INTO Gastbok (namn, epost, inlagg) VALUES('" & Request.Form( "namn" ) & "', '" & Request.Form( "epost" ) & "', '" & Request.Form( "inlagg" ) & "'" )
```

Då sköter du allt med SQL:en istället, vilket blir effektivare och snyggare.

Permalänk: https://www.webforum.nu/p/713636

## #3 — toha, 2002-07-05T13:04Z

Testa att ändra LockType för recordset:et till adLockOptimistic (3):

```
...
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" 
Set RStemp = Connect.Execute("SELECT * FROM gastbok") 
RSTemp.LockType = 3   ' adLockOptimistic
...
```

Du kanske måste köra sql-frågan på ett recordset-objekt och ställa in locktype:n vid Open()-metoden (4:e parametern). Dvs:

```
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM gastbok", "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";", , 3
```

Permalänk: https://www.webforum.nu/p/713638

## #4 — Sammy, 2002-07-05T13:05Z

Aha.. det var ju också en variant.. tack för ditt snabba svar..

Testade och fick åter på nytt ett felmeddelande?

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Syntaxfel i INSERT INTO-uttryck.
/test/gb_spara.asp, line 6

Permalänk: https://www.webforum.nu/p/713639

## #5 — OveRRidE, 2002-07-05T13:05Z

Du kan inte använda metoden addnew på recordsetobjektet om du inte öppnar med en annan cursortype.

```
Set RsTemp = Server.CreateObject("ADODB.Recordset")
Set Connect = Server.CreateObject("ADODB.Connection") 
MdbFilePath = Server.MapPath("gbkif.mdb") 
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" 
SQL = "SELECT * FROM gastbok"
RStemp.Open SQL, Connect, adOpenStatic, adLockOptimistic
```

Permalänk: https://www.webforum.nu/p/713640

## #6 — skyman, 2002-07-05T13:05Z

Funkar det om du gör såhär:
Connect.Open "driver={Microsoft Access Driver (\*.mdb)};dbq="& Server.MapPath("gbkif.mdb")

Permalänk: https://www.webforum.nu/p/713643

## #7 — toha, 2002-07-05T13:08Z

> Då sköter du allt med SQL:en istället, vilket blir effektivare och snyggare.

Kan INTE hålla med. Effektivare - javisst, men absolut inte snyggare. Dessutom måste man parse:a alla request:en.

Permalänk: https://www.webforum.nu/p/713644

## #8 — LarsG, 2002-07-05T13:20Z

```
Connect.Execute "INSERT INTO Gastbok (namn, epost, inlagg) VALUES('" & Request.Form( "namn" ) & "', '" & Request.Form( "epost" ) & "', " & Request.Form( "inlagg")  & ")"
```

Hur det skall se ut beror på vilka datatyper du har. Jag gissar att innlagg är numeriskt.

Permalänk: https://www.webforum.nu/p/713653

## #9 — SPiN, 2002-07-05T13:47Z

> Kan INTE hålla med. Effektivare - javisst, men absolut inte snyggare. Dessutom måste man parse:a alla request:en.

Tja, smaken är som baken. Jag tycker att det blir snyggare med SQL-varianten. :)

Permalänk: https://www.webforum.nu/p/713663

## #10 — Sammy, 2002-07-05T13:55Z

> Hur det skall se ut beror på vilka datatyper du har. Jag gissar att innlagg är numeriskt.

Nej.. det är ren text (PM) eftersom det är inlägget besökaren skriver i gästboken?

Vad har det för betydelse på själva sql-satsen?

Permalänk: https://www.webforum.nu/p/713672

## #11 — skyman, 2002-07-05T13:58Z

> **Sammy skrev:**
>
> Vad har det för betydelse på själva sql-satsen?

 Om det är text (char) så ska det vara enkelfnuttar (') runt uttrycket som de övriga...

```
Connect.Execute "INSERT INTO Gastbok (namn, epost, inlagg) VALUES('" & Request.Form( "namn" ) & "', '" & Request.Form( "epost" ) & "', '" & Request.Form( "inlagg")  & "')"
```

Permalänk: https://www.webforum.nu/p/713674

## #12 — LarsG, 2002-07-05T14:00Z

```
Connect.Execute "INSERT INTO Gastbok (namn, epost, inlagg) VALUES('" & Request.Form( "namn" ) & "', '" & Request.Form( "epost" ) & "', '" & replace(Request.Form( "inlagg"),"'","''")  & "')"
```

I så fall skall det vara apostrofer kring värdet. Sen så bör man, av säkerhetsskäl, byta alla förekomster av ' till ''

Permalänk: https://www.webforum.nu/p/713676

---

Tråden på webben: https://www.webforum.nu/amne/asp/47260-vad-är-fel
