---
title: "Fel i Form!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/78723-fel-i-form"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "asp"
published: "2003-06-02T18:37:24.000Z"
updated: "2003-06-05T06:51:00.000Z"
replies: 18
views: 471
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/78723-fel-i-form"
---

# Fel i Form!

## #1 — asp, 2003-06-02T18:37Z

Hej!

Med denna kod får jag felmeddelandet:

```
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i FROM-instruktion.
```

Här kommer koden..

```
strSQL = "SELECT bmal, hmal, " &_
"(SELECT COUNT(*) FROM tblSpel WHERE hmal > bmal) AS vinster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal < bmal) AS forluster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal = bmal) AS oavgjorda " & _
"FROM tblSpel" &_
"WHERE ligaid = " & intID & " " &_
"GROUP BY lagid"
Set objRSH = Conn.Execute(strSQL)
```

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

## #2 — @nders, 2003-06-02T18:53Z

Mellanslag mellan tabellnamn och WHERE.

Skriv ut SQL-frågan när du får fel, det är mycket lättare att fånga felen själv då.

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

## #3 — asp, 2003-06-02T18:55Z

Hur skriver man ut den då?

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

## #4 — asp, 2003-06-02T18:57Z

Nu fick jag plötsligt felmesset:

```
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'bmal'.
```

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

## #5 — @nders, 2003-06-02T19:00Z

> Hur skriver man ut den då?

Man kan använda Response.write exempelvis.

Du måste också ha med alla fält du selectar i GROUP BY-instruktionen.

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

## #6 — asp, 2003-06-02T19:03Z

Ser inte att det är för få..

```
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
```

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

## #7 — aasah, 2003-06-02T19:40Z

Du har 
SELECT hmal, bmal FROM..... GROUP BY lagid
Den kolumn du har i GROUP BY måste finnas med i SELECT-satsen, alltså:

SELECT hmal, bmal, lagid FROM..... GROUP BY lagid

Anledningen är att  du ju får ut olika värden för de olika lagen och om lagid inte skrivs ut då så kan inte resultatet skrivas ut på ett vettigt sätt. Och ja, felmeddelandet låter som om felet var "på andra hållet".... men det är det inte.

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

## #8 — asp, 2003-06-02T20:02Z

Varför fungerar inte denna kod då?

```
strSQL = "SELECT bmal, hmal, " &_
"(SELECT COUNT(*) FROM tblSpel WHERE hmal > bmal) AS vinster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal < bmal) AS forluster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal = bmal) AS oavgjorda " & _
"FROM tblSpel " &_
"WHERE ligaid = " & intID & " " &_
"GROUP BY hmal"
Set objRSH = Conn.Execute(strSQL)
```

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

## #9 — solbulle, 2003-06-02T20:08Z

För att den är lika som den första du postade?

Jag antar att du skämtar...

> **@nders skrev:**
>
> Du måste också ha med alla fält du selectar i GROUP BY-instruktionen.

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

## #10 — asp, 2003-06-03T06:40Z

Men varför fungerar inte denna då?

```
strSQL = "SELECT bmal, hmal, " &_
"(SELECT COUNT(*) FROM tblSpel WHERE hmal > bmal) AS vinster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal < bmal) AS forluster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal = bmal) AS oavgjorda " & _
"FROM tblSpel " &_
"WHERE ligaid = " & intID & " " &_
"GROUP BY hmal, bmal"
Set objRSH = Conn.Execute(strSQL)
```

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

## #11 — Engine^, 2003-06-03T07:01Z

Jag ser inte vad som kan vara fel med det där. Vad är det som blir fel?

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

## #12 — aasah, 2003-06-03T19:04Z

Den borde rimligen inte göra det du vill. 

Group by partitionerar data efter de attribut som listas. Jag kan förstå att du vill gruppera på lagid, men knappast på hmal och bmal.

Exempel

```
Tabell
Lagid   hmal   bmal
AIK      3         9
DIF      3         6
HIF      3         6

Select * from Tabell group by bmal
bmal = 6
Lagid    hmal
DIF       3
HIF       3

bmal = 9
Lagid    hmal
AIK       3
```

Inte är du intresserad av att bunta samman lag som råkar ha lika många hmal och bmal, heller? Du vill väl bunta ihop de rader som har samma lagid?

Det brukar fungera att skriva fler kolumner i selectsatsen än i group by. Så testa mitt förslag ovan.

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

## #13 — asp, 2003-06-04T14:18Z

Det jag vill att är att få tabellen att se ut såhär:

Lagid hmal - bmal
Lagid hmal - bmal
Lagid hmal - bmal
Lagid hmal - bmal

Så när man tittar så står det tex:

GAIS   23-2
IFK      22-22
ÖIS     2-23

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

## #14 — asp, 2003-06-04T15:40Z

Kommer denna kod göra det som jag vill?

```
strSQL = "SELECT ALL " &_
"(SELECT COUNT(*) FROM tblSpel WHERE hmal > bmal) AS vinster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal < bmal) AS forluster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal = bmal) AS oavgjorda, " & _
"(SELECT Sum(hmal) FROM tblSpel) AS gjorda, " & _
"(SELECT Sum(bmal) FROM tblSpel) AS inslappta " & _
"FROM tblSpel " &_
"WHERE ligaid = " & intID & " " &_
"GROUP BY lagid " &_
"ORDER BY lagid DESC"
Set objRSH = Conn.Execute(strSQL)
```

Jag får felmeddelandet:

```
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
```

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

## #15 — @nders, 2003-06-04T16:28Z

Vad är *Select all* ?

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

## #16 — asp, 2003-06-04T16:29Z

samma sak som SLETECT \*?

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

## #17 — @nders, 2003-06-04T16:34Z

Finns det verkligen i Jet SQL? Varför inte använda \*? Dessutom, ska du selecta mer än just det, då saknar du ett kommatecken.

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

## #18 — asp, 2003-06-04T16:38Z

menar du att första raden skall se ut såhär?

```
strSQL = "SELECT *, " &_
```

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

## #19 — asp, 2003-06-05T06:51Z

Denna kod fungerar:

```
strSQL = "SELECT lagid, bmal, hmal " &_
"(SELECT COUNT(*) FROM tblSpel WHERE ligaid = " & intID & " AND hmal IS NOT null) AS matcher, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal > bmal AND ligaid = " & intID & ") AS vinster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal < bmal AND ligaid = " & intID & ") AS forluster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal = bmal AND ligaid = " & intID & ") AS oavgjorda, " & _
"(SELECT Sum(hmal) FROM tblSpel WHERE ligaid = " & intID & ") AS gjorda, " & _
"(SELECT Sum(bmal) FROM tblSpel WHERE ligaid = " & intID & ") AS inslappta " & _
"FROM tblSpel " &_
"WHERE ligaid = " & intID & " " &_
"GROUP BY bmal, hmal " &_
"ORDER BY bmal, hmal DESC"
Set objRSH = Conn.Execute(strSQL)
```

Men varför fungerar inte denna?

```
strSQL = "SELECT lagid, hlag, blag, hmal, bmal, " &_
"(SELECT COUNT(*) FROM tblSpel WHERE ligaid = " & intID & " AND hmal IS NOT null) AS matcher, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal > bmal AND ligaid = " & intID & ") AS vinster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal < bmal AND ligaid = " & intID & ") AS forluster, " & _
"(SELECT COUNT(*) FROM tblSpel WHERE hmal = bmal AND ligaid = " & intID & ") AS oavgjorda, " & _
"(SELECT Sum(hmal) FROM tblSpel WHERE ligaid = " & intID & ") AS gjorda, " & _
"(SELECT Sum(bmal) FROM tblSpel WHERE ligaid = " & intID & ") AS inslappta " & _
"FROM tblSpel " &_
"WHERE ligaid = " & intID & " " &_
"GROUP BY lagid, hlag, blag, hmal, bmal " &_
"ORDER BY lagid DESC"
Set objRSH = Conn.Execute(strSQL)
```

Saken är den att jag vill göra så att man räknar ut statistik för varje lag.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/78723-fel-i-form
