Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2005.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Sie lernen, wie Sie Daten zwischen ASP-Seiten übertragen und auswerten. Außerdem erfahren Sie, wie Sie Daten per ASP filtern können und erweitern damit die ASP-Raumplanung.

Techniken

ASP, HTML, ADO, SQL

Voraussetzungen

Access 2000 oder höher, IIS

Beispieldateien

Raumplanung.zip (ab Access 2000)

Beiträge zu diesem Thema: 264, 272

ASP-Raumplanung (Teil 2)

In einer der letzten Ausgaben haben Sie die ASP-Raumplanung und dabei die Grundlagen von ASP und dem Internet Information Server kennen gelernt. Dieser Beitrag ergänzt die Raumplanung um Filterfunktionen und eine Detailansicht der einzelnen Buchungen.

Einleitung

In der aktuellen Version der ASP-Raumplanung gibt die Datei raumbuchungentabelle.asp alle Raumbuchungen in einer formatierten Liste aus (s. Abb. 1). Diese Variante ist allerdings nur bei einer sehr kleinen Anzahl von Raumbuchungen praktikabel und auch dann wächst die Liste mit der Zeit stark an. Zur Eingrenzung der Liste ist deshalb eine Filterfunktion unabdingbar, die im Folgenden entwickelt wird.

Hinweis

Neben der Listenansicht, die nur die wichtigsten Daten der Buchungen anzeigt, ist auch eine Detailansicht erforderlich, in welcher der Benutzer dann alle Daten der Buchungen einsehen kann. Wie Sie aus der Liste in diese Einzelansicht verzweigen und die dafür nötigen Parameter an diese übergeben, lesen Sie in Kapitel 3.

Filtertechnik

Die Buchungsliste soll über den Veranstaltungsnamen, das Startdatum und den Raum eingeschränkt werden können. Für die Eingabe der Veranstaltung und des Startdatums können Sie Textfelder verwenden. Der Raum soll über ein Kombinationsfeld selektiert werden.

Die Seite raumbuchungen.asp wird dabei so aufgebaut, dass sich Filter und Ergebnisliste auf einer Seite befinden; der Filter im oberen Bereich der Seite und die Ergebnisliste darunter, wie in Abb. 2 verdeutlicht ist.

Filterformular anlegen

Um den Filter für die Buchungstabelle zu realisieren, benötigen Sie zunächst ein Standard-HTML-Formular, in das der Benutzer die Filterkriterien eingibt. Nun stehen Sie vor dem Problem, diese Kriterien auszuwerten, um das passende SQL-Statement für die Ergebnisliste zu generieren und diese anzuzeigen.

Clientseitig ist das mit ASP nicht möglich und VB-Scripte in der ASP-Seite werden nur beim erneuten Aufruf der Seite verarbeitet. Folglich müssen Sie beim Absenden des Formulars per Submit-Buttons eine ASP-Seite aufrufen, die eingegebenen Werte übergeben und die Werte in der neuen Seite abfragen und verarbeiten.

Abb. 1: Die aktuelle Ansicht der Buchungsübersicht

Abb. 2: Die fertige Ansicht mit Filter

Da sich Filter und Ergebnis auf derselben Seite befinden, muss sich die Seite selbst aufrufen. Das erreichen Sie, indem Sie beim Formular-Parameter action den Namen der Seite raumbuchungen.asp angeben. Abb. 3 zeigt den Quellcode für das Formular mit Form-Tag, das den action-Parameter sowie den Namen frmFilter des Formulars enthält.

Innerhalb des Form-Tags ist eine Tabelle vorbereitet, welche die Beschriftungen für die Filterfelder und den Submit-Button beinhaltet und später die Steuerelemente aufnimmt. Die Schaltfläche erzeugen Sie über ein Input-Tag vom Typ submit:

Die Schaltfläche hat den Namen btnFilter und die Beschriftung Filter anwenden.

Abb. 4 zeigt das Ergebnis des Quellcodes im Browser.

Hinweis

Wenn Sie auf die Schaltfläche Filter anwenden klicken, sehen Sie in der Statusleiste des Browsers, dass die Seite neu geladen wird. Sie können so überprüfen, ob Sie die richtige ASP-Seite angegeben haben. Wenn Sie sich beispielsweise verschrieben haben, erscheint nach dem Klicken auf die Filter-Schaltfläche eine Fehlerseite. (

Mit dem Formular und der Tabelle haben Sie den Rahmen für den Filter gesetzt.

Im Folgenden legen Sie der Reihe nach die Steuerelemente an.

Textfeld für den
Veranstaltungsfilter einfügen

Im ersten Schritt soll ein Textfeld zur Suche nach dem Veranstaltungsnamen zur Verfügung gestellt werden. Dazu fügen Sie an der entsprechenden Stelle in der Tabelle den nachfolgenden Code für das Textfeld ein:

Abb. 3: Grundgerüst für das Filterformular

Abb. 4: Filterformular ohne Eingabefelder in der Browser-Ansicht

Abb. 5: Anzeige des Textfeldes

Das Textfeld wird wie der Submit-Button über das Input-Tag definiert, wobei der Parameter type diesmal den Wert text erhält.

Das Textfeld hat den Namen txtVeranstaltung und über den Parameter size die Länge 40 Zeichen. Dabei handelt es sich lediglich um die Breite des Textfeldes und nicht um die maximal mögliche Anzahl Zeichen, die eingegeben werden kann.

Über den Parameter value könnten Sie dem Textfeld einen Standardwert mitgeben, der beim Aufruf des Formulars im Textfeld stehen würde. Im Beispiel ist der Wert des Parameters zunächst nicht gesetzt. Abb. 5 zeigt das Textfeld mit einer Beispieleingabe.

Abfrage des Feldinhaltes

Um den Inhalt eines Formularfeldes zu ermitteln, verwenden Sie das ASP-Objekt Request in Kombination mit der Form-Collection.

Über die Collection können Sie alle Formularfelder abfragen. Geben Sie dazu den Steuerelementnamen in Klammern als String ein. Der folgende Ausdruck weist der Variablen txtVeranstaltung den Inhalt des Steuerelements txtVeranstaltung zu:

Ebenso können Sie prüfen, ob die Submit-Schaltfläche gedrückt wurde. Ist das der Fall, hat das Steuerelement den Wert Filter anwenden. Beim ersten Aufruf des Formulars hingegen besitzt die Schaltfläche keinen Wert.

Filterbedingung erzeugen

Quellcode 1 ermittelt zunächst die Inhalte der Steuerelemente. Anschließend prüft die Prozedur, ob der Filterbutton gedrückt wurde, und setzt dann, sofern im Steuerelement txtVeranstaltung ein Wert eingegeben wurde, die Bedingung für das SQL-Statement zusammen.

Quellcode 1: Inhalt von Steuerelementen ermitteln

btnFilter = Request.Form("btnFilter")

txtVeranstaltung = Request.Form("txtVeranstaltung")

If len(btnFilter) > 0 Then

    If len(txtVeranstaltung) > 0 Then

        WhereCondition = " AND Veranstaltung Like '%" _
            & txtVeranstaltung & "%'"

    End If

End If

SQL = "Select * from qryAlleBuchungen WHERE 1=1 " _
    & WhereCondition & " ORDER BY Start"

Abb. 6: Filtern über den Veranstaltungsnamen

Eingaben im Filter erhalten

Wenn Sie nun einen Wert in den Filter eingeben, wird das Ergebnis in der Buchungsübersicht entsprechend gefiltert.

Allerdings ist nach dem erneuten Aufruf des Formulars der Inhalt des Filterfeldes gelöscht.

Damit der vom Benutzer eingegebene Text erhalten bleibt, geben Sie als Standardwert beim Textfeld im Parameter value den Ausdruck <%=txtVeranstaltung%> ein. Dieser schreibt den zuvor über Request.Form ermittelten Inhalt des Textfeldes wieder in dasselbe hinein. In Abb. 6 sehen Sie zum Beispiel das Ergebnis für das Kriterium Technik. Der Filterwert bleibt dabei wie gewünscht im Eingabefeld stehen.

Datumsfilter
ergänzen

Den Filter für das Startdatum können Sie analog zum Filter für den Veranstaltungsnamen anlegen. Ergänzen Sie dazu die Tabelle um zwei Textfelder mit den Namen txtStartdatumVon und txtStartdatumBis mit Hilfe der folgenden zwei Input-Tags:

<input type="text" name="txtStartdatumVon" size="10" class="value" value="<%=txtStartdatumVon%>">

<input type="text" name="txtStartdatumBis" size="10" class="value" value="<%=txtStartdatumBis%>">

Am Anfang der ASP-Seite fragen Sie die Inhalte der Steuerelemente wieder wie folgt ab:

Filterbedingung definieren

Anschließend setzen Sie mit den in Quellcode 2 gezeigten Anweisungen die Filterbedingung für das SQL-Statement zusammen.

Das Script prüft nacheinander, ob Start- und Enddatum eingegeben wurden, und passt die Filterbedingung entsprechend an.

Quellcode 2: Filterbedingung zusammensetzen

If len(txtStartdatumVon) > 0 Then

    'Enddatum fehlt

    If len(txtStartdatumBis) = 0 Then

        WhereCondition = WhereCondition & " AND Start Between " & GetSQLDatum(txtStartdatumVon) _
            & " And " & GetSQLDatumTagesende(txtStartdatumVon)

    Else

    'Enddatum ist angegeben

        WhereCondition = WhereCondition & " AND Start Between " & GetSQLDatum(txtStartdatumVon) _
            & " And " & GetSQLDatumTagesende(txtStartdatumBis)

    End If

End If

'Startdatum fehlt

If len(txtStartdatumVon) = 0 And len(txtStartdatumBis) > 0  Then

    WhereCondition = WhereCondition & " AND Start Between " & GetSQLDatum(txtStartdatumBis) _
        & " And " & GetSQLDatumTagesende(txtStartdatumBis)

End If

Quellcode 3: Datumsformate bereitstellen

<% 

Public Function GetSQLDatum(NormalDatum)

    MyDate = cdate(NormalDatum)

    GetSQLDatum = "#" & Month(MyDate) & "/" & Day(MyDate) & "/" & Year(MyDate) & "#"

End Function

%>

<%

Public Function GetSQLDatumTagesende(NormalDatum)

    MyDate = cdate(NormalDatum)

    GetSQLDatumTagesende = "#" & Month(MyDate) & "/" & Day(MyDate) & "/" & Year(MyDate) _
        & " 23:59:59#"

End Function

%>

Quellcode 4: Validieren von Datumswerten

If len(txtStartdatumVon) > 0 And Not IsDate(txtStartdatumVon) Then

Error = Error  & "- Der Datums-Startwert ist kein gültiger Datumswert.
"

End If

If len(txtStartdatumBis) > 0 And Not IsDate(txtStartdatumBis) Then

Error = Error  & "- Der Datums-Endwert ist kein gültiger Datumswert.
"

End If

If len(Error) > 0 then

Error = "Es sind die folgenden Fehler aufgetreten:
" & Error

End If

If len(btnFilter) > 0 And len(Error) = 0 Then

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Google Earth ferngesteuert, Teil II

© 2003-2015 André Minhorst Alle Rechte vorbehalten.