Andreas: Suchformular in ASP

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>

  1. 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

    1. 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.

      1. 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

        1. 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

          1. 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 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

          2. 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

    2. 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