Tomcat: Logon_User + ASP: Übergabe des Users als Auswahlkreterium

Hallo Forum,

ich poste erst einmal zum Verständnis folgenden Code:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "LundbeckMitarbeiter"
strUser = Request.Servervariables("LOGON_USER")
strUser = Right(strUser,Len(strUser)-9)
SQL = "SELECT * FROM Lundbeck where email = " & strUser
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
%>
<%=rs.Fields("Vorname")%> <%=rs.Fields("Nachname")%>
<%
conn.close
%>

Nun zu meinem Problem: Ich schaffe es nicht, den Wert von "strUser" als Bedingung in der SQL Abfrage zu nutzen. Folgende Fehlermeldung bekomme ich:

"Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e10'

[Microsoft][ODBC Microsoft Access 97 -Treiber] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.

/Lu-D_1/Test/username.asp, Zeile 45"

Zeile 45 wäre in diesem Script: "rs.Open sql, conn, 3, 3".

Schreibe ich "response.write strUser" bekomme ich den gewollten Wert ausgegeben.

Das DB Feld ist als Textfeld markiert.

Gebe ich nun eine Variable vor (z. B. SQL = "SELECT * FROM Lundbeck where email = 'tkr' "), die in der DB auch existiert, bekomme ich auch das richtige Ergebnis.

Verschiedene Versuche, den String umzustellen, haben auch keinen Erfolg gebracht. Leider auch nicht die Suche im Archiv oder im HTML. Falls ich etwas übersehen habe - sorry....

Was mache ich falsch? Oder mache ich grundsätzlich einen Denkfehler..?

Tomcat

"Der Fehler sitzt meistens vor dem Monitor" (Unbekannt) ;-)

  1. Hallo Tomcat
    ich hatte auch schon viel ärger mit asp-seiten/SQL-abfragen.
    und diesen fehler hab ich bestimmt schon tausendmal gesehen (aus mind. 666 versch. gründen)
    also für mich liegt der fehler auf den eretsen Blick in der zeile

    SQL = "SELECT * FROM Lundbeck where email = " & strUser

    du hängst zwar den wert von strUder an das kommando an, musst aber der sql-abfrage noch deutlich machen, dass es sich um einen String handelt. also ein etwa so:

    SQL = "SELECT * FROM Lundbeck where email = " & Chr(34) & strUser & Chr(34)

    wobei Chr(34) in VBScript dann die hochkommata (") in den String einbaut.

    hoffe es geht, gruss, Eeye

    1. Hi Eeye,

      danke für Deine Antwort. Leider hat Dein jetziger Vorschlag die selbe Fehlermeldung erzeugt.

      SQL = "SELECT * FROM Lundbeck where email = " & Chr(34) & strUser & Chr(34)

      Noch eine andere Idee...?

      Gruß

      Tom

      1. Hi, Tomcat

        du hast recht, das mit dem String bringt nix. hab's grad nochmal getestet, SQL ist es relativ wurscht, ob da nun anführungszeichen drumrum sind oder net.
        Dein Fehler kommt allerdings auch, wenn die Abfrage keine passende Tabelle/bzw. kein passendes Feld in der Tabelle in deiner Datenbank findet.
        Sprich hat sich irgendwo ein Tippfehler eingeschlichen bzw. gibt es dir Tabelle Lundbeck mit dem Feld email wirklich?
        (Gross/Kleinschreibung ist hier allerdings egal)

        gruss, Eeye

        1. Alles geprüft.

          Ich muß aber auch dazu sagen, daß ich die ganze DB Anbindung vorher schon einmal mit FP2000 gemacht habe. Und da hat zwar nicht diese Abfrage geklappt - aber die Felder waren die Gleichen...

          Somit kann ich sicher sein, daß sowohl die DB, die Tabelle und die Felder vorhanden sind. Rechtschreibfehler natürlich ausgeschlossen. Aber auch daraufhin habe ich alles geprüft.

          Zumal eine Eingabe eines eindeutigen Wertes ("SQL = "SELECT * FROM Lundbeck where email = 'tkr' ") auch den gewünschten Erfolg bzw. das Ergebnis bringt.

          Wie es danach aussieht, liegt es tatsächlich an dem Wert, den ich als Kriterium nutzen will.

          An Access 97 kann es nicht liegen, oder?

          Tomcat

  2. Probier mal das strUser in Hochkommas zu setzen.

    SQL = "SELECT * FROM Lundbeck where email = '" & strUser & "'"

    1. Hi Markus,

      Probier mal das strUser in Hochkommas zu setzen.

      SQL = "SELECT * FROM Lundbeck where email = '" & strUser & "'"

      leider bring Deine Idee auch nicht den gewünschten Erfolg. Hast Du noch eine Idee ?

      Tomcat

      1. Nocheinmal: Hi Markus,

        ich muß mich bei Dir entschuldigen: Nachdem Jens nocheinmal darauf hingewiesen hat, habe ich bemerkt, daß ich wohl ein ' oder " bei der Eingabe Deiner Lösung vergessen habe (copy & paste wird wohl in der Zukunft hier besser sein). Dementsprechend lief die Sache natürlich nicht.

        Ich hoffe, ich habe es nicht fertig gebracht, daß Du einen (kurzen) Moment an Dir gezweifelt hast :-)

        Danke schön.

        Tom

  3. Hi

    also
    SQL = "SELECT * FROM Lundbeck where email = '" & strUser & "'"

    sollte eiegntlich richtig sein , aber bevor du dich an der falschen
    Stelle totsuchst gib doch einfach mal via response.write(SQL)
    den String auf dem Bildschirm aus und schaue wie der dann aussieht.
    Oft hilft sowas ungemein :)

    gruss
    Jens

    1. Hallo Jens,

      vielen Dank. Du hattest recht. Mir ist beim Abschreiben von Markus Lösung entweder ein ' oder ein " weggerutscht. Es klappt wie beschrieben.

      Und vielen Dank für den Tip mit dem response.write(SQL). Das kannte ich noch nicht. Aber für die Zukunft wird es mir sicherlich helfen.

      Gruß

      Tomcat