Monika: Anzahl gefundener Recordsets in ASP ausgeben

Guten Morgen!

Ich habe eine kleine Frage, ist wahrscheinlich ziemlich einfach, aber ich bin einfach ein noch ein ziemlich anfängerlicher Anfänger...:-)

also, ich habe folgenden Code mit folgendem (My)SQL-Statement:

<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM tbl_personen WHERE wert='1'", db
%>

Nun möchte ich die Anzahl der gefundenen Recordsets auf meiner ASP-Seite per ASP ausgeben, und dies in ein Textfeld. Ich will nicht die Recordsets selber ausgeben, sondern lediglich die Anzahl der gefundenen....

Ich weiss dass dies kein grosses Problem sein sollte, habe auch schon gesucht, bin allerdings nicht weiter gekommen.

Ich wäre froh wenn mir kurz jemand helfen könnte, danke im Voraus,
Gruss,
Monika

  1. Hallo Monika

    <%
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open "SELECT * FROM tbl_personen WHERE wert='1'", db
    %>

    baut EIN Recordset auf.

    Nun möchte ich die Anzahl der gefundenen Recordsets auf meiner ASP-Seite per ASP ausgeben, und dies in ein Textfeld.

    Die Anzahl der Records liefert die Eigenschaft RecordCount
    des Recordset-Objektes.

    Gruß
    Ralf

    1. Hallo!

      Ja, ich denke das mit dem Aufbau der Recordsets ist gut.
      Ich habe jetzt gesucht, wie ich mit dem RecordCount die Anzahl der Recordsets ausgeben kann.
      ...und habe auch etwas gefunden, ich poste es gerade mal:

      strSQL = "SELECT * FROM Table"
       Set conn = CreateObject("ADODB.Connection")
       conn.Open "DSN=MyDatabaseDSN"
       Set rs = CreateObject("ADODB.RecordSet")
       rs.CursorLocation = adUseClient
       rs.CursorType = adOpenStatic
       rs.Open strSQL, conn
       Response.Write "Anzahl der Datensätze = " & rs.RecordCount

      Nun habe ich das probiert, aber es kommt folgende Meldung:
      -------
      ADODB.Recordset- Fehler '800a0bb9'

      Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereiches oder sind miteinander unvereinbar.
      -------

      Ich denke, das liegt an den Cursors, allerdings habe ich keine Ahnung von denen, kannst du mir da weiterhelfen?

      Danke, Grüssles,

      Monika

      1. Hallo Monika!

        Mit diesen Cursors habe ich bisher auch noch nicht gearbeitet,
        es gibt jedoch noch eine andere Lösung, die Anzahl der Sätze zu ermitteln.

        Nehme als SQL-String nicht

        strSQL = "SELECT * FROM Table"

        sondern

        strSQL = "SELECT COUNT(*) FROM Table"

        und lese den ersten Satz des Recordsets.

        Gruß
        Ralf

        1. Hi!

          Danke!
          Ich habe noch eine dumme Frage:

          und lese den ersten Satz des Recordsets.

          Wie meinst du das? Wie kann ich den ersten Satz des Recordsets auslesen?

          Gruss, Monika

          1. Hallo Monika!

            Über die Funktion

            rs.MoveFirst()

            steuerst Du den ersten Satz an (möglicherweise das sogar auch nicht notwendig).

            Dann erhälst Du über rs.Fields(0) den Wert.

            Wenn Du das SQL-Statement noch verfeinerst, ala

            Select count(*) as anzahl from Table

            so kannst Du über rs("anzahl") auf die Anzahl zugreifen.

            Gruß
            Ralf

            1. hi!

              ja danke! ich habe es geschafft, allerdings anders als du sagst, aber es funzt!
              danke dir, schönen tag noch,
              griitz,
              monika

  2. Hi Monika,

    du hast es ja schon, wollte aber trotzdem noch was sagen:

    Lass dich nicht verwirren von den vielen Details, die genannt wurden,
    was du suchst ist schlicht und ergreifend (wie auch schon genannt) das "select count(*)...", weitere Infos brauchst du in der Regel nicht.

    Wende das aber nur an, wenn es unbedingt sein muß weil das eine recht aufwendige Operation auf der Datenbank ist.

    Beispiel:

    sql="select count(*) from tabellenname where id="&IRGENDWAS
    set RS=Conn.Execute(sql)

    ANZAHL = RS(0)

    Viel Spaß :-)

    Grüße,

    Jan