webForumDet fria alternativet

Posträknande meny

ASPur ASP

21 svar · 442 visningar · startad av Meng

Medlem sedan feb. 2003549 inlägg
Frågan#1

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")
Medlem sedan nov. 20017 144 inlägg
#2

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

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")
Medlem sedan nov. 20017 144 inlägg
#3

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

Medlem sedan feb. 2003549 inlägg
#4

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?

Medlem sedan juni 200032 967 inlägg
#5

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.

Medlem sedan feb. 2003549 inlägg
#6

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?

Medlem sedan feb. 2003549 inlägg
#7

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
Medlem sedan feb. 20013 023 inlägg
#8

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

Medlem sedan feb. 2003549 inlägg
#9

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

Medlem sedan juni 200032 967 inlägg
#10

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

SELECT Kategori, COUNT(*) AS Antal FROM opgave GROUP BY Kategori ORDER BY Kategori
Medlem sedan feb. 2003549 inlägg
#11

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?

Medlem sedan juni 200032 967 inlägg
#12

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

Medlem sedan juni 200032 967 inlägg
#13

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

Medlem sedan feb. 2003549 inlägg
#14

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.

Medlem sedan juni 200032 967 inlägg
#15

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?

Medlem sedan feb. 2003549 inlägg
#16

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%>
Medlem sedan juni 200032 967 inlägg
#17
<%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
Medlem sedan feb. 2003549 inlägg
#18

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.

Medlem sedan feb. 2003549 inlägg
#19

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

itafd.gif
Medlem sedan juni 200032 967 inlägg
#20

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.

139 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)