ASP - Datenbankkurs (Ihre Datenbank im Internet)

(c) 1998 - 2002 by Stefan Falz Webconsulting


Überblick

Ein Datensatz ist ein Bestandteil einer Tabelle oder besser gesagt, genau eine Zeile in der Tabelle.
Er setzt sich aus einem oder mehreren Feldern zusammen, wie z.B. Artikelnummer, Artikelbeschreibung, Preis, ....
In diesem Abschnitt geht es um die Möglichkeiten der Verwendung von Datensätzen.
Dies setzt voraus, daß Sie die Seite SQL-Abfragen schon gelesen haben, bzw. den Aufbau kennen.
Die benötigten Objekte zur Ausgabe eines Datensatzes in ASP sind:
Anzeigen

Die häufigste Verwendung eines Datensatzes wird die Anzeige der Feldinhalte des Satzes sein.
In unserem Beispiel suchen wir den Kunden mit der Kundennummer 789123. Die Kundennummer
übergeben wir als Teil eines Links. Dann sieht unser SQL-String folgendermaßen aus:
       SQL = "Select * from [Kunden] where [Kundennummer] = " &Request.QueryString("Kundennummer") & "

Um die Feldinhalte in den HTML-Text zu schreiben, verwenden wir folgenden Quelltext:
        Kundennummer <% = rs.Fields("Kundennummer") %>
        KundenPLZ <% = rs.Fields("KundenPLZ") %>
        KundenName <% = rs.Fields("KundenName") %>

Dies bewirkt unter der Voraussetzung, daß diese Angaben in der Tabelle Artikelstamm stehen, folgende Ausgabe:
        Kundennummer: 789123
        KundenPLZ: 55555
        KundenName: Meiertest GmbH

<% = rs.Fields("Feldname")%> bewirkt dasselbe wie <% Response.Write rs.Fields("Feldname")%>, ist aber viel kürzer.
Allerdings kann man diese Abkürzung auch nur bei einer Ausgabe innerhalb des eigentlichen HTML-Texts benutzen.
Sollten Sie eine mehrzeilige Prozedur haben, müssen Sie Response.Write explizit angeben, da ansonsten
versucht wird, eine Wertzuweisung vorzunehmen, diese aber aufgrund der fehlenden linken Variable scheitert.
<%
strText = "Ihr Text"
strUser = "Ihr Name"
= strText
' --- Dies führt zu einem ASP-Fehler
Response.Write strText ' --- Diese Schreibweise ist korrekt
%>



Im nächsten Beispiel suchen wir alle Kunden, deren PLZ 55555 ist. Die Postleitzahl übergeben wir als Teil
eines Formularergebnisses per GET gesendet. Dann sieht unser SQL-String folgendermaßen aus:
        SQL = "Select * from [Kunden] where [KundenPLZ] = " & Request.QueryString("KundenPLZ") ";

Um nicht für alle Kunden, die evtl. im PLZ-Gebiet 55555 wohnen, diese 3 Zeilen extra schreiben müssen,
legen wir eine Schleife um den Quellcode, der diese Arbeit übernimmt und automatisch nach erfolgter
Ausgabe zum nächsten Datensatz übergeht.
<%
rs.MoveFirst ' --- Gehe zum ersten Datensatz in der Gruppe
do while Not rs.eof ' --- Wiederhole folgende Angaben bis zum letzten Datensatz
%>
Kundennummer <% Response.Write rs.Fields("Kundennummer") %>
KundenPLZ <% Response.Write rs.Fields("KundenPLZ") %>
KundenOrt <% Response.Write rs.Fields("KundenName") %>
<%
rs.MoveNext ' --- Gehe zum nächsten Datensatz
loop ' --- Führe die Schleife erneut aus
%>

Dies bewirkt unter der Voraussetzung, daß diese Angaben in der Tabelle Artikelstamm stehen, folgende Ausgabe:

        Kundennummer: 123456
        KundenPLZ: 55555
        KundenName: Kühlkost AG


        Kundennummer: 789123
        KundenPLZ: 55555
        KundenName: Meiertest GmbH


        Kundennummer: 456789
        KundenPLZ: 55555
        KundenName: Fa. Testmeier


Ändern

Der nächste Schritt ist nun das Ändern von Daten. Denn was nützt die schönste Datenbank, wenn man keine
Änderungen in Ihr durchführen könnte.
Wir nehmen das obige Beispiel, in dem wir einen Kunden mit der Kundennummer 789123 gesucht haben.
Wir wollen die Telefonnummer, sowie die E-Mailadresse ändern, da der Kunde nun einen ISDN-Anschluß
und einen E-Mailaccount hat.
Zu diesem Zweck haben wir ein Formular mit dem Namen "KundAkt" eingerichtet, daß folgenden Aufbau hat:
Kundennummer
KundenTelefon
KundenEMail
Wir geben in dieses Formular die Kundennummer und die neue Telefonnummer sowie die neue E-Mailadresse ein.
Als Methode geben wir diesmal "POST" an.

Der SQL-String für die Verarbeitung lautet:
       SQL = "Select * from [Kunden] Where [Kundennummer] = " & Request.Form("Kundennummer")

Die Aktualisierung der Kundendaten wird durch folgenden Quellcode durchgeführt:
       <%
       if rs.Supports (adUpdate) Then ' --- Überprüfen, ob sich der Datensatz aktualisieren läßt
          rs.Fields("KundenTelefon") = Request.Form("KundenTelefon") ' --- Zuweisung des neuen Werts
          rs.Fields("KundenEMail") = Request.Form("KundenEMail") ' --- Zuweisung des neuen Preis

          rs.Update ' --- Aktualisieren des Datensatzes
          Else
             Response.Write("<h2>Es ist ein Fehler aufgetreten !</h2>") ' --- Bei Fehler erfolgt eine Meldung
       End if
       %>


Hinzufügen

Nun folgt das Hinzufügen von Datensätzen
Zu diesem Zweck haben wir wieder ein Formular mit dem Namen "KundenPlus" eingerichtet, daß folgenden Aufbau hat:
Kundennummer
KundenName
KundenTelefon
KundenEMail
Wir geben in dieses Formular die neue Kundennummer, den Namen, die Telefonnummer sowie die EMailadresse ein.
Als Methode geben wir auch diesmal "POST" an.

Der SQL-String für die Verarbeitung lautet:
        SQL = "Select * from [Kunden] Where [Kundennumer] = " & Request.Form("Kundennummer")

Auf den ersten Blick erscheint dies für Sie wahrscheinlich unsinnig, da hier versucht wird, einen Datnsatz
zu filtern, aber diese Abfrage dient nur zur Feststellung, ob diese Kundennummer evtl. schon existiert.
Da eine Kundennummer eindeutig sein sollte, wäre bei einem gefundenen Datensatz eine Fehlermeldung auszugeben.
Um nun abzufragen, ob die Kundennummer gefunden wurde, prüft man, ob die Datensatzgruppe einen Datensatz enthält.

       <%
       if rs.BOF AND rs.EOF Then ' --- Ist schon ein Datensatz vorhanden ?
           Response.Write("Kundennummer frei, neuer Datensatz wird angelegt !")
           if rs.Supports (adUpdate + adAddNew) Then ' --- Überprüfen, ob die Datenbank diese Operation zuläßt
               rs.AddNew ' --- Anlegen eines neuen Datensatzes
               rs.Fields("Kundennummer") = Request.Form("Kundennummer") ' --- Zuweisung der Kundennummer
               rs.Fields("KundenName") = Request.Form("KundenName") ' --- Zuweisung der EMailadresse
               rs.Fields("KundenTelefon") = Request.Form("KundenTelefon") ' --- Zuweisung des Telefonnummer
               rs.Fields("KundenEMail") = Request.Form("KundenEMail") ' --- Zuweisung des EMailadresse
               rs.Update ' --- Aktualisieren des angelegten Datensatzes
               Else
                   Response.Write("Keine Aktualisierung möglich !") ' --- Bei Fehler erfolgt eine Meldung
           End if
           Else ' --- Es wurde ein Datensatz gefunden
               Response.Write("Kundennummer bereits vorhanden !") ' --- Fehler Kundennummer
       End if
       %>



Löschen

Im letzten Abschnitt üben wir das "wahllose" ;-) Löschen von Datensätzen.
Zu diesem Zweck haben wir wieder ein Formular mit dem Namen "KundenDel" eingerichtet, daß folgenden Aufbau hat:
Kundennummer
Wir geben in dieses Formular die Kundennummer des zu löschenden Kunden ein.
Als Methode geben wir diesmal "GET" an.

Der SQL-String für die Verarbeitung lautet:
    SQL = "Select * from [Kunden] Where [Kundennummer] = " & Request.QueryString("Kundennummer")

Im Gegensatz zu allen anderen Operationen ist das Löschen eines Datensatzes geradezu ein Kinderspiel.
Man sollte vor einer so gravierenden Änderung noch eine Abfrage einbinden, ob dieser Kunde wirklich
gelöscht werden soll, aber das ist Aufgabe des Programmierers.
   <%
       rs.delete ' --- Löschen des Datensatzes
   %>

© 1998 - 2001 by Stefan Falz Webconsulting
Für Schäden oder Beeinträchtigungen jedwelcher Art durch Benutzung der Skripte wird keinerlei Haftung übernommen !