Filtern nach Kriterium funzt nicht !

stud3

Aktives Mitglied
hallo,
bei dem folgenden Code versuche ich ein Filtern von Datensätzen nach einem Kriterium zu erzeugen (Kriterium:produkt), ohne Erfolg.
Nachdem der User ein bestimmtes Produkt auf dem Textfeld geschrieben hat und er auf den Button "Produkt suchen/anzeigen" klickt, gibt es 2 Fälle:
- Falls sich der eingegebene Eintrag in der Tabelle Produkt befindet, werden alle dazugehörigen Datensätzen angezeigt in Form von einem SelectBox.
- Falls sich der eingegebene Eintrag nicht in der Tabelle befindet, bekommt der User die Meldung, dass keine Datensätze für das eingegebene Produkt gefunden wurden.

Das input "button" hat noch nicht eine Funktion, so dass beim Klicken ein Ereignis kommt, ich arbeite daran weiter, aber vielleicht hätte jemand eine bessere Idee, wie ich es besser machen kann, damit das Filtern ausgeführt werden kann, oder wo würden meine Fehler liegen, bisher kriege ich nichts angezeigt auf dem Browser und ich bekomme die Fehlermeldung: "HTTP: Interner Serverfehler...".




<!-- #Include file = "../DATA/ADOVBS.INC" -->

<%
Dim objConn, strConn, objRS, SQLquery
Set objConn = Server.CreateObject("ADODB.Connection")

strConn = "Provider..." 'Aus Sicherheitsgründen nicht weiter geschrieben
objConn.connectionstring = strConn
objConn.Open
Set objRS = Server.CreateObject("ADODB.Recordset")
ON ERROR RESUME NEXT
%>


<html><head><title>test</title>
<script language="JavaScript">
<!--
function setfocus()
{
document.forms["GefundeneProdukte"].elements["Produkt"].focus();
}
-->
</SCRIPT>

</head>
<%
Dim Produkt
Produkt = Request.QueryString("Produkt")

'Was tun? Suchfeld oder Selectbox?
if len(Produkt) > 0 then
'Es wurde ein Produkt eingegeben, in DB suchen
call filtern()
else
'Kein Produkt, Eingabefenster
call NewForm()
end if
%>
<body>

<% private function NewForm() %>
<form name="GefundeneProdukte" action="filter.asp" method="get">
<input name="Produkt" type="hidden" value="Produkt">
<p>Produkt:<input type="text" id="Produkt" name="Produkt" size="40" maxlength="50"></p>
<p><input type="submit" value="Produkt suchen/anzeigen"></p>
</form>
<% end function

private function filtern()


If Request.QueryString("Produkt") = "" Then
Response.Write("Bitte geben Sie das Produkt ein, nach dem Sie suchen")
Else

Set objRS = SERVER.CreateObject("ADODB.Recordset")

SQLquery = "SELECT Dienstleistungs_ID, Produkt, Report FROM LU_Produkt WHERE Produkt = '" & Request.QueryString("Produkt") & "'"


objRS.Open SQLquery,strConn,adOpenStatic

If objRS.RecordCount = 0 Then
Response.Write("Keine Datensätze für Produkt" & Request.QueryString("Produkt") & "gefunden")
Else
Response.Write("<H3>Datensätze gefunden für das Produkt: " & Request.QueryString("Produkt") & "</H3>")

%>

<table style="width:720px" border=0 cellspacing=0 cellpadding=3>
<tr bgcolor="silver">


<td align=center width=20%><b>Dienstleistungs_ID</b></td>
<td align=center width=30%><b>Produkt</b></td>
<td align=center width=10%><b>Report</b></td></tr>
</tr>
</table>

<div style="height:300px;width:740px;overflow:auto;">
<select size="10" name="Produkt" style="width:720px">
<%
SQLquery = "SELECT * FROM LU_Produkt WHERE Produkt = '" & Request.QueryString("Produkt") & "'"
Set objRS = objConn.Execute(SQLquery)
Do While Not(objRS.EOF)
Response.Write "<option value='" & objRS("Produkt_id") & "'>"
Response.Write objRS("Dienstleistungs_ID") & "   "
Response.Write objRS("Produkt") & "   "
Response.Write objRS("Report") & "   "
Response.Write " "

objRS.MoveNext
Loop
objRS.Close
Set objRS=Nothing
%>
</select>
</div>



<%
End If
objConn.Close
Set objConn=Nothing
end function
%>
</body>
</html>


 
Jetzt funktioniert es, ich habe es umgeformt und korrigiert, nur weiß ich noch nicht, an welcher Stelle des Codes man eine Bedingung schreiben sollte, falls der eingegebene Eintrag nicht in der Datenbank vorhanden ist, ic habe vieles probiert, auch mit einer UND Bedingung denke ich, es wäre nicht so optimal. Mein Problem ist auch, dass das Ergebnis wird nicht unten angezeigt (unter dem Eingabefeld), sondern separat angezeigt. Wer kann mir helfen?

<!-- #Include file = "../DATA/ADOVBS.INC" -->
<html><head><title>test</title>
<script language="JavaScript">
<!--
function setfocus()
{
document.forms["GefundeneProdukte"].elements["search_name"].focus();
}
-->
</SCRIPT>

</head>
<%
Dim Produkt
Produkt = Request("search_name")

'Was tun? Suchfeld oder Selectbox?
if len(Produkt) > 0 then
'Es wurde ein Produkt eingegeben, in DB suchen
call filtern()
else
'Kein Produkt, Eingabefenster
call NewForm()
end if
%>
<body>

<% private function NewForm() %>
<form name="GefundeneProdukte" action="/DATA/filter.asp" method="post">
<input type="hidden" value="">

<p>Produkt:<input type="text" id="Produkt" name="search_name" size="40" maxlength="50"></p>
<p><input type="submit" name="submit_button" value="Produkt suchen/anzeigen"></p>
</form>


<% end function

private function filtern()

If ( Request("submit_button") = "Produkt suchen/anzeigen" ) Then
Produkt = Request("search_name")



%>
<% Dim objConn, strConn, objRS, SQLquery
Set objConn = Server.CreateObject("ADODB.Connection")

strConn = "Provider.."
objConn.connectionstring = strConn
objConn.Open

Set objRS = SERVER.CreateObject("ADODB.Recordset")
ON ERROR RESUME NEXT
%>


<table width=70% align=center>
<tr>
<td>
<table style="width:600px" border=0 cellspacing=2 cellpadding=3>
<tr bgcolor="silver">
<td width=5%></td>
<td align="center" width=30%><b>Produkt</b></td>
<td align="center" width=20%><b>Dienstleistungs_ID</b></td>
<td align="center" width=10%><b>Report</b></td></tr>

</table>
<div style="height:100px;width:620px;overflow:auto;">
<table style="width:600px" cellpadding="3" cellspacing="2" border=0>
<%
SQLquery = "SELECT * FROM LU_Produkt WHERE Produkt = '" & Produkt & "'"
objRS.Open SQLquery, objConn
Dim intCurrent
Dim strBgColor
intCurrent = 0

While Not(objRS.EOF)
strBgColor = "#ffffff"
If intCurrent Mod 2 = 0 Then
strBgColor = "#efefef"
End If
%>
<tr bgColor="<%= strBgColor %>" >
<td width=5% align=center ></td>

<td align=center width=30% ><%= objRS("Produkt") %></td>
<td align=center width=20% ><%= objRS("Dienstleistungs_ID") %></td>
<td align=center width=10% ><%= objRS("Report") %></td>
</tr>
<%
intCurrent = intCurrent + 1
objRS.MoveNext
Wend

objRS.Close
Set objRS=Nothing
objConn.Close
Set objConn=Nothing
%>

</div>
</table>
</td>
</tr>
</table>
<%end if%>

<%
End If

end function
%>
</body>
</html>



 
Ich verstehe die Seite nicht, da wird einiges doppelt gemacht und das bringt höchstens Fehler und machts unübersichtlich.

Wenn ich das richtig interpretiere, ist die gleiche Seite für das Suchformular und das Suchresultat zuständig. Dann prüfst Du am besten grad am Anfang der Seite, welche Funktion (Formular oder Suchen) und richtest den Rest danach aus. Also ein grosses If, die eine Bedingung Formular und die andere Bedingung Suchen. Oder wenn das Formular auf jeden Fall angezeigt werden soll, das If halt mit nur einer Bedingung, nämlich wenn die Suche durchgeführt werden soll. Und dann innerhalb von diesem If nochmals ein separates If, das prüft ob es Resultate gibt oder nicht, und entsprechend die Daten oder die Meldung anzeigt.

Dann hast Du da irgendwo ein "on error resume next" aber ich seh keine Fehlerbehandlung. Also entweder das "on error" rausnehmen oder die Fehlerbehandlung noch implementieren. Andernfalls kannst Du Fehler haben die Du aber nicht siehst, und das bedeutet stundenlange Fehlersuche für nichts ;-) Im dümmsten Fall legst Du damit den Server lahm, wenn nämlich der Fehler in einem Loop auftritt und der Code deshalb hängenbleibt.

Griessli
Irene

 
Zurück
Oben