So, jetzt brauch ich wieder eure Hilfe.
Ich hab Formular, das je 2 von 4 Suchbegriffen �bergibt, also immer
Kategorie und entweder Regisseur oder Filmtitel oder Jahr.
In einer l�ngeren IF-Anweisung wird daraus die entsprechende Abfrage
zusammengesetzt. Das funktioniert auch. Ich lasse die Abfrage, bevor ich sie
durchf�hr, am Bildschirm ausgeben. Die Variablen�bergabe und Request.Form
funktioniert also auch.
Als Default-Wert, also ELSE, geb ich der Variable Abfrage den Wert filme,
das ist der Name der Tabelle. Wenn also gar keine Werte �bergeben werden,
soll die gesamte Tabelle angezeigt werden. Auch das funktioniert.
Aber immer, wenn ich Werte �bergebe, kommt die folgende Fehlermeldung:
1 Parameter wurden erwartet, aber es wurden zu wenig Parameter �bergeben.
Ich lass den Inhalt der Var. Abfrage ja zuvor ausgeben, wenn ich
beispielsweise Titel und Kategorie �bergebe, dann liefert das Response.Write
Abfrage:
Select * FROM filme WHERE Titel LIKE '%About a boy%' AND filme_Kategorie =
'Kom�die'
Was kann da sein?
Unten der gesamte Quelltext.
lg
Doro
<%
'Die Verbindung zur Datenbank
If IsObject(Session("film_conn")) Then
Set conn = Session("film_conn")
Else
Set conn = Server.CreateObject("ADODB.Connection")
strDSNPfad = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & Server.MapPath("film.mdb")
conn.open strDSNPfad,"",""
End If
'************************** Variablen initialisieren und �bernehmen
*************************
Regisseur = ""
Filmtitel = ""
Jahr = ""
Kategorie = ""
Regisseur = Request.Form("Regisseur")
Filmtitel = Request.Form("Filmtitel")
Jahr = Request.Form("Jahr")
Kategorie = Request.Form("Kategorie")
'*****************************Abfrage in Abh�ngigkeit des Absenders
****************************
Dim Abfrage
If (Kategorie = "" And Regisseur <> "") Then
Abfrage = "SELECT * FROM filme WHERE Regisseur LIKE '%" & Regisseur &
"%'"
ElseIf (Kategorie = "" And Filmtitel <> "") Then
Abfrage = "SELECT * FROM filme WHERE Titel LIKE '%" & Filmtitel & "%'"
ElseIf (Kategorie = "" And Jahr <> "") Then
Abfrage = "SELECT * FROM filme WHERE Jahr LIKE '%" & Jahr & "%'"
ElseIf (Kategorie <> "" And Regisseur <> "") Then
Abfrage = "SELECT * FROM filme WHERE Regisseur LIKE '%" & Regisseur &
"%' AND filme_Typ = '" & Kategorie & "'"
ElseIf (Kategorie <> "" And Filmtitel <> "") Then
Abfrage = "SELECT * FROM filme WHERE Titel LIKE '%" & Filmtitel & "%'
AND filme_Typ = '" & Kategorie & "'"
ElseIf (Kategorie <> "" And Jahr <> "") Then
Abfrage = "SELECT * FROM filme WHERE Jahr LIKE '%" & Jahr & "%' AND
filme_Typ = '" & Kategorie & "'"
ElseIf (Kategorie <> "") Then
Abfrage = "SELECT * FROM filme WHERE filme_Typ = '" & Kategorie & "'"
Else
Abfrage = "filme"
End If
Response.Write "<p>" & Abfrage & "</p>"
'*****************************Verbindung zur Tabelle mit Abfrage
****************************
' Verbindung zur Tabelle filme
Set Film = Server.CreateObject("ADODB.Recordset")
Film.open Abfrage, conn 'Statt dem Namen der Tabelle die Abfrage
'******************* Zun�chst mal eine Tabelle auslesen ohne Abfrage
*************************
Response.Write "<table border='1'>"
Film.MoveFirst 'Geht zum ersten Datensatz
While Not Film.EOF 'Solange nicht das Ende der Tabelle erreicht ist -
EOF: End Of File
Response.Write "<tr>"
Response.Write "<td>" & Film("Titel") & "</td><td>" & Film("Autor") &
"</td><td>" & Film("Regisseur") & "</td><td>" & Film("Schauspieler") &
"</td><td>" & Film("Inhalt_kurz") & "</td><td>" & Film("Jahr") & "</td><td>"
& Film("Land") & "</td><td>" & Film("Kategorie") & "</td>"
Response.Write "</tr>"
Film.MoveNext 'GEht zum n�chsten Datensatz
Wend 'Geht zum Anfang der Schleife, dh macht f�r den
n�chsten Datensatz das gleiche nocheinmal
Response.Write "</table>"
'******************* Am Ende wird die Verbindung zur Tabelle geschlossen
********************
'Verbindung zur Tabelle schlie�en
Film.close
Set Film = Nothing
%>
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "ASP Diskussionsliste fuer Anfaenger" <[EMAIL PROTECTED]>
Sent: Tuesday, November 26, 2002 8:44 AM
Subject: [aspdebeginners] Re: Abfrage
: Hallo,
:
: kommentiere mal die Zeile aus, in der du das Recordset �ffnest und
: wende mal ein response.write(Abfrage) an. die Fehlermeldung deutet
: n�hmlich darauf hin, das die SQL-Anweisung nicht vollst�ndig ist,
: genauer gesagt scheint es sich um eine fehlende Spezifizierung in der
: Where-Klausel.
:
: Rainer
:
:
:
: > Liebe Leute,
: >
: > findet von euch wer den Fehler?
: > Die Verbindung zur Datenbank klappt, zur Tabelle ohne Abfrage auch,
: aber mit
: > der Abfrage kommt die Fehlermeldung:
: >
: > Syntaxfehler (fehlender operator) in
: Abfrageausdruck: 'Titel=Filmtitel'
: >
: > '************************** Variablen�bergabe
: *************************
: > Regisseur = Request.Form("Regisseur")
: > Filmtitel = Request.Form("Filmtitel")
: > Jahr = Request.Form("Jahr")
: > Kategorie = Request.Form("Kategorie")
: > '*****************************Verbindung zur Tabelle mit Abfrage
: ****************************
: >
: > ' Verbindung zur Tabelle filme
: > Set Film = Server.CreateObject("ADODB.Recordset")
: > Dim Abfrage
: > Abfrage = "SELECT * FROM filme WHERE Titel = " & Filmtitel
: > Film.open Abfrage, conn
: >
: > Die Fehlermeldung ist in der Zeile, in der das Recordset aufgemacht
: wird,
: > also in der letzten.
: > Was mach ich falsch?
: >
: > lg
: > Doro
:
:
:
: | Oft Gefragtes: http://www.aspgerman.com/aspgerman/faq/
: | [aspdebeginners] als [EMAIL PROTECTED] subscribed
: | http://www.aspgerman.com/archiv/aspdebeginners/ = Listenarchiv
: | Sie knnen sich unter folgender URL an- und abmelden:
: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdebeginners.asp
:
| Oft Gefragtes: http://www.aspgerman.com/aspgerman/faq/
| [aspdebeginners] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdebeginners/ = Listenarchiv
| Sie knnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdebeginners.asp