News-Artikel je Autor zählen

redwing78

Mitglied
Hi! Habe in meiner DB mehere Autoren, deren persönl. ID bei jedem news-Eintrag mitgespeichert wird. Möchte nun sehen, wieviele Beiträge jeder Autor geschrieben hat.

Code:
strSQL = "SELECT COUNT (NewsID, Kuerzel) FROM News WHERE Kuerzel=" & strName & " AS beitraege"

und

Code:
<% Response.Write beitraege %>

Das Ganze funktioniert nicht. Erhalte eine Fehlermeldung: Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Kuerzel=24 AS beitraege'.

Kann jemand helfen? Danke im Voraus!! LG redwing78
 

Luzie

Erfahrenes Mitglied
Hi

Code:
strSQL = "SELECT COUNT (NewsID) as beitraege, Kuerzel FROM News WHERE Kuerzel=" & strName & " group by Kuerzel

Wenn Kuerzel nun vom Format varchar oder Text ist, also weder numerisch noch ein Datum, dann muss die Variable in Hochkomma gesetzt werden. Willst Du noch mehrere Felder ausgeben, müssen diese gruppiert werden (Access - group by).

Dein Fehler oben war, die Funktion count(feld) braucht nur einen Parameter, und zwar das Feld, welches Du zählen möchtest. Du kannst diesem später dann einen Alias-Namen geben, wenn Du über den Feldnamen aufrufen möchtest. Wenn Du über einen Index aufrufen möchtest, dann brauchst Du keinen Alias. Also der Alias ist in dem Falle nur für das Feld nötig, nicht für das komplette Statement. Man kann auch einem kompletten Statement einen Alias verpassen, dann muss das Statement aber in () Klammern stehen und es muss natürlich Sinn machen.

Aufruf über den index ist rs(0) und Aufruf über den Feldnamen ist rs("beitraege"). Immer vorausgesetzt, das Recordset heißt rs.
 

redwing78

Mitglied
Hi! NewsID ist der Primärschlüssel der News-Beiträge; Kuerzel ist ebenfalls ein Zahlenwert mit den IDs aus der Tabelle Autoren, also ein Fremdschlüssel.
Ich werds mal versuchen, danke für den Tipp!
LG Josef
 

redwing78

Mitglied
Danke - habs nun hingekriegt!

Code:
<tr>
  <td width="50%" class="steckbr1" valign="top">Verfasste News-Artikel</td>
  <td width="50%" class="steckbr2" valign="top"><b>
  <% strDB = "Data Source=" & Server.MapPath("../datenbank/fckitz.mdb")
  strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB
  strTabelle = "News"
  Set objCon = Server.CreateObject("ADODB.Connection")
  objCon.Open strCon
  Set objRS = Server.CreateObject("ADODB.Recordset")
  strSQL = "SELECT COUNT (NewsID) AS beitraege, Kuerzel FROM News WHERE  Kuerzel=" & strName & " GROUP BY Kuerzel"
  objRS.Open strSQL, objCon
  IF objRS.BOF or objRS.EOF then
    Response.Write ""
    ELSE						
    objRS.MoveFirst ' Geht zum ersten Datensatz
    intCounter = 1
    While Not objRS.EOF ' Liest, bis das Ende der Daten erreicht ist %>
    <% Response.Write objRS("beitraege") %>
    <% intCounter = intCounter + 1
    objRS.MoveNext ' Geht einen Datensatz weiter
    Wend 
    end if%></b></td>
  </tr>