Patrick: Auf mehrere Suchkriterien eingehen

Beitrag lesen

Ich habe ein Formular das per method=post an eine ASP übergeben wird.
Die Suche wird mit einer Access-Database durchgeführt (kunden.mdb, darin eine Tabelle: "adressen")
Beim Formular kann man nach Ort (<select size=1..>), nach Name (Textfeld), nach Spezialität (<select size=1..>) Und nach Kategorie (3 radio buttons) suchen.

der Code:

<%
If IsObject(Session("finanzcon")) Then
    Set nameConn = Session("finanzcon")
Else
    Set nameConn = Server.CreateObject("ADODB.Connection")
    nameConn.Open "DSN=kunden"
    Set Session("finanzcon") = nameConn
End If

If Request.Form("Text") <> "" Then
  sql = "SELECT * FROM [adressen] WHERE [Firma] LIKE '%" & Request.Form("Text") & "%'"
End if

If Request.Form("ort") <> "" Then
sql = "SELECT * FROM [adressen] WHERE [Ort] LIKE '%" & Request.Form("ort") & "%'"
End if

If Request.Form("dienst") <> "" Then
  sql = "SELECT * FROM [adressen] WHERE [Spezialität] LIKE '%" & Request.Form("dienst") & "%'"
End if

Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, nameConn, 3, 3

IF rs.BOF AND rs.EOF Then
    Response.Write("<br><h5>Keine Übereinstimmung für <font color=""red"">" & Request.Form("Text") & "</font> gefunden !!</h5>")
ELSE
%>
<%
IF rs.BOF AND rs.EOF Then
      Response.Write "<h5>Keine Übereinstimmung für den Suchbegriff: <font color=""red"">"& strSearchText & "</font>gefunden !</h5>"
      Else
            If rs.RecordCount = 1 Then
                  strAnzahl = ""
                  strArtikel = " enthält"
                  Else
                        strAnzahl = "n "
                        strArtikel = "en enthalten"
            End if
            Response.Write "<h5><font color=""red"">" & rs.RecordCount & "</font> Firmenbeschreibung" & strArtikel & " Ihren Suchbegriff: <font color=""red"">" & Request.Form("Text") & "</font></h5>"
%></font></p>
      <table border="1" cellspacing="0" cellpadding="0" width="96%">
        <tr>
          <td bgcolor="#0000AA" width="27%"><strong><font color="#FFFFFF">Firma</font></strong></td>
          <td bgcolor="#0000AA" width="45%"><strong><font color="#FFFFFF">Spezialität</font></strong></td>
          <td bgcolor="#0000AA" width="20%" align="right">
            <div align="left"><strong><font color="#FFFFFF">Ort </font></strong></div>
          </td>
          <td bgcolor="#0000AA" width="8%"><strong> </strong></td>
        </tr>
<%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
%>
        <tr>
          <td width="27%"><%=Server.HTMLEncode(rs.Fields("Firma").Value) %></td>
          <td width="45%"><%=Server.HTMLEncode(rs.Fields("Spezialität").Value) %></td>
          <td align="left" width="20%"><%=Server.HTMLEncode(rs.Fields("Ort").Value) %></td>
          <form name="<%= rs.Fields("Firma")%>A" method="POST" action="firma.asp?srtText">
            <input type="Hidden" name="Firma" value="<%=rs.Fields("Firma")%>">
            <td width="8%">
              <input type="Submit" name="Ansehen" value="Details">
            </td>
          </form>
         </tr>

<%
rs.MoveNext
loop
%>

</table>

<%
End if
End if

%>

</td>
    <td height="412" width="20"> </td>
  </tr>
</table>

Was ist falsch? Ich erhalte immer den Fehler:
" ADODB.Recordset error '800a0bb9'

The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.

suchen_test.asp, line 227 "

Linie 227:
Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, nameConn, 3, 3

Was nun?

Danke