---
title: "Posträknande meny"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/103365-posträknande-meny"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Meng"
published: "2004-05-11T12:18:19.000Z"
updated: "2004-05-12T09:24:17.000Z"
replies: 21
views: 449
page: 1
pages: 2
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/103365-posträknande-meny"
---

# Posträknande meny

_Sida 1 av 2._

## #1 — Meng, 2004-05-11T12:18Z

Tjena jag håller på med en meny som också visar hur många poster det finns under varje meny, har nog byggt det hela rättså korkat men det verkar fungera i alla fall. Innan körde jag hela menyn som en include och nu när jag tog bort detta slutatde det hela fungera.. fick detta fel messet:

```
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1390 Thread 0x148c DBC 0x15ccffc Jet'. 

/afd/afd-it/kategorimeny.asp, line 14
```

 

Koden för att räkna posterna är denna:

```
<%Set cn = Server.CreateObject("ADODB.Connection")
	Cn.Open "driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '2' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>
```

 
Den förekommer 7 ggr i varje meny och menyn finns i 7 olika versioner på kategorimeny.asp skilda med en if sats, kanske det som skapar problem?

Rad 14 är:

```
	Cn.Open "driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("db/opgave.mdb")
```

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

## #2 — Jesper T, 2004-05-11T12:42Z

Tips: byt drivern mot microsoft.jet-providern i stället.

```
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")
```

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

## #3 — Jesper T, 2004-05-11T12:44Z

Plus att du saknar en '(' här:  Cn.Open("drive...

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

## #4 — Meng, 2004-05-11T13:32Z

Ja nu verkar det funka.. 

varje meny ser ut så här kan man inte göra det annorlunda?

```
	  <tr height="24">
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
	    <td background="../../include/images/meny_inaktive.gif" align="center" width="147" valign="middle" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_h.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_inaktive.gif)'">
<a target="sgr2" href="opgave2.asp?do=inne&kat=2"><b>Software Install 
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '2' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>

</b></a></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
<td background="../../include/images/meny_inaktive.gif" align="center" valign="middle" width="147" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_h.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_inaktive.gif)'">
<a target="sgr2" href="opgave2.asp?do=inne&kat=3"><b>Hardware Install
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '3' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>

</b></a></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
<td background="../../include/images/meny_inaktive.gif" align="center" valign="middle" width="147" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_h.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_inaktive.gif)'">
<a target="sgr2" href="opgave2.asp?do=inne&kat=4"><b>Software problem
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '4' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>

</b></a></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
<td background="../../include/images/meny_inaktive.gif" align="center" width="60" valign="middle" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_ss.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_inaktive.gif)'">
<a target="sgr2" href="opgave2.asp?do=inne&kat=5"><b>Virus
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '5' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>

</b></a></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
<td background="../../include/images/meny_inaktive.gif" align="center" width="93" valign="middle" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_s.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_inaktive.gif)'">
<a target="sgr2" href="opgave2.asp?do=inne&kat=6"><b>Oversigter 
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '6' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>

</a></b></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
<td background="../../include/images/meny_inaktive.gif" align="center" width="147"  valign="middle" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_h.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_inaktive.gif)'">
<a target="sgr2" href="opgave2.asp?do=inne&kat=7"><b>Lager & Oprydning

<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '7' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>
</b></a></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
<td background="../../include/images/meny_aktive_ss.gif" align="center" width="60" valign="middle" height="24"  onmouseover="this.style.backgroundImage='url(../../include/images/meny_aktive_ss.gif)'" onmouseout="this.style.backgroundImage='url(../../include/images/meny_aktive_ss.gif)'">
<font color="#9E0056"><b>Alle
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")
set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '1' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>
</b></font></td>
<td background="../../include/images/meny_inaktive.gif" height="24">&nbsp;</td>
	  </tr>
```

 

Allså så man bara öppnar databasen en gång och sen bara anger att det ska vara karegori = '1,2 osv.. ' på varje?

Hur ska det se ut?

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

## #5 — @nders, 2004-05-11T13:33Z

Till att börja med kan du ju återanvända connectionobjektet. Det är himskans onödigt, och dumt, att stänga, destruera, skapa och öppna det hela tiden.

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

## #6 — Meng, 2004-05-11T13:43Z

Jo det var ju det jag tänkte  :e  men hur gör man?

```
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb")%>
```

 
I toppen och 

```
<%set rs = cn.execute("SELECT count(*) as antal FROM opgave WHERE kategori = '2' AND status <> '4' ")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing%>
```

 
på varje jag vill ha räknad och i botten:

```
<%	cn.close
Set cn=nothing%>
```

 

Funkar detta?

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

## #7 — Meng, 2004-05-11T14:25Z

Rättså ofta när jag uppdaterar, alltså inte varje gång får jag fel:

```
Microsoft JET Database Engine error '80004005' 

The Microsoft Jet database engine cannot open the file 'c:\inetpub\wwwroot\afd\afd-it\db\opgave.mdb'. It is already opened exclusively by another user, or you need permission to view its data. 

/afd/afd-it/kategorimeny.asp, line 52
```

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

## #8 — clarkbones, 2004-05-11T16:06Z

Du har en tabell öppen i designläge i Access förmodligen

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

## #9 — Meng, 2004-05-12T07:28Z

Nä den gör så bara man uppdaterar ibland.. finns det inget smartare sätt att räkna posterna?

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

## #10 — @nders, 2004-05-12T07:44Z

Du kan plocka fram allt i en select-fråga.

```
SELECT Kategori, COUNT(*) AS Antal FROM opgave GROUP BY Kategori ORDER BY Kategori
```

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

## #11 — Meng, 2004-05-12T07:51Z

hur skriver jag ut det då på sidan? RS(antal) ?

**edit:** Vad menar du med " SELECT Kategori, " de fältet har väl inget med saken att göra?

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

## #12 — @nders, 2004-05-12T07:53Z

Ja, gör en vanlig loop och skriv ut kategorinummer och antal.

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

## #13 — @nders, 2004-05-12T07:54Z

> edit: Vad menar du med " SELECT Kategori, " de fältet har väl inget med saken att göra?

Hur ska du annars veta vilket antal som hör till vilken kategori :q

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

## #14 — Meng, 2004-05-12T07:54Z

hum förstår inte riktigt hur du menar, i vilket fall måste jag ju göra en ny select 7 ggr på varje sida.

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

## #15 — @nders, 2004-05-12T07:59Z

Va?

Varför då?

Med den SQL-fråga jag gav dig får du ett recordset som innehåller lika många poster som det finns kategorier.

```
Kategori   Antal
--------------------
1          5
2          9
3          0
4          2
5          8
6          3
7          12
```

Vad är du ute efter?

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

## #16 — Meng, 2004-05-12T08:11Z

förstår bara inte hur jag ska använda detta i min kod.. jag har 2 olka sidor också en som visar allt som inte har status\<\>"4" och en som visar status="4" och den ska ju räkna posterna på varje. kan du inte beskriva mer hur du tänkt att jag ska använda koden?

```
<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb"))
set rs = cn.execute("SELECT Kategori, COUNT(*) AS Antal FROM opgave GROUP BY Kategori ORDER BY Kategori")
	Response.Write rs("antal")
	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>
```

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

## #17 — @nders, 2004-05-12T08:23Z

```
<%Set cn = Server.CreateObject("ADODB.Connection")

Cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb"))
set rs = cn.execute("SELECT Kategori, COUNT(*) AS Antal FROM opgave GROUP BY Kategori [b]WHERE status <> '4'[/b] ORDER BY Kategori")
```

Det är ju bara att loopa precis som vanligt?

```
while not rs.eof
   response.write "Kategori " & rs("Kategori") & ": " & rs("Antal") & "<br>"
   rs.movenext
wend
```

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

## #18 — Meng, 2004-05-12T08:58Z

Men varför kommer den upp o säger att databasen redan är öppen hela tiden? vi är 2 st som använder denna sidan men det borde väl inte vara några problem? Databasen är inte öppen i Access heller..

```
Microsoft JET Database Engine error '80004005' 

The Microsoft Jet database engine cannot open the file 'c:\inetpub\wwwroot\afd\afd-it\db\opgave.mdb'. It is already opened exclusively by another user, or you need permission to view its data. 

/afd/afd-it/kategorimeny.asp, line 8
```

 

Gjorde såhär nu:

```
<%Set cn = Server.CreateObject("ADODB.Connection")

Cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/opgave.mdb"))
set rs = cn.execute("SELECT Kategori, COUNT(*) AS Antal FROM opgave GROUP BY Kategori WHERE status <> '4' ORDER BY Kategori")%>

<a target="sgr2" href="opgave2.asp?do=inne&kat=2"><b>Software Install </b></a>

<%while not rs.eof
   response.write "Kategori " & rs("Kategori") & ": " & rs("Antal") & "<br>"
   rs.movenext
wend%>

<a target="sgr2" href="opgave2.asp?do=inne&kat=3"><b>Hardware Install</b></a>

<%while not rs.eof
   response.write "Kategori " & rs("Kategori") & ": " & rs("Antal") & "<br>"
   rs.movenext
wend%>

<%	rs.Close
Set rs = nothing
	cn.close
Set cn=nothing%>
```

 

> som vanligt?

 
Jag har aldrig gjort något liknande innan... därför det är lite svårt.

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

## #19 — Meng, 2004-05-12T09:03Z

Tog en print screen så kanske det blir tydligare hur jag vill göra.. :)

Bilagor:

- [itafd.gif](https://www.webforum.nu/a/3499.gif)

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

## #20 — @nders, 2004-05-12T09:06Z

Nä, det blev inte direkt tydligare.

> Jag har aldrig gjort något liknande innan...

Du har väl loopat data ur ett recordset förut?

WHERE skall dock vara före GROUP BY, det var jag som skrev fel. Varför du får felmeddelandet har jag ingen aning om dock.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/103365-posträknande-meny  
Nästa sida: https://www.webforum.nu/amne/asp/103365-posträknande-meny/page2.md
