PDA

Vollständige Version anzeigen : Nach import Textdatei, Daten auf Änderungen prüfen


ziege
30.06.2003, 14:18
Hallo,

zur Verwaltung von Fahrkarten und deren Abrechnung bekomme ich mehr oder weniger oft eine Textdatei zugestellt. In dieser Textdatei sind alle wichtigen Daten enthalten (ID, Name, Adresse, Ort, von_Haltestelle, Nach_Haltestelle usw.).
Diese Datei lese ich in eine temporäre Tabelle ein und drösel diese Tabelle soweit auf das zusammengehörende Daten in jeweils eine Tabelle gespeichert werden.
Z.B. Eine Tabelle für die Stammdaten der Fahrgäste, eine Tabelle für die Daten der Fahrkarten ( von - nach) usw.

Dreh und Angelpunkt der ganzen Abrechnungsgeschichte ist der einzelne Fahrgast. D. h. die Abrechnungen basieren auf den jeweiligen Fahrtdaten des Fahrgastes.

Ich stehe nun vor dem Problem das ich erkennen muß ob sich der Inhalt eines DS gegenüber einem evtl. bereits gespeichertem DS (dieses Fahrgastes) geändert hat. Dabei kann eine Änderung bedeuten das ein kompl. Neuer Fahrgast auftaucht, es kann aber auch bedeuten das sich zum Beispiel nur ein Adresse oder das Fahrziel oder der Abfahrtsort ändert. Mir wird zwar ein Änderungsdatum mitgeliefert, aber daran erkenne ich nicht welcher Feldinhalt sich geändert hat.

Es kann vorkommen das ich nur einen DS zugestellt bekomme oder aber auch 5000 DS, daher ist eine manuelle Kontrolle nicht machbar.

Ich habe mir eine Notlösung gebastelt die recht gut funkt, aber ich habe das Gefühl das diese Lösung nicht ganz so der Hit ist. Ich kopiere zur Zeit einfach alle Daten aus den relevanten Feldern einer Tabelle in ein Hilfsfeld in der gleichen Tabelle das ich als Textfeld deklariert habe, auf das ich dann einen Index setze. Dies kann ich aber nur machen da ich (zum Glück ?) nur max. 10 Felder je Tabelle zu prüfen habe. Letztlich kommt dabei heraus das ich in jeder Tabelle ein Feld habe in dem der (fast) gesamte Inhalt eines DS enthalten ist.

Gibt es dafür auch eine elegantere Lösung ?

Gruß

Ziege

WIN 2K, A97

Paul.Ostermeier
30.06.2003, 14:42
HI Ziege

mit nachfolgender Routine untersuche ich Text-Dateien nach Schlüsselwörtern, und bringe die Zeilen in eine definierte Struktur, damit ich ich anschließend per Textimport einlesen kann ... Dein Fall sieht ähnlich aus

Open gefunden For Input As #1
I = 0
Do Until EOF(1)
Line Input #1, strlinebuffer
If strlinebuffer Like "*/*" Then
strlinebuffer = Replace(strlinebuffer, "/", Chr(13) & Chr(10) & "", , , vbTextCompare)
End If

ReDim Preserve Dateiliste(I)
Dateiliste(I) = strlinebuffer
I = I + 1
Loop
Close #1

Open "neue Datei" For Output As #1
For I = 0 To UBound(Dateiliste)
Print #1, Dateiliste(I)
Next I
Close #1

viel Spass beim anpassen

Nouba
30.06.2003, 20:18
Hallo,

das Prinzip des Anfügens (Auswählens) neuer Daten könnte so wie im sehr einfach gehaltenen Beispiel im Anhang aussehen.

Bei Datenänderungen muß man entscheiden, wie verfahren werden soll. Sollen alte Datenbestände aktualisiert werden oder sollen neue Daten angehangen werden?

Vielleicht kannst Du auch mal drei Datensätze, so wie sie bei Dir ankommen und die Tabellenstruktur nebst Abfragen hochladen.

ziege
01.07.2003, 09:06
@ p. ostermeier

Ich glaube das diese Lösung nicht ganz das ist was ich suche. Irgendwie fehlt mir auch der Überblick was dort im einzelnen abläuft. Du prüfst praktisch die Daten VOR dem einlesen in die DB ?
Ist diese Lösung überhaupt zu verwenden wenn ich in den betreffenden Tabellen im grunde genommen den gesamten inhalt eines DS prüfen will ?

@nouba

Ich habe mal die kompl. DB und eine Textdatei angefügt.



Grundsätzlich will ich in den betroffenen Tabellen keine Daten überschreiben sondern hinzufügen. Dies ist erforderlich damit jederzeit eine Dokumentation möglich ist.
Und wie gesagt die Änderung kann u.U. aus nur einem Buchstaben oder einer Zahl in einem DS bestehen oder aber ein kompl. neuer DS sein.
Die Sache mit dem Hilfs ID hat den Vorteil das die Prüfung ohne weiteres Zutun von Access vorgenommen wird.
Da diese Lösung ja scheinbar funkt kann ich die Frage vieleicht auf folgendes reduzieren.
Ist ein indiziertes Textfeld mit max. 255 Stellen in einer Tabelle vertretbar oder nicht ?
Dieses Feld wird nur zum Zweck des erkennens von Änderungen im DS verwendet, und das auch nur beim einlesen einer Textdatei.

gruß

ziege