Martin: Bin am verzweifeln!!! Request in eigenem Querystring

Hallo Leute

Brauche dringend eure Hilfe, denn ich bastele nun schon eine ganze weile rum und langsam gehen mir die Ideen aus. Der Frank hatte mir schon Tipps gegeben aber die funzen nicht!
Arbeite mit Frontpage, keine Panik bitte!
Habe eine ASP. Öffne dort selber eine DB-Connection mit VBScript. Hier der Code:

<%
Dim conn7
Dim rs7
Dim katwert

Response.Buffer = false
katwert = Request.Querystring("Kategorie")
Set conn7 = Server.CreateObject("ADODB.Connection")
conn7.Open g_FIXX_strConnectb
Set rs7 = Server.CreateObject("ADODB.Recordset")
query = "select * from kunden Where Ebene='Ebene1' AND Kategorie='" &katwert& "' AND Bannergroesse='Vollbanner'"
Set rs7 = conn7.Execute(query)
response.write query
%>
<a href="http://<%=rs7.Fields(7).Value%>" target="_blank"><img border="0" src="<%=rs7.Fields(4).Value%>"></a>
<%
rs7.Close
conn7.Close
%>

Wenn ich die Seite mit den entsprechenden Parametern starte kommt die Meldung:

Entweder BOF oder EOF ist True, oder der aktuelle DS wurde gelöscht; die von der Anwendung angeforderte Operation benötigt einen aktuellen DS

Wenn Frontpage diese Abfrage aber verwendet(natürlich mit Request) dann funzt es!????
Die DS sind alle in Ordnung und auch die Parameter existieren. Wenn ich mir den Querystring ausgeben lasse bleibt einer leer und das ist eigentlich mein Problem:

select * from kunden Where Ebene='Ebene1' AND Kategorie='' AND Bannergroesse='Vollbanner'

Kategorie bekommt leider keinen Wert von Request übergeben. Kann mir da leider keinen Reim drauf machen und auch Frank(Forumsteilnehmer) meinte es sollte gehen.

Nehmt mir bitte das Brett vom Kopf!!!

Danke Martin

  1. hi martin,

    Entweder BOF oder EOF ist True, oder der aktuelle DS wurde gelöscht; die von der Anwendung angeforderte Operation benötigt einen aktuellen
    DS

    das sieht doch ganz so aus, als würde es den datensatz mit der bedingung Where Ebene='Ebene1' AND Kategorie='" &katwert& "' AND Bannergroesse='Vollbanner'"
    nicht geben.
    kontrolliere das doch nochmal zur sicherheit.

    gruss
    martin

    1. Hi Martin

      das sieht doch ganz so aus, als würde es den datensatz mit der bedingung Where Ebene='Ebene1' AND Kategorie='" &katwert& "' AND Bannergroesse='Vollbanner'"
      nicht geben.
      kontrolliere das doch nochmal zur sicherheit.

      Das stimmt ja auch, da wenn Kategorie=''(also leer ist) der Datensatz nicht mehr eindeutig identifiziert werden kann. Und das Request hat keinen wert. Habe mir auch mit response.write den inhalt aus "katwert" ausgeben lassen und katwert ist Null, keinen Inhalt.
      Wenn aber frontpage seine Abfrage verwendet ... Kategorie='::Kategorie::' dann wird der Datensatz eindeutig erkannt.
      Wo ist mein Fehler?

      1. Das stimmt ja auch, da wenn Kategorie=''(also leer ist) der Datensatz nicht mehr eindeutig identifiziert werden kann. Und das Request hat keinen wert. Habe mir auch mit response.write den inhalt aus "katwert" ausgeben lassen und katwert ist Null, keinen Inhalt.
        Wenn aber frontpage seine Abfrage verwendet ... Kategorie='::Kategorie::' dann wird der Datensatz eindeutig erkannt.
        Wo ist mein Fehler?

        wenn katwert nicht null sein darf, liegt der fehler wohl im Request...

  2. <%
    Dim conn7
    Dim rs7
    Dim katwert

    Response.Buffer = false
    katwert = Request.Querystring("Kategorie")
    Set conn7 = Server.CreateObject("ADODB.Connection")
    conn7.Open g_FIXX_strConnectb
    Set rs7 = Server.CreateObject("ADODB.Recordset")
    query = "select * from kunden Where Ebene='Ebene1' AND Kategorie='" &katwert& "' AND Bannergroesse='Vollbanner'"
    Set rs7 = conn7.Execute(query)
    response.write query
    %>
    <a href="http://<%=rs7.Fields(7).Value%>" target="_blank"><img border="0" src="<%=rs7.Fields(4).Value%>"></a>
    <%
    rs7.Close
    conn7.Close
    %>

    Wenn ich die Seite mit den entsprechenden Parametern starte kommt die Meldung:

    Entweder BOF oder EOF ist True, oder der aktuelle DS wurde gelöscht; die von der Anwendung angeforderte Operation benötigt einen aktuellen DS

    Hallo Martin,

    generell sollte man den Fehler, daß kein DS gefunden wurde mit:
    <%
    If rs7.EOF Then
       ' --- Fehler, kein Satz
       Else
          ' --- Hier gehts weiter
          ...
    End if
    %>
    abfangen. In Deinem Fall denke ich, daß der folgende Teil keinen Wert ergibt.

    katwert = Request.Querystring("Kategorie")

    Wir denn Kategorie als URL-Parameter übergeben?`
    Probier mal
    <% katwert = Request("Kategorie") %>

    Dann nimmt ASP entweder den Parameter aus dem QueryString oder der Form-Collection (wenn die Daten per POST übermittelt wurden)

    Noch eins: Bei einem Select Statement sollte man das Recorset nicht mit <% Set rs = conn.Execute(SQL) %> instantiieren.
    Execute kann (und sollte) man bei DML-Statements (UPDATE, INSERT, DELETE, ...) verwenden.
    Bei SELECT ist folgendes besser:
    <%
    Set RS = Server.CreateObject("ADODB.Recordset")
        RS.Open SQL, conn, 3, 3
        ...
        RS.Close
    Set RS = Nothing
    %>

    Tschau, Stefan