---
title: "Fel vid användning av Recset"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/39781-fel-vid-användning-av-recset"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Qimen"
published: "2002-03-16T16:05:33.000Z"
updated: "2002-03-17T19:38:15.000Z"
replies: 15
views: 388
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/databaser-sql/39781-fel-vid-användning-av-recset"
---

# Fel vid användning av Recset

## #1 — Qimen, 2002-03-16T16:05Z

Hej
Jag har ett script som läger till info till en databas. Detta fungerade bra med access men nu med MySql så får jag felmeddelandet:

> En OLE DB-åtgärd i flera steg genererade fel. Kontrollera alla OLE DB-statusvärden som finns tillgängliga. Inget arbete utfördes. 
> 
> /secure/add_member.asp, rad 50

Rad 50 är: 

```
Addera = "Select * From members"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

RecSet.AddNew

RecSet("fnamn") = Request.Form("fnamn")    [B]<-- Denna[/B]
RecSet("enamn") = Request.Form("enamn")
RecSet("stad") = Request.Form("stad")	
RecSet("epost") = Request.Form("email")	
RecSet("username") = Request.Form("username")
RecSet("losen") = Request.Form("pw1")
RecSet("datum") = Date
RecSet("when_user") = Date
RecSet("status") = "offline"

RecSet.Update
RecSet.Close
```

 

Vad är felet?

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

## #2 — Jörgen HP, 2002-03-16T18:24Z

Det är ett väldigt ooptimalt sätt att göra en insert på, gör på följande sätt istället:

```
sql ="INSERT INTO members (fnamn, enamn, stad, epost, username, losen, [datum], when_user, status) " & _

" VALUES('" & Request.Form("fnamn") & "', '" & Request.Form("enamn") & "', '" & Request.Form("stad") & "', '" & Request.Form("epost") & "', " & _
" '" & Request.Form("username") & "', '" & Request.Form("losen") & "', Date(), Date(), offline)"

Connect.Execute sql,,128
```

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

## #3 — Qimen, 2002-03-16T21:50Z

Hej Jörgen HP, tack för koden det funkade perfekt..  :birp

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

## #4 — Jörgen HP, 2002-03-16T23:26Z

Vassegoo  :bire

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

## #5 — Qimen, 2002-03-17T09:40Z

Hej igen
Undrar bara kan man inte använda den koden på fler ställen?
Min sida för inloggning använde sig åsså av Recset men så vill mySql gå med på det heller så jag bytte till din. Men då får jag felmeddelandet:

> Microsoft OLE DB Provider for ODBC Drivers fel '80004005' 
> 
> \[TCX\]\[MyODBC\]Duplicate entry '' for key 2 
> 
> /secure/login_check.asp, rad 21

och rad 21 är just den raden: 

```
Connect.Execute sql,,128
```

Ligger felet i koden eller kan det vara nått annat? Spelar det nånn roll om jag använder din kod två ggr i samma dokument?

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

## #6 — Jörgen HP, 2002-03-17T10:21Z

Nej, det spelar ingen roll. Du har antaglien använt fnuttar lite konstigt. Du ska använda följande mönster:

```
'" & variabel_text_typ & "'

'" & variabel_datum_typ & "'

" & variabel_numerisk_typ & "
```

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

## #7 — Qimen, 2002-03-17T13:24Z

humm jag undrar det också. Om jag bara har ett värde jag vill lägga till hur gör jag då? Ska man inte lägga till utan uppdatera när man redan har ett annat värde?

Jag fortfarande det felet.  :(

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

## #8 — LarsG, 2002-03-17T14:05Z

Jo, det verkar som om du har definierat att det finns kolumner som är unika (username?) och då får du fel om du gör insert på samma värde. Det låter som om det är en update du skall göra.

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

## #9 — Qimen, 2002-03-17T15:08Z

Alldeles rätt. I databsen så har "Username" unique men det är ju inte det fältet som ska uppdateras.  Det är fältet status som är online då och ska uppdateras till offline.

Hur ska koden se ut om man vill updatera det? :q

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

## #10 — LarsG, 2002-03-17T15:15Z

En update kan se ut så här

```
update members set fname = 'Nils' , ename = 'Bilhorn'
where username = 'nisse'
```

Om du har fler kolumner som du vill uppdatera så är det bara att lägga till dom med ett komma emellan.

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

## #11 — Qimen, 2002-03-17T15:22Z

Men det borde funka samma om det gäller många va?
För den ska ändra alla till offline som har varit inaktiva i 45 min.

```
Do Until RecSet.EOF

	If RecSet("status") = "online" AND DateDiff("n", RecSet("datum"), Now) > 45 Then
		
sql ="[B]här ska då update koden sitta[/B]"

Connect.Execute sql,,128
		
	End If
	
RecSet.MoveNext
Loop
	
RecSet.Close
```

Men hur ska den koden se ut?

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

## #12 — Qimen, 2002-03-17T15:25Z

Kan den koden se ut så här?

```
[COLOR=#660000]sql ="update members set status = 'offline'"[/COLOR]
```

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

## #13 — Qimen, 2002-03-17T15:48Z

Nopp det kunde man inte. Kan man göra typ så här:

```
[COLOR=#660000]sql ="update members set status = 'offline' where status = 'online' and DateDiff("n", RecSet("datum"), Now) > 45"[/COLOR]
```

Kan man inte göra nått liknande?   :q

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

## #14 — LAMP, 2002-03-17T16:13Z

MySQL har egna funktioner för datumjämförelser:

```
WHERE Datum < SUBDATE(NOW(),INTERVAL 45 MINUTE)
```

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

## #15 — Qimen, 2002-03-17T19:02Z

Alltså när jag nu försökte göra så att när man loggar in ska den kolla upp alla som har varit inaktiva i 45 minuter och sätta dem på offline om dem är på online. Men det vill inte funka. Jag provade så här:

```
 [COLOR=#660000]Do Until RecSet.EOF

sql ="update members set status = 'offline' where Datum < SUBDATE(NOW(),INTERVAL 45 MINUTE)"

Connect.Execute sql,,128
		RecSet.Update		
	End If
	
RecSet.MoveNext
Loop
	
RecSet.Close[/COLOR]
```

 Jag får felmeddelande om att Programsats förväntas. Så pekar den på "End if"

Var är felet nu?

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

## #16 — @nders, 2002-03-17T19:38Z

Du ska inte köra detta i en loop.

Följande bör räcka:

```
 sql ="update members set status = 'offline' where Datum < SUBDATE(NOW(),INTERVAL 45 MINUTE)"

Connect.Execute sql,,128
```

Mvh,

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/39781-fel-vid-användning-av-recset
