stefan: if Anweisung bei Datenbankabfrage

hallo,
ich möchte beim Auslesen einer Datenbank bestimmte Datensätze nicht mit auslesen.
Diese Datensätze sind zwar mit in der Tabelle gespeichert, möchte sie aber über eine
If Then Anweisung aussortieren. Die Werte in der Spalte „erweitert“ in der Tabelle sind entweder auf 0 oder auf 1 gesetzt und die Datensätze, die bei erweitert den Wert 0 haben, sollen ausgelesen werden. Die mit Wert 1 nicht.  Folgendes Script funktioniert noch nicht so, wie ich mir das
vorstelle: (würde mich riesig über Hilfe freuen:)
<%
' ADO Connection-Objekt erzeugen und öffnen
Set cnHol = Server.CreateObject("ADODB.Connection")
cnStHol = "driver={Microsoft Access-Treiber (*.mdb)};" & _
          "dbq=" & Server.MapPath("db1.mdb")
cnHol.Open cnStHol,"",""
' ADO Recordset-Objekt erzeugen und öffnen.
Set rsCat = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM angebote ORDER BY datum DESC;"
rsCat.Open sql, cnHol, adOpenStatic, adLockReadOnly
' Recordset-Objekt durchlaufen und jeden Datenbank anzeigen
If erweitert=0 Then
Do While Not rsCat.EOF
  %>
<tr align="center" bgcolor="#CCCCCC">
<td valign="top"><%=rsCat("datum")%></td>
<td valign="top"><%=rsCat("Taetigkeit")%></td>
<td valign="top"><% Response.Write "<a href=" & _
Chr(34) & _
"probe151.asp?" & _
"qnummer=" & rsCat("nummer")& _
Chr(34) & ">" & _
rsCat("Anbieter") & _
"</a>"%></td>
    <td valign="top"><%=rsCat("Region")%></td>
<td valign="top"><%=rsCat("ab dem")%></td>
<tr>
<td bgcolor="#DDDDDD"> </td>
<td bgcolor="#DDDDDD"> </td>
<td bgcolor="#DDDDDD"> </td>
<td bgcolor="#DDDDDD"> </td>
<td bgcolor="#DDDDDD"> </td>
</tr>

</tr>
  <%
  rsCat.MoveNext
Loop
End If
' Recordset- und Connection-Objekt schließen und entfernen.
rsCat.Close
Set rsCat = Nothing
cnHol.Close
Set cnHol = Nothing
%>

  1. Hallo Stefan!

    Eine If Abfrage brauchst du nicht, du kannst das gleich über den Sql String aussortieren:
    sql = "SELECT * FROM angebote WHERE erweitert=0 ORDER BY datum DESC;"
    Probier´s mal!

    Vile Grüsse
    Alex

    1. Hallo Nochmal!

      Falls du es doch unbedingt über eine If Abfrage machen möchtest:

      Der Fehler in deinen Script ist, das du nicht das Datenbakfeld ansprichst sondern irgendwas, was es nicht gibt:

      Set rsCat = Server.CreateObject("ADODB.Recordset")
      sql = "SELECT * FROM angebote ORDER BY datum DESC;"
      rsCat.Open sql, cnHol, adOpenStatic, adLockReadOnly
      ' Recordset-Objekt durchlaufen und jeden Datenbank anzeigen
      If erweitert=0 Then

      Richtig wäre
      Set rsCat = Server.CreateObject("ADODB.Recordset")
          ^^^^^                              ^^^^^^^^^
      sql = "SELECT * FROM angebote ORDER BY datum DESC;"
      rsCat.Open sql, cnHol, adOpenStatic, adLockReadOnly
      ' Recordset-Objekt durchlaufen und jeden Datenbank anzeigen
      If rsCat("erweitert") = 0 Then
         ^^^^^

      rsCat ist also das Recordset indem sich die Ergebnisse befinden, dieses muss dann auch über rsCat("Feldname") angesprochen werden.

      Viele Grüsse
      Alex!

      1. vielen Dank Alex,
        Dein erster Vorschlag funktioniert. Den zweiten hatte ich auch schon ausprobiert, allerdings bekomme ich bei der Variante keinen Datensatz zurück. Weisst Du warum?
        grüsse Stefan

        1. vielen Dank Alex,
          Dein erster Vorschlag funktioniert. Den zweiten hatte ich auch schon ausprobiert, allerdings bekomme ich bei der Variante keinen Datensatz zurück. Weisst Du warum?
          grüsse Stefan

          Hallo Stefan!

          Probier´s mal so:
          If rsCat("Erweitert") = "0"

          Die Gänsefüsschen um die Null herum oder Konvertiere rsCat("..") zu einem Integer.
          If Int(rsCat("Erweitert")) = 0

          Müsste klappen...

          Viele Grüsse
          Alex!