Stefanie: Bitte um Hilfe fuer Suchabfrage in SQL

Hallo Jungs,
ich bin schier am verzweifeln. Ich muss eine Intranet Suchmaske erstellen, mit Hilfe derer ich eine Access Datenbank absuchen kann. In der Datenbank sind verschiedene Daten gespeichert, dessen Primaerschluessel ein Datum ist. Nun, was will ich machen: Ich moechte ueber ein Formular eine Abfrage starten, d.h wenn ich ein Datum in <input name="Date" value="<%Date%>"> eintrage, sollte ich eine Ausgabe erhalten, welche alle in der Datenbank mit diesem Datum verbunden Datensatze als HTML ausgibt. Ich glaube das beste ist, wenn ich mal meinen Source-Code zeige (bitte nicht lachen, habe ich mir aus versch. Foren zusammengebaut, stimmt wahrscheinlich hinten und vor nicht). Waere echt nett wenn Ihr mir helfen koenntet, muss das heute noch fertig machen. Vielen Dank
Stefanie

Hier der Code:
<%
Option Explicit
   dim myRecordset, conn, sql
   dim Date
   dim Param
   dim Data

set conn = server.CreateObject("ADODB.Connection")
set myRecordset = server.CreateObject("ADODB.RecordSet")
conn.open "Datenbank"
Date=request.form("Date")
Param=request.QueryString("Param")
Data = Request.QueryString("Data")
sql="SELECT * FROM ExcelPartsData WHERE (Data='Date')"
myRecordset.open sql, conn
%>
<HTML>
<HEAD>
<TITLE> </TITLE>
</HEAD>
<BODY>
<Form Method="Post" Action="search.asp">
<Input Type="Text" Name="Date" Maxlength=10 Size=10 Value="<%=Date%>">

<Input Type="Submit" Name=Submit Value="Search">
</form>
<%
if not myRecordset.EOF then
   do while (not myRecordset.EOF)
      str1=myRecordset("Date") & _
      ", " & myRecordset("Parts#") & _
      ", " & myRecordset("LineLocation")
      Response.Write(str1)
      Response.Write("<BR>")   'html-Befehl für neue Zeile
      myRecordset.movenext
%>
<TABLE BORDER=1 BGCOLOR=#ffffff CELLSPACING=0><FONT FACE="Arial" COLOR=#000000><CAPTION><B>ExcelPartsData</B></CAPTION>
<THEAD>
<TR>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Date</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>LineLocation</FONT></TH>

Loop
</TR>
</THEAD>
<TBODY>
<%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
%>

<TR VALIGN=TOP>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Date%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=LineLocation%><BR></FONT></TD>
<COLOR=#000000><%=Comments%><BR></FONT></TD>

</TR>
<%
rs.MoveNext%>
</TBODY>
<TFOOT></TFOOT>
</TABLE>

</BODY>
</HTML>

  1. Hallo Steffi,

    Hallo Jungs,

    und die Mädelz??? <g>

    Das prob liegt vermutlich daran, daß du das Datum nicht in einem für SQL (Access) brauchbaren Format übergibst.

    sql="SELECT * FROM ExcelPartsData WHERE (Data='Date')"

    "ACCESS-SQL" erwartet ein Datum in der Form
    #mm-dd-yyyy#
    also in # eingefaßt.

    Die Reihenfolge ist hier unverbindlich angegebe, die genaue Syntax mußt du mal in der MSA-Doku nachschlagen (#mm-dd-yyyy# oder auch #dd-mm-yyyy#)

    Im Zweifelsfalle einfach mal eine QBE-Abfrage in Access erstellen, ein Datum als Parameter/Kriterium eintragen und schauen, was Access dann in dem SQL-String darauf macht. Dieses Format mußt du dann zusammenbasteln und dann an
      "Date='#mm-dd-yyyy#'
    übergeben.

    Viel Spaß
    CirTap

  2. sql="SELECT * FROM ExcelPartsData WHERE (Data='Date')"

    Hallo,

    probiers mal so:
    sql="SELECT * FROM ExcelPartsData WHERE (Data=#" & FormatSQLDate(Date) & "#)"

    Folgende Funktion musst Du hierfür noch in Deine ASP-Seite einbinden
    <%
    Private Function FormatSQLDate(NDateValue)

    Dim DateDD
    Dim DateMM
    Dim DateYYYY

    If IsDate(NDateValue) Then
    DateDD   = Day(NDateValue)
    DateMM   = Month(NDateValue)
    DateYYYY = Year(NDateValue)
    FormatSQLDate = DateMM & "/" & DateDD & "/" & DateYYYY
    Else
      FormatSQLDate = vbNull
    End if

    End Function
    %>

    Tschau, Stefan