Tom Kruse: Variable aus einem Link übernehmen

Hallo alle,

nach erfolgloser Suche im Archiv (knappe 2.000 Nachrichten), bin ich wieder mit einer Frage da.

Folgender Code in der Quell Page "archive.asp":

<a href="display_news.asp?newsid=<%=rs.Fields("ID")%>"><%=rs.Fields("Ueberschrift")%>

Folgender Code in der "Zielpage" display_news.asp:

<%Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Lundbeck News"
SQL = "SELECT * FROM News where ID = 'newsid'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
rs.MoveFirst
do while Not rs.eof
%>

<%=rs.Fields("Ueberschrift")%><%=rs.Fields("Datum")%>

usw.

Kurz: Der Link, der hinter der Überschrift steht, soll mit Übergabe der Variablen "newsid" auf die "Display_news.asp" verweisen.  Die "display_news.asp" soll dann die Variable "newsid" übernehmen und diese ID dann in der angegebenen DB suchen und diese Tabelle ausgeben (mit dem FP eigenen Code entstehen keine Probleme). Wenn ich aber den Code wie beschrieben per Hand einfüge, bekomme ich folgende Fehlermeldung:

Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e07'
[Microsoft][ODBC Microsoft Access 97 -Treiber] Datentypen in Kriterienausdruck unverträglich.
/test/DB/display_news.asp, Zeile 18

Es soll kein neues Fenster geöffnet werden, kein neuer Frame - nur die Seite "display_news.asp" soll mit der richtigen ID Variablen geladen werden.

Vielleicht weiß einer von Euch Rat?

Besten Dank schon einmal

Tom

  1. <%Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "Lundbeck News"
    SQL = "SELECT * FROM News where ID = 'newsid'"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3

    Wenn ich aber den Code wie beschrieben per Hand einfüge, bekomme ich folgende Fehlermeldung:

    Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e07'
    [Microsoft][ODBC Microsoft Access 97 -Treiber] Datentypen in Kriterienausdruck unverträglich.
    /test/DB/display_news.asp, Zeile 18

    Hallo,

    ich nehme an, das Feld ID in der Tabelle News ist numerisch.
    Dann musst Du folgendermaßen abfragen:
    <%
    SQL = "SELECT * FROM News where ID = " & newsid
    %>

    Bei einem Textfeld wäre deine Abfrage aber auch falsch:
    <%
    SQL = "SELECT * FROM Text where Feld = '" & text & "'"
    %>

    Tschau, Stefan

    1. Hi Stefan,

      vielen Dank für Deine schnelle Hilfe.

      Du hast recht, mein Feld ist ein numerisches Feld. Und zwar ein autonumerisches Feld von Access automatisch generiert.

      Ich habe Deine Abfrage in meine Page kopiert. Allerdings ohne Erfolg. Ich bekam folgende Fehlermeldung:

      Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'
      [Microsoft][ODBC Microsoft Access 97 -Treiber] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID ='.
      /test/DB/display_news.asp, Zeile 18

      Noch eine Ergänzug: In der Adresszeile meines Browsers wird folgende Adresse angezeigt: http://larry/test/DB/display_news.asp?newsid=134
      Die ID aus der Datenbank wird "scheinbar ausgelesen".

      Noch eine andere Idee ?

      Tom

      1. Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'
        [Microsoft][ODBC Microsoft Access 97 -Treiber] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID ='.
        /test/DB/display_news.asp, Zeile 18

        Noch eine Ergänzug: In der Adresszeile meines Browsers wird folgende Adresse angezeigt: http://larry/test/DB/display_news.asp?newsid=134
        Die ID aus der Datenbank wird "scheinbar ausgelesen".

        Hallo,

        du musst natürlich newsid noch besetzen.

        <%
        Dim newsid
            newsid = Request("newsid")
        ...
        ' --- Hier kommt deine Abfrage hin
        ...
        %>

        1. Hallo Stefan,

          danke danke danke danke danke danke etc. Es funzt.

          Tom

          Dim newsid
              newsid = Request("newsid")
          ...
          ' --- Hier kommt deine Abfrage hin
          ...
          %>

  2. Hallo Tom

    [...] (mit dem FP eigenen Code entstehen keine Probleme). Wenn ich aber den Code wie beschrieben per Hand einfüge, [..]

    Nachdem Dein Problem ja nun geloest ist, mal noch ein Tip fuer die Zukunft: Warum schaust Du Dir nicht einfach den FP-Code an und analysierst, wie die es gemacht haben? Die Unterschiede zu Deinem sollten sich schnell offenbaren.

    So lange

    1. Hallo Calocybe,

      hab ich gemacht und werde ich immer machen. Leider offenbaren sich die Unterschiede nur schwer, da es in den meisten Fällen doch ziehmliche Differenzen gib. Sei es ein Komma oder eine andere Anordnung des Codes oder sonstiges.

      FP generiert einen Code für sich. So ist der Code um ein Feld in einer Tabelle auszugeben: <%=FP_FieldVal(fp_rs,"ID")%>.

      Der gleiche Code, den ich per Hand einpflege: <%=rs.Fields("ID")%>.

      Meistens genügt allerdings ein Denkanstoß. Allerdings ist für mich als Laien noch viel zu lernen. So z. B. wußte ich nichts über den Befehl:

      Dim newsid
        newsid = Request("newsid")

      um in meinem Fall eine Variable an eine andere Abfrage zu übergeben.

      Aber ich übe und lerne....

      Trotzdem danke für Eure Hilfe !!!!

      Tom