PDA

Vollständige Version anzeigen : update/edit einer ausgelagerten TxT DB


Olaf.S
10.07.2006, 07:40
Hallo zusammen,
ich habe folgendes Problem:
Aufgrund zu vieler Dateien 2 GIGA und nicht Anbindung eines Schemas, für mich in meinem Betrieb. Musste ich die Daten aus ACC auslagern, als ; text.
Wie es immer so nach dem auslagern ist, man hat was übersehen.

Kann ich nicht via ADO das Verküpfte Textfile wie eine DB behandeln?
Wenn ja, währen eine Anfänger Hilfe sehr hilfreich.

Vielen Dank im Vorraus

Olaf

Kalle Reiber
11.07.2006, 10:31
Hallo Olaf,

Du kannst die Textdatei wie eine Datenbanktabelle betrachten und als solche in Deine Datenbank einbinden (also mit der Textdatei verknüpfen). Das geht über "Datei" - "externe Daten" - "Tabellen verknüpfen". Hier meldet sich der Assistent. Abhängig von der Struktur der Textdatei mußt Du hier z.B. Trennzeichen zwischen den einzelnen Elementen festlegen.
Wenn Du durch den Assistenten durch bist, hast Du eine Verknüpfte Tabelle, hinter der sich die Textdatei verbirgt. Darüber kannst die Daten der Textdatei editieren.

Paul.Ostermeier
11.07.2006, 11:07
@Olaf
2 Gigabyte Daten in einer (1) (Access) - Tabelle ?

BTW: um wieviel Datensätze handelt es sich dabei - hier im Forum wird immer mal wieder über Grenze der machbaren Datensatzanzahl spekuliert
- Ich darf wohl davon ausgehen, dass nicht die Antwortzeit das Problem ist sondern die schiere Anzahl Datensätze !? .. um gespeicherte Objekte (Grafiken etc:) kann es sich ja auch nicht handeln sonst würde Dir das Text-Format nichts bringen ....

MfG
Paul

Olaf.S
11.07.2006, 14:44
ne ne ist wegen der mengen, aber wie kann ich updaten. trotz verknüpfung!

Danke

Olaf.S
12.07.2006, 09:32
Hallo zusammen,
gipt es den wirklich keine möglichkeit eine separierte Text Datei zu editieren?

grüße Olaf

J_Eilers
12.07.2006, 11:46
Doch mittels Open, Line Input und Print zb. Aber der Aufwand dürfte evtl sehr groß werden und irgendwie fehlen da Informationen um den Umfang abschätzen zu können.

Olaf.S
12.07.2006, 14:56
also es sind 61 Spalten und 1.8 Mio Zeilen,
meine Idde währe. unde die verküpfung der Daatei als Tabelle, eine Update SQL zu generieren, und dann eine VBA zu schreiben die das ganze abfragt und schreibt!, geht das nicht?

Gruß und Dank olaf

J_Eilers
12.07.2006, 15:04
Was soll denn alles automatisch gemacht werden?

Datei verknüpfen, Abfrage starten? Das geht alles mit DoCmd.TransferText und DBEngine(0)(0).Execute. Aber wenn du da nicht genauer drauf eingehst, kann man dir auch nicht genauer antworten.

Olaf.S
12.07.2006, 15:10
Was genau benötigst du Exampel?

nachtrag warte ich bereite ein beispiel vor OK!

danke für deine geduld

J_Eilers
12.07.2006, 15:17
Lass dir Zeit, ich gehe jetzt nach Hause und schaue es mir dann morgen an.

Olaf.S
12.07.2006, 15:50
ich lerne es auch noch! warum nicht gleich so.........

also di update QRY in eine TXT datei;
füge zu den vorhandenen PLZ die richtige Region.

Schönen Dank

Olaf

J_Eilers
13.07.2006, 07:32
2 Möglichkeiten für dein Vorhaben:

Dim strDatei As String
Dim strSQL As String
Dim Zeile As String
Dim varAr As Variant
Dim rs As DAO.Recordset


'Hier wird eine neue Datei erstellt
strDatei = "C:\TEST\daten.txt"
Open strDatei For Input As #1
strDatei = "C:\TEST\daten1.txt"
Open strDatei For Output As #2

Do While Not EOF(1)
Line Input #1, Zeile
varAr = Split(Zeile, ";")
strSQL = "SELECT * FROM PLZ_REGION WHERE PLZ = '" & Replace(varAr(0), Chr(34), "") & "'"
Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot)
If Not rs.EOF Or Not rs.BOF Then
Print #2, varAr(0) & ";" & Chr(34) & rs.Fields(4) & Chr(34) & ";" & Chr(34) & rs.Fields(5) & Chr(34)
End If
Loop

Close #1
Close #2

'Hier wird die Tabelle importiert, überarbeitet und exportiert
strDatei = "C:\TEST\daten.txt"
DoCmd.TransferText acImportDelim, "", "Neu", strDatei, True

strSQL = "UPDATE Neu INNER JOIN PLZ_REGION ON "
strSQL = strSQL & "Neu.OBJE_PLZ = PLZ_REGION.PLZ SET "
strSQL = strSQL & "Neu.Subreg_HRD = PLZ_REGION!Subreg_Bez, "
strSQL = strSQL & "Neu.Subreg_Bez_HRD = PLZ_REGION!Gebiet_Bezeichnung"
DBEngine(0)(0).Execute strSQL, dbFailOnError

DoCmd.TransferText acExportDelim, "", "Neu", strDatei, True
DoCmd.DeleteObject acTable, "Neu"

Olaf.S
13.07.2006, 07:41
Vielen Dank werde mich sofort an die umstzung machn DANKE!!!!!