Tom: Auslesen einer *.txt Datei

Beitrag lesen

Ich wuerde gerne Daten aus einer Text-Datei zeilenweise auslesen um sie dann weiter zu verarbeiten (--> Anzeigen falls vorgegebener String gefunden wurde). Mein Problem: Wie kann ich dies tun?

Hallo Remy

Wie die anderen Kollegen im Thread richtig angemerkt haben ist ein Zugriff aus Javascript auf irgendwelche DB-Dateien auf dem lokalen Client-Rechner nicht möglich.
Auch wird es nicht möglich sein Text-Dateien übers Internet/Intranet zu laden, da der Browser je nach Mime-Typ (oder Datei-Extension) die Datei anzeigt oder den Speichern-Dialog aufruft.

Das einzige was Du von einem Server herunterladen kannst, sind Javascript-Dateien (mit der .js-Extension).

Also musst Du die Datenbank in eine JS-Datei verpacken. Dazu muss aber jeder Record (Datensatz, Excelzeile) zuvorderst einen Variablennamen und am Schluss ein Strichpunkt aufweisen.

zum Beispiel:

DataRecord[0] = "WertausSpalte1,WertausSpalte2,...,WertausSpalte9" ;
   DataRecord[1] = "WertausSpalte1,WertausSpalte2,...,WertausSpalte9" ;
   DataRecord[2] = "WertausSpalte1,WertausSpalte2,...,WertausSpalte9" ;
   ...
   DataRecord[n] = "WertausSpalte1,WertausSpalte2,...,WertausSpalte9" ;

Du musst also im Excel oder Word (über Excel- oder Word-Makros / VBA) irgendein Weg finden, eine solche Textdatei zu erzeugen.

Vor dem ersten Record muss noch mindestens folgende Javascript-Zeile eingefügt werden:
    var DataRecord= new Array();

Danach speicherst Du die Datei ab und änderst die Extension auf '.js'.

In der HTML-Seite musst Du zwei JavaScript-Aufrufe setzen:

<script language="javascript" src="MeineDatenbank.js" type="text/javascript"></script>
    <script language="javascript" src="MeineScript.js" type="text/javascript"></script>

Im verarbeitenden Script (MeinScript.js) kannst Du die in einer Schlaufe die einzelnen Datensätze durchgehen, in einzelne Felder aufsplitten und weiterverarbeiten:

s_Pattern = /(\w.+),(\w.+),(\w.+),...,(\w.+)/ ;
    s_Pattern.exec(DataRecord[i]);
    Feld1 = RegExp.$1;
    Feld2 = RegExp.$2;
    ...
    Feld9 = RegExp.$9;

Weiteres zu den Patterns findest Du in 'http://www.teamone.de/selfhtml/tecj.htm#a3'.

Diese Vorgehensweise verwende ich bei einer Initialisierung einer Tree-Struktur mit ca. 50 Records. Wie jedoch das Leistungsverhalten bei 8000 Records ist kann ich nicht beurteilen.
Ein weiterer Nachteil ist, dass man beim Splitten maximal 9 Felder haben darf. Sind mehr Felder vorhanden, muss der ganze Vorgang mit unterschiedlichen Feldtrennzeichen  geschachtelt durchgeführt werden.

Ich hoffe, dass ich Dir helfen konnte ... ;-)

Grüsse

Tom