Avatar billede bpedersen Novice
11. marts 2005 - 22:33 Der er 5 kommentarer og
1 løsning

Udskrive antal records fra flere kolonner i DB

Jeg har nedenstående kode der skriver antal ud for Snack, men hvordan får jeg antallet ud fra de andre?
Kan det laves med den samme connection, eller skal der laves en for hvert antal man vil have?

pft. /Brian

*************************************************

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/opskrifter.mdb")
Conn.Open DSN

strSQL = "Select * from opskrifter"

set rscount = conn.execute("select count(id) as antal from opskrifter Where kategori='Snack'")
antal = rscount("antal")
set rscount = nothing %>


<table border="0" cellpadding="0" cellspacing="0" width="770" height="50">
  <tr>
    <td width="770" height="50">
      <p style="margin-left: 200">
      <a href="default2.asp?m=m-snack">Snack (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-forret">Forret</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-hovedret">Hovedret</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-tilbehoer">Tilbehør</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-suppe">Suppe</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-dessert">Dessert</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-bagvaerk">Bagværk</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-grill">Grill</a></p></td>
  </tr>
</table>
Avatar billede larsbachmanndk Nybegynder
11. marts 2005 - 22:44 #1
Prøv med denne, jeg har ikke testet det, så jeg er ikke sikker på at det virker

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/opskrifter.mdb")
Conn.Open DSN

strSQL = "Select * from opskrifter"

set rscount = conn.execute("select count(id) as antal from opskrifter")
antal = rscount("antal")
set rscount = nothing %>


<table border="0" cellpadding="0" cellspacing="0" width="770" height="50">
  <tr>
    <td width="770" height="50">
      <p style="margin-left: 200">
      <a href="default2.asp?m=m-snack">Snack (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-forret">Forret (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-hovedret">Hovedret (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-tilbehoer">Tilbehør (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-suppe">Suppe (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-dessert">Dessert (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-bagvaerk">Bagværk (<%=antal%>)</a>&nbsp; -&nbsp;
      <a href="default2.asp?m=m-grill">Grill (<%=antal%>)</a></p></td>
  </tr>
</table>
Avatar billede bpedersen Novice
11. marts 2005 - 22:48 #2
Dur ikke den skriver det samlede antal poster ud for hver.
Avatar billede larsbachmanndk Nybegynder
11. marts 2005 - 22:50 #3
Så bliver du desværre nok nød til at lave en SQl sætning for hvert antal
Avatar billede bpedersen Novice
11. marts 2005 - 22:53 #4
Har fundet løsningen - men ellers tak for hjælpen.
Avatar billede kjulius Novice
11. marts 2005 - 23:21 #5
Med Access som back-end database burde du kunne bruge en SQL som denne:

strSQL = "SELECT COUNT(*) AS Snack,
          (SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Forret') AS Forret,
          (SELECT COUNT(*) From opskrifter WHERE kategori = 'Hovedret') AS Hovedret,
          (SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Tilbehør') AS Tilbehør,
          (SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Suppe') AS Suppe,
          (SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Dessert') AS Dessert,
          (SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Bagværk') AS Bagværk,
          (SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Grill') AS Grill
FROM opskrifter WHERE kategori = 'Snack'

Her er det altså 8 separate forespørgsler som sættes sammen til én (Hvert felt/opsummering sin egen forespørgsel).

Man kan også gå den modsatte vej, hvilket måske er mere logisk:

SELECT SUM(IIF(kategori = 'Snack', 1, 0)) AS Snack,
      SUM(IIF(kategori = 'Forret', 1, 0)) AS Forret,
      SUM(IIF(kategori = 'Hovedret', 1, 0)) AS Hovedret,
      SUM(IIF(kategori = 'Tilbehør', 1, 0)) AS Tilbehør,
      SUM(IIF(kategori = 'Suppe', 1, 0)) AS Suppe,
      SUM(IIF(kategori = 'Dessert', 1, 0)) AS Dessert,
      SUM(IIF(kategori = 'Bagværk', 1, 0)) AS Bagværk,
      SUM(IIF(kategori = 'Grill', 1, 0)) AS Grill
FROM opskrifter

I dette tilfælde gennemløbes alle felter og der laves en opsummering af enten en værdi på 1 (hvis kategorien er rigtig) eller 0 (hvis den er forkert). Resultatet er det samme som i den første forespørgsel, så man er sådan set frit stillet.
Avatar billede larsbachmanndk Nybegynder
11. marts 2005 - 23:28 #6
Hvilken løsning kom du frem til?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester