Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Die SQL2Table Komponente

Geschrieben von: Christian Holm
Kategorie: Komponenten

This printed page brought to you by AlphaSierraPapa

Daten aus einer Datenbank übersichtlich anzuzeigen bzw. Daten webbasierend hinzuzufügen oder zu editieren benötigt in ASP einige Zeilen Code. Die SQL2Table Komponente schafft hier eine angenehme Abhilfe. Diese stellt einige Funktionen zur Verfügung, die dem Programmierer einiges an Arbeit abnehmen. Dieser Artikel soll Ihnen diese Funktionalitäten näherbringen. Angenehmerweise ist diese Komponente auch noch kostenlos.

Die SQL2Table können Sie von Jeff Louie's Homepage kostenlos downloaden. Nach dem Download und Entpacken des Zip-Archivs ist die Komponente mit regsvr32 auf einem Webserver zu registrieren.

Für diesen Artikel habe ich zwei einfache Beispiele und einen Walkthru durch die fortgeschrittenen Features vorbereitet. Die Daten werden dabei aus Datenbanken geholt, welche auf einem SQL Server 2000 liegen.

Im ersten Beispiel werden die SELECTeten Daten in einem Html Table eingebettet, welches eine der Hauptfunktionen der Komponente darstellt. Dies ist eigentlich nichts aufregendes, aber im Gegensatz zu der händisch programmierten Version, steht die geringere Fehleranfälligkeit und der geringere Aufwand. Hinzu kommt noch, daß eine Fehlerbehandlung integriert ist und dies mit einem Methodenaufruf erledigt ist.

Nun zum Aufwärmen das erste Beispiel. Dieses holt die Daten anhand des hardcodierten SQL-Statements aus der Northwind Datenbank und stellt diese dann eingebettet in einer Html Tabelle dar:

<%
Set objSQL2Table= Server.CreateObject("JAL.SQL2Table")
objSQL2Table.strConn= "Provider=SQLOLEDB.1;Initial Catalog=Northwind;Data Source=BLUESCREEN"
objSQL2Table.strSQL= "SELECT CompanyName, ContactName, ContactTitle, Phone " & _
      " FROM Suppliers ORDER BY CompanyName ASC"
objSQL2Table.strID= "sa"
objSQL2Table.strPW = ""
objSQL2Table.strTableTags= "<table border=2>"

If objSQL2Table.Connect() Then 
    If objSQL2Table.Update() Then
        Response.Write objSQL2Table.GetGrid()
    Else
        Response.Write objSQL2Table.GetLog()
    End If
Else 
    Response.Write objSQL2Table.GetLog()
End If
objSQL2Table.Disconnect()

Set objSQL2Table = Nothing
%<

Mit Server.CreateObject erstellen Sie das Objekt der SQL2Table Komponente. Danach - wie gewohnt - ist der Connection String (strConn Property) und das SQL Statement (strSQL Property) sowie die Logininformationen anzugeben (strID und strPW Property).

Mit der strTableTags Property können Sie dem Html Table zusätzliche Formatoptionen zuweisen. Danach erfolgt die Verbindung zur SQL Datenbank mittels der Connect Methode. Praktischerweise gibt diese auch eine genaue Fehlerbeschreibung zurück, falls Probleme auftauchen. Auftretende Exceptions werden mit der GetLog Methode angezeigt, welche immer die zuletzt aufgetretene Exception darstellt.

Die Update Methode erstellt dann das Recordset-Objekt unter Verwendung des angegebenen SQL Statements. Der Html Table wird durch die GetGrid Methode erzeugt. Beide Methoden können ebenfalls Fehler behandeln, die dann wiederum mit der GetLog Methode ausgegeben werden. Die Disconnect Methode trennt danach wieder die aktive Verbindung zur Datenbank.

Wenn Sie nun den obigen Sourcecode (simpleExample.asp) auf einem Webserver mit angepaßtem Connection String ausführen, erhalten Sie folgendes Ergebnis:

Dies bietet keinen großartigen Komfort, hat aber dennoch die beschriebenen Vorteile gegenüber dem "Do-It-Yourself" Coding. Jetzt werden Sie vielleicht meinen, ob es sich nach dieser Demonstration des Beispiels auszahlt, für einen Html Table eine Komponente am Webserver zu registrieren. Nun, die Komponente kann natürlich noch mehr. Dies soll das nächste Beispiel demonstrieren (DGrid.asp):

<%
    Dim nStartRow, strColumnName, strSortOrder
    
    strColumnName_Default = "CompanyName"
    strSortOrder_Default = "ASC"
    nStartRow_Default = 1
    
    strColumnName = Trim(Request.Querystring("ColumnName"))
    If ("" = strColumnName) Then strColumnName = strColumnName_Default

    nStartRow= Trim(Request.Querystring("StartRow"))
    If ("" = nStartRow) Then nStartRow = nStartRow_Default
    
    strSortOrder = Trim(Request.Querystring("SortOrder"))
    If ("" = strSortOrder) Then strSortOrder = strSortOrder_Default
    
    Set objSQL2Table = Server.CreateObject("JAL.SQL2Table")

    objSQL2Table.strConn = "Provider=SQLOLEDB.1;Initial Catalog=northwind;Data Source=BLUESCREEN"
    objSQL2Table.strSQL = "SELECT CompanyName AS 'Company' , ContactName AS 'Contact', 
        ContactTitle AS 'Title', Phone FROM Suppliers"
    objSQL2Table.strID = "sa"
    objSQL2Table.strPW = ""
    objSQL2Table.lMaxRows = 10
    objSQL2Table.lStartRow = nStartRow
    objSQL2Table.isRowNumber = true
    objSQL2Table.isFooter = true
    objSQL2Table.isAltRows = true
    objSQL2Table.isColoredBorder = true
    objSQL2Table.isNavBar = true
    objSQL2Table.isUseAlias = true
    objSQL2Table.isColumnLinks = true
    objSQL2Table.isAppendSortOrder = true
    objSQL2Table.strAltRowTagsOdd = "<tr bgcolor=White>"
    objSQL2Table.strAltRowTagsEven = "<tr bgcolor=Silver>"
    objSQL2Table.strColumnURL= "./DGrid.asp?ColumnName="
    objSQL2Table.strSortOrderName= "SortOrder"
    objSQL2Table.strOrderBy= "ORDER BY "& strColumnName & " " & strSortOrder
    objSQL2Table.strNavURL="./DGrid.asp?ColumnName=" & strColumnName & "&SortOrder=" 
        & strSortOrder & "&StartRow="

    Response.Write(objSQL2Table.GetExtendedSQL()+"<br>")
    If (objSQL2Table.Connect()) Then
        If objSQL2Table.Update() Then
            Response.Write objSQL2Table.GetGrid()
        Else
            Response.Write objSQL2Table.GetLog()
        End If
    Else
        Response.Write objSQL2Table.GetLog() 
    End If
     Response.Write "<br>"+objSQL2Table.GetLog()
    objSQL2Table.Disconnect()

    Set objSQL2Table= Nothing
%>

Die lMaxRows Property beschränkt die maximal gleichzeitig anzuzeigenden Datenreihen. Datenreihennummern werden mit der isRowNumber Property angezeigt. Eine Alternativeinfärbung der Datenreihen wird durch die strAltRowTagsOdd bzw. durch die strAltRowTagsEven Property realisiert.

Ausgeführt auf einem Webserver ist das Ergebnis schon um einiges besser als das vorherige:

Mittels Querystringübergabe werden die einzelnen Spalten auf- bzw. absteigend sortiert. Sie müssen hierzu nur auf die Links .il (entspricht aufsteigender Sortierreihenfolge) bzw. .li (absteigend) klicken. Die Navigation erfolgt mit den unterhalb der Datenauflistung befindlichen Links First, Prev, Next und Last. Die Aktivierung dieser Navigationsleiste erfolgt durch die Setzung der isNavBar Property. Durchgeführt wird diese durch die Querystringangaben, welche in der strNavURL Property anzugeben sind.

Abschließend möchte ich Ihnen die Premiumfeatures der Komponente vorführen. Diese beinhalten die vollständige Manipulation der Daten einer Datenbank - also neue Datensätze erstellen, bestehende editieren oder auch löschen. Der Download der Komponente enthält bereits eine vollständige sourcecodemäßige Implementierung in JScript dieser Features (BindMSDErc.asp). Daher soll hier nur ein kurzer Walkthru angeführt sein.

Um den Sourcecode zu testen, müssen Sie lediglich den Connection String (var strConnection=...) an Ihre Gegebenheiten anpassen. Nach dem Datenbanklogin erhalten Sie folgende Ansicht:

Sie haben nun neben den Datenspalten auch eine Spalte, die einen Link namens Edit/Delete enthält. Unterhalb der angezeigten Daten sehen Sie Radiobuttons (siehe Cursorposition), die die Funktionen New und Find enthalten. Wenn Sie auf New klicken, erhalten Sie entsprechend der Tabelleneigenschaften eine Eingabemaske. Bei Find haben Sie die Möglichkeit nach Datensätzen zu suchen.

Wenn Sie auf den Link Edit/Delete neben dem gewünschten Datensatz klicken, erhalten Sie eine editierbare Auflistung des jeweiligen Datensatzes:

Mit der untersten Werkzeugleiste haben Sie wieder die Möglichkeit, die Änderungen zu speichern, einen neuen Datensatz hinzuzufügen oder einen bestehenden zu löschen. Weiters gibt es die Option nach einem Datensatz zu suchen.

Schlußbemerkung

Wie Sie unschwer erkennen können, bietet diese kostenlose Komponente einige Vorteile. Angefangen von einfachen Aufgaben, wie der der Datenvisualisierung bis hin zur vollständigen Datenmanipulation ist alles möglich. Warum also mühsam alles selber codieren wenn einem eine kostenlose Unterstützung angeboten wird.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010522.zip

Verwandte Artikel

Auto-Generierung von performantem Abfragecode
http:/www.aspheute.com/artikel/20010329.htm
Das TableEditor Datenbank Administrationstool
http:/www.aspheute.com/artikel/20010418.htm
Highspeed-Abfragen einer SQL Server Datenbank
http:/www.aspheute.com/artikel/20001013.htm

Links zu anderen Sites

SQL2Table Komponente
http://www.geocities.com/Jeff_Louie/index.html

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.