---
title: "Göra om till annan kod"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/131223-göra-om-till-annan-kod"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Asa"
published: "2005-07-09T21:07:33.000Z"
updated: "2005-08-10T19:54:10.000Z"
replies: 17
views: 536
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/131223-göra-om-till-annan-kod"
---

# Göra om till annan kod

## #1 — Asa, 2005-07-09T21:07Z

Vill ha hjälp att ändra denna kod så den blir bättre och funkar som den ska. Gärna exempel för MySQL databas och Access databas.

```
DT = Now()
Set RS = Conn.Execute("Select U.status,A.active_check,U.userid From com_users U, com_active A Where A.userID=U.userId")
  Do Until RS.EOF
    If RS(0) = 1 And DateDiff("n", RS(1), DT) > 45 Then
      Conn.Execute("Update com_users Set status=0 Where userid=" & FixaTecken(RS(2)))
      Conn.Execute("Update com_active Set status_var='Ej inloggad' Where userid=" & FixaTecken(RS(2)))
    End If
  RS.MoveNext
  Loop
RS.Close:Set RS=Nothing
```

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

## #2 — tydal, 2005-07-09T21:12Z

SELECT status, active_check, com_users.userid FROM com_users LEFT JOIN com_active USING (userID)

skulle jag nog tro att du menar i Mysql.

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

## #3 — Asa, 2005-07-09T21:20Z

Men Checken i loopen verkar strula lite. Har jag skrivit fel kanske? Där den kollar tiden.. Med DateDiff..

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

## #4 — @nders, 2005-07-10T07:21Z

> **Asa skrev:**
>
> Men Checken i loopen verkar strula lite. Har jag skrivit fel kanske? Där den kollar tiden.. Med DateDiff..

Ja, kanske har du skrivit fel. Skriv ut värdena och testa. Glöm inte att subtypskonvertera heller. Strängen "1" är ju inte samma sak som siffran 1 till exempel.

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

## #5 — LarsG, 2005-07-10T13:37Z

```
   Update com_users 
    Set status=0 
    Where userid in (
        select userID 
          from com_active
           where datediff('n',active_check,now()) > 45)
     and status = 1

   Update com_active 
    Set status_var = 'Ej inloggad' 
    where datediff('n',active_check,now()) > 45
      and userid in (
          select userid
            from com_users 
           where status = 1)
```

Gör update direkt och sluta fjanta runt med recordset. 

Jag förstår inte din datamodell såtillvida vilken nytta du har av tabellen com_active. Varför räcker det inte med com_users?

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

## #6 — Asa, 2005-07-10T14:45Z

I com_active kollas tiden då man senast var aktiv samt var man är på sidan. Nån sa att jag skulle dela så dessa värden låg i en egen tabell.

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

## #7 — Asa, 2005-07-10T17:00Z

Koden funkar ej. BLir felmess.

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select userID from com_active where datediff('n',active_check,n

/applikationer/community/com_large/login.asp, line 16

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

## #8 — Engine^, 2005-07-11T09:29Z

*bortredigerat*

<http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html>

**red.**
Redigerade bort en osanning.

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

## #9 — LarsG, 2005-07-11T09:37Z

Jo, now() finns i Mysql. curdate() returnerar enbart datum och inte tid ... 

Det är datediff som har olika syntax och semantik i Mysql och Access. Den kod som jag skrev var ämnad för Access. I Mysql så får man använda 

```
date_add(active_check,interval 45 minute) < now()
```

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

## #10 — Asa, 2005-07-11T11:17Z

Ahh, okej! Tackar

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

## #11 — Asa, 2005-07-11T12:13Z

Blir följande fel i denna kod.

```
Conn.Execute("Update com_users Set status=0 Where userid in (select userID from com_active where date_add(active_check,interval 45 minute) < now()) and status = 1")
Conn.Execute("Update com_active Set status_var = 'Ej inloggad' where date_add(active_check,interval 45 minute) < now() and userid in (select userid from com_users where status = 1)")
```

Felmess:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select userID from com_active where date_add(active_check,inter

/applikationer/community/com_large/login.asp, line 7

Rad 7 är den övre raden av de två...

Är det onödigt att ha tiden samt aktiviteten i en egen tabell som jag har? Nån sa till mig att det var bra att ha så...

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

## #12 — @nders, 2005-07-11T12:18Z

Vilken version av MySQL använder du?

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

## #13 — Asa, 2005-07-11T12:19Z

4\.0.17-nt står det i MySQL Front Sen skall jag använda det på en som har version 4.0.20a-nt

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

## #14 — @nders, 2005-07-11T12:27Z

Ok. Då är det det det (!) beror på.

Subqueries stöds från version 4.1 och uppåt.

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

## #15 — Asa, 2005-07-11T12:28Z

Hmm, hur skall det stå då?

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

## #16 — Asa, 2005-07-11T13:34Z

Fick denna kodsnutt av en kille som verkade fungera. Nån som har nån kommentar till det?!

```
UPDATE com_users, com_active SET 
com_users.status=0, com_active.status_var='Ej inloggad'
WHERE com_users.status=1 AND com_active.userid=com_users.userid 
AND com_active.active_check <= (now() - interval 45 minute)
```

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

## #17 — Asa, 2005-07-17T10:08Z

Den koden verkar ändå inte fungera som den ska. Har testat dölja kodsnutten så det är den som strular och gör så man loggas ut fast man är aktiv. Nån som ser varför i min kodsnutt? Använder MySQL databas.

status är tinyint, status_var är varchar, userid är int och active_check är datetime.

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

## #18 — Asa, 2005-08-10T19:54Z

Tar tillbaka det. Verkar fungera iallafall.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/131223-göra-om-till-annan-kod
