Suchformular in ASP
Andreas
- asp.net
0 susanne0 Andreas0 susanne0 Andreas0 susanne0 Frank aus Ulm
0 Frank aus Ulm
Hallo Leute,
ich will ein Suchformular für den Iindexing Service(Windows 2000) in asp-programmieren. In das Formular sollen ein Autor und ein Titel eingegeben werden, nun sollen auf dem Fileserver Dokumente die der Autor X mit dem Titel Y gesucht werden.
Das Formular an sich ist nicht so schwer, habe nur das Problem die SQL-Abfrage in dem asp-File hinzukriegen!
Kann mir jemand helfen, den unten aufgeführten Code entsprechend zu verbessern?
Ist wichtig, da mein Diplomthema dranhängt!
Gruß
Andreas
Code:
<%@ LANGUAGE=VBSCRIPT %>
<!-- #INCLUDE FILE="Connection.asp" -->
<HTML>
<HEAD>
<TITLE>The Indexing Service</TITLE>
<STYLE TYPE="text/css">
BODY {font-family:Tahoma,Arial,sans-serif; font-size:10pt}
.heading {font-family:Tahoma,Arial,sans-serif; font-size:14pt; font-weight:bold}
.cite {font-family:Tahoma,Arial,sans-serif; font-size:8pt}
.document {font-size:10pt; font-weight:bold; background-color:lightgrey; width:100%}
</STYLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<SPAN CLASS="heading">Results of search for
<I><%=Request.Form("titleSearchFor")%> AND <%=Request.Form("authorSearchFor")%></I>
</SPAN><HR>
<!--------------------------------------------------------------------------->
<%
Dim strSearch
Set rsSearch = Server.CreateObject("ADODB.Recordset")
' create the connection string
strConn = "Provider=MSIDXS; Data Source=Web"
' construct the search string
strSearch = "SELECT DocTitle, DocAuthor, FileName,Path, Size" & _
"FROM SCOPE()" & _
" WHERE CONTAINS('"&Request.Form("titleSearchFor")&"') AND CONTAINS('"&Request.Form("authorSearchFor")&"')"
' open the recordset on the search
rsSearch.Open strSearch, strConn
' show what's been searched for
While Not rsSearch.EOF
Response.Write "<SPAN CLASS='document'>" & rsSearch("DocTitle") & "</SPAN><BR>" & _
rsSearch("DocAuthor") & "<BR>" & _
"<A HREF='" & rsSearch("Path") & "'>" & rsSearch("FileName") & "</A>" & _
" (" & rsSearch("Size") & " bytes)<P>"
rsSearch.MoveNext
Wend
' tidy up
rsSearch.Close
Set rsSearch = Nothing
%>
<!--------------------------------------------------------------------------->
<HR><SPAN CLASS="cite">©1999 <A CLASS="cite" HREF="http://www.wrox.com/">Wrox Press</A> -
<A CLASS="cite" HREF="http://webdev.wrox.co.uk/books/2610/">Professional ASP 3.0</A> (ISBN: 1-861002-61-0)</SPAN>
</BODY>
</HTML>
Hallo Andreas
ich will ein Suchformular für den Iindexing Service(Windows 2000) in asp-programmieren. In das Formular sollen ein Autor und ein Titel eingegeben werden, nun sollen auf dem Fileserver Dokumente die der Autor X mit dem Titel Y gesucht werden.
Das Formular an sich ist nicht so schwer, habe nur das Problem die SQL-Abfrage in dem asp-File hinzukriegen!
Kann mir jemand helfen, den unten aufgeführten Code entsprechend zu verbessern?Ist wichtig, da mein Diplomthema dranhängt!
Nun, dann solltest Du es ja eigentlich allein schaffen ;-)
Du solltest mal schreiben, was nicht funktioniert, dann ist es für uns leichter, Dir zu helfen.
Grundsätzlich frage ich mich, ob Du nicht das FileSystemObjekt benutzen kannst? Aber vielleicht habe ich die Aufgabenstellung falsch verstanden.
' construct the search string
strSearch = "SELECT DocTitle, DocAuthor, FileName,Path, Size" & _
"FROM SCOPE()" & _
" WHERE CONTAINS('"&Request.Form("titleSearchFor")&"') AND CONTAINS('"&Request.Form("authorSearchFor")&"')"
Ich würde immer Variablen benutzen, weil das wesentlich übersichtlicher ist.
Hier fehlt ein do vor dem while.
Mehr kann ich so auf Anhieb leider auch nicht finden.
Gruß susanne
Hi,
irgendwie klappt es nicht den Autor mit dem Titel des Dokuments zu verknüpfen, dass also Dokumente gefunden werden, auf die Autor und Titel passen.
Hi,
irgendwie klappt es nicht den Autor mit dem Titel des Dokuments zu verknüpfen, dass also Dokumente gefunden werden, auf die Autor und Titel passen.
Geht denn Autor OR Titel? Wenn ja wäre die Programmierung warhscheinlich o.k und der Fehler liegt in den Daten. Wenn nein -> Fehler im Code.
Gruß susanne
Hi,
das probier ich mal aus!
Hier noch mal ne Frage zu der SQL-Query:
strSearch = "SELECT DocAuthor, Path, Filename, Size" & _
" FROM SCOPE()" & _
" WHERE MATCHES('" DocAuthor = Request.Form("TF") "') "
der Code klappt nicht.
Es soll in den Dokumenten der Autor mit dem eingegebenen Autor verglichen werden
Gruß
Andreas
Hi,
irgendwie klappt es nicht den Autor mit dem Titel des Dokuments zu verknüpfen, dass also Dokumente gefunden werden, auf die Autor und Titel passen.Geht denn Autor OR Titel? Wenn ja wäre die Programmierung warhscheinlich o.k und der Fehler liegt in den Daten. Wenn nein -> Fehler im Code.
Gruß susanne
Hi Andreas,
ich plädiere immer dafür bei Problemen Schritt für Schritt vorzugehen. Etwa:
1. Formulareingabe in Varialbe schreiben.
2. response.write variablenname (zur Kontrolle ob Variable gelesen wird und korrekt)
3. Einfaches select mit der Variablen.
strSearch = "SELECT * from Tabelle WHERE Spalte = " & Variable
Die genaue Syntax ist etwas vom Deinem DBMS abhängig.
Ich verwende für Access und SQL-Server statt Matches = bzw. LIKE.
Außerdem wundern mich die () nach dem Tabellennamen. Vielleicht stören die?!
Gruß
Susanne
Hi,
das probier ich mal aus!
Hier noch mal ne Frage zu der SQL-Query:strSearch = "SELECT DocAuthor, Path, Filename, Size" & _
" FROM SCOPE()" & _
" WHERE MATCHES('" DocAuthor = Request.Form("TF") "') "der Code klappt nicht.
Es soll in den Dokumenten der Autor mit dem eingegebenen Autor verglichen werdenGruß
Andreas
Hi,
irgendwie klappt es nicht den Autor mit dem Titel des Dokuments zu verknüpfen, dass also Dokumente gefunden werden, auf die Autor und Titel passen.Geht denn Autor OR Titel? Wenn ja wäre die Programmierung warhscheinlich o.k und der Fehler liegt in den Daten. Wenn nein -> Fehler im Code.
Gruß susanne
Hi, hallo
du bringst das SQL etwas durcheinander...
in dem ersten SQL-Statement: WHERE Contains(....)
WER beinhalt das Suchargument?? Das geht aus WHERE contains(...) nicht hervor
^^^
strSearch = "SELECT DocAuthor, Path, Filename, Size" & _
" FROM SCOPE()" & _
" WHERE MATCHES('" DocAuthor = Request.Form("TF") "') "
was klappt da nicht? kommt eine Fehlermeldung? wenn ja, warum enthältst du uns die vor? daraus könnte man rückschlüsse ziehen
wenn MATCHES eine SQL-Funktion ist, dann beinhaltet die nur ein Argument, welches du in '' gesetzt hast... aber zum vergleichen brauch man mind. zwei (oder)
in der Doku zum Indexserver sind mit sicherheit auch beispiele... eine Doku gibt es immer!
wenn du schon mit dem Indexserver arbeitest/arbeiten musst, dann solltest du darauf eigentlich auch zugriff haben.
HTH, Tschau, tschüß,
Frank
Hi, hallo
Hier fehlt ein do vor dem while.
nein tut es nicht ...
WHILE ..... WEND Schleife
bitte nochmal den Sourcecode lesen und feststellen
Tschau, tschüß,
Frank