Tom Kruse: DB Feld in eine "if...else.." Anweisung einbinden

Liebes Forum,

nach Stunden des Probierens bin ich ein wenig am Ende. Ich möchte ein DB Field in eine "if..else.." Anweisung einbinden. Leider bekomme ich es nicht hin. Anbei erhaltet Ihr den Code, den ich benutze. Wenn ich ihn benutze, bekomme ich manchmal einen Syntaxfehler, wenn ich den Code ändere mal einen anderen Fehler. Ich habe schon mit (, <>, doppelten " hin und her gespielt. Leider ohne Erfolg.

Vielleicht hat einer (oder eine) von Euch eine zündende Idee..???

Einen lieben Gruß

Tom

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Lundbeck News"
SQL = "SELECT * FROM News where Abteilung = 'IM' AND Freigabe = 1 AND Datum<= Date() Order by Datum DESC"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
rs.MoveFirst
n=0
If rs.eof then
response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten vorhanden.</font></i>"
else
do while (Not rs.eof) AND (n<2)
%>
<%
if (rs.Fields("high")) = true then
response.write ""<br><%=rs.Fields("Datum")%>""
else
response.write "Das Feld ist false"
end if
%>
<%
On Error Resume Next
rs.MoveNext
n=n+1
loop
end if
%>

  1. <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "Lundbeck News"
    SQL = "SELECT * FROM News where Abteilung = 'IM' AND Freigabe = 1 AND Datum<= Date() Order by Datum DESC"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    rs.MoveFirst
    n=0
    If rs.eof then
    response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten vorhanden.</font></i>"
    else
    do while (Not rs.eof) AND (n<2)
    %>
    <%
    if (rs.Fields("high")) = true then
    response.write ""
    <%=rs.Fields("Datum")%>""
    else
    response.write "Das Feld ist false"
    end if
    %>
    <%
    On Error Resume Next
    rs.MoveNext
    n=n+1
    loop
    end if
    %>

    Hallo,

    probier mal folgendes:

    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "Lundbeck News"
    SQL = "SELECT * FROM News where Abteilung = 'IM' AND Freigabe = 1 AND Datum<= Date() Order by Datum DESC"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    rs.MoveFirst
    n=0
    If rs.eof then
       response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten vorhanden.</font></i>"
       else
       do while (Not rs.eof) AND (n<2)
          if rs.Fields("high") = true then
             response.write rs.Fields("Datum")
             else
                response.write "Das Feld ist false"
           end if

    rs.MoveNext
          n=n+1
       loop
    end if
    %>

    Tschau, Stefan

    1. Hallo Stefan,

      vielen Dank für Deine Hilfe. Dein Code funktioniert.

      Allerdings habe ich einen Denkfehler gemacht. Um mein Problem zu lösen muß ich wohl etwas weiter ausholen.

      Ich möchte eine unterschiedliche Anzeige, die von dem Inhalt "true" abhängt. D. h. ist der Wert des DB Feldes "true", soll die Anzeige z. B. fett dargestellt werden. Ist der Wert "false", soll die Anzeige "normal" sein.

      Ich lasse mir nur die letzten beiden neuesten Einträge anzeigen. Nun kann es sein, daß einer von den Einträgen den Wert "true" hat und der andere Eintrag nicht. Jetzt soll der "true" Eintrag fett sein und der Andere "normal".

      (Kurzform: Zeige mir die letzten beiden Einträge an. Hat einer davon den Wert "true", mache die Ausgabe fett. Hat einer davon den Wert "false", mache die Ausgabe normal.)

      Anbei der ganze Code, wie ich es mir vorstelle (im Code ist der <font size="1"/"2"> der entscheidende Unterschied). Vielleicht gibt es ja noch eine andere Lösung, um die unterschiedliche Darstellung zu realisieren..?!?!?

      <%
      Set conn = Server.CreateObject("ADODB.Connection")
      conn.open "Lundbeck News"
      SQL = "SELECT * FROM News where Abteilung = 'IM' AND Freigabe = 1 AND Datum<= Date() Order by Datum DESC"
      Set rs = Server.CreateObject("ADODB.Recordset")
      rs.Open sql, conn, 3, 3
      rs.MoveFirst
      n=0
      If rs.eof then
      response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten vorhanden.</font></i>"
      else
      do while (Not rs.eof) AND (n<2)
      if rs.Fields("high") = true then
      response.write <font size="2"><%=rs.Fields("Datum")%><img border="0" src="../../Lu-D_1/images/Abstand_breite_10.JPG" width="10" height="5"><a href="display/display_news.asp?newsid=<%=rs.Fields("ID")%>"><%=rs.Fields("Ueberschrift")%></a></font><br>
      else
      response.write "<font size="1"><%=rs.Fields("Datum")%><img border="0" src="../../Lu-D_1/images/Abstand_breite_10.JPG" width="10" height="5"><a href="display/display_news.asp?newsid=<%=rs.Fields("ID")%>"><%=rs.Fields("Ueberschrift")%></a></font><br>
      end if%>
      <%
      On Error Resume Next
      rs.MoveNext
      n=n+1
      loop
      end if
      %>

      Tom

      1. Hm. Ich kann zwar so schnell das Probelm nicht finden (_Welchen_ Denkfehler hattest Du?), aber
        ich würde hinter

        If rs.eof then
        response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten
        vorhanden.</font></i>"
        else
        do while (Not rs.eof) and (n<2)

        einfach ein n = n+1 setzen, dann die Überprüfung und Ausgabe vornehmen und dann mit MoveNext
        fortfahren.
        Welchen Sinn soll vor MoveNext "On Error ..." haben ? ? ? Mir ist während der letzten 8 Monaten bei 3
        abzufragenden DBs kein Fall untergekommen, wo ein an einer solchen Stelle ein Fehler hätte auftreten
        können...Oder hast Du einen solchen Fall schon erlebt (dann bitte mal an mich schicken - Danke!)?

        Gruß

        Thomas

      2. If rs.eof then
        response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten vorhanden.</font></i>"
        else
        do while (Not rs.eof) AND (n<2)
        if rs.Fields("high") = true then
        response.write <font size="2"><%=rs.Fields("Datum")%><img border="0" src="../../Lu-D_1/images/Abstand_breite_10.JPG" width="10" height="5"><a href="display/display_news.asp?newsid=<%=rs.Fields("ID")%>"><%=rs.Fields("Ueberschrift")%></a></font>

        else
        response.write "<font size="1"><%=rs.Fields("Datum")%><img border="0" src="../../Lu-D_1/images/Abstand_breite_10.JPG" width="10" height="5"><a href="display/display_news.asp?newsid=<%=rs.Fields("ID")%>"><%=rs.Fields("Ueberschrift")%></a></font>

        end if%>

        Hallo,

        probier doch einfach mal das:
        <%
        If rs.eof then
           response.write "<i><font size=1>Sorry, zur Zeit sind keine Nachrichten vorhanden.</font></i>"
           else
              do while (Not rs.eof) AND (n<2)
              if rs.Fields("high") = true then
                 response.write "<font size=""2"">"
                 else
                    response.write "<font size=""1"">"
              end if
              Response.Write rs.Fields("Datum") & "<img border=""0"" src=""../../Lu-D_1/images/Abstand_breite_10.JPG"" width=""10"" height=""5""><a href=""display/display_news.asp?newsid=" & rs.Fields("ID") & """>" & rs.Fields("Ueberschrift") & "</a></font>"
        end if
        %>

        Du musst natürlich deine Ausgaben mit Response.Write in ".." setzen und " als Ausgabe mit "" umsetzen.

        Response.Write "Hallo"
        Response.Write "Hallo ""Text"""
        Response.Write rs.Fields("Text") & "Hallo"
        Response.Write rs.Fields("Text") & "Hallo ""Text"""

        Tschau, Stefan

        1. Vielen Dank nocheimal Stefan,

          nun fuktioniert es !!!!