Viele Firmen verwenden kleine Textfiles als Datenbank. Wenn es nicht um tausende von Datensätzen geht, können Textfiles von Vorteil sein und sie brauchen nicht immer gleich eine Datenbank. Textfiles können manuel leicht editiert werden. Schwierig ist jedoch das Modifizieren der Textfiles, Suchfunktionen, das Sortieren von Datensätzen innerhalb dynamischer Websiten. Warum also nicht ein Textfile als Recordset benutzen?
Recordsets selfmade!
Recordsets sind nicht von einer OLE-DB-Datenquelle abhängig. Sie können die Daten so wie ihre Spalten selbst erstellen. Sie können Recordsets also grundsätzlich als Datenspeicher verwenden. Wenn Sie mehrdimensionale Arrays verwenden/kennen, werden Sie sicher wissen, dass es als Programmierer wenig Spass macht diese zu programmieren. Für diese müssen Sie z.B. Sortierfunktionen und Suchfunktionen selber coden. Also können Sie ein Recordset benutzen, das all diese Funktionen bereits enthält.
Spalten erstellen:
können Sie mit Hilfe der Append-Methode der Fields-Collection. Hier die Syntax.
rs.Fields.Append <Spaltenname>, <Datentyp>, <Grösse>, <Attribute>, <Wert> |
Wichtig ist die Reihenfolge ist der verschieden "Methode Calls". Hier die kurz Form:
set rs = Server.CreateObject("ADODB.Recordset") rs.Fields.Append .... rs.Open rs.Fields(0).Value = .... rs.UpdateBatch |
Hier ein vollständiges Sample:
- konvertieren eines Textfiles in ein Recordset
(Textfile 1. Spalte = Spaltennamen, ab 2. Spalte Daten, Tabulator getrennte Werte)
- darstellen des Textfiles als HTML-Table
Textfile in Recordset einlesen
<%@ Language=VBScript %> <% Dim sFile ' enthält den Pfad und Name der TextDB Dim fs ' FileSystemObject = für Dateizugriff Dim txtST ' TextStream = zum Auslesen einer Textfiles Dim rs ' Recordsets der Datenspeicher Dim sLine ' enthält jeweils eine Zeile des TextFiles Dim aFieldNames ' Array mit Spaltennamen (erste Zeile des Textfiles) Dim aFieldValues ' Array mit Spaltenwerte (ab der 2. Zeile des Textfiles) Dim i ' Zähler sFile = Server.MapPath("./db.txt")
' Object instanzen erzeugen set fs = Server.CreateObject("Scripting.FileSystemObject") set rs = Server.CreateObject("ADODB.Recordset") ' TextStream-Object referenz holen set txtST = fs.OpenTextFile(sFile) sLine = txtST.ReadLine 'Spaltennamen auslesen aFieldNames = split(sLine,vbTab) ' vbTab = Tabulator getrennte Werte in Array splitten ' Spalten erstellen, adVarWChar als String-Datentyp mit der Grösse 255 Zeichen for i = 0 to ubound(aFieldNames) rs.Fields.Append aFieldNames(i), adVarWChar, 255 next ' Jetzt initiiertes Recordset öffnen rs.Open ' Durch das TextFile lupen do until txtST.AtEndOfStream sLine = txtST.ReadLine ' Datenzeile auslesen aFieldValues = split(sLine, vbTab) ' Splitten / hier evtl. Trim-Funktion einfügen rs.AddNew ' neuen Datensatz dem Recordset hinzufügen ' Werte in Fields übertragen for i = 0 to ubound(aFieldValues) rs.Fields(i).Value = aFieldValues(i) next loop ' Alle hinzufügen Datensätze im Recordset speichern rs.UpdateBatch %> |
Recordset ausgeben...
<HTML> <HEAD> </HEAD> <BODY> <h1>Das TextFile-Recordset ausgeben</h1> <% '----------------------------------------------------------------- '---- Ausgabe des Recordsets '----------------------------------------------------------------- if not (rs.BOF and rs.EOF) then rs.MoveFirst Response.Write "<table>" Response.Write "<tr>" for i = 0 to rs.Fields.Count-1 Response.Write "<td>" & rs.Fields(i).Name & "</td>" next Response.Write "</tr>" do until rs.EOF Response.Write "<tr>" for i = 0 to rs.Fields.Count-1 Response.Write "<td>" & rs.Fields(i).Value & "</td>" next Response.Write "</tr>" rs.MoveNext loop Response.Write "</table>" end if %> </BODY> </HTML> <% set fs = nothing set rs = nothing %>
|