Discussion:
.csv-Datei von Access aus bearbeiten
(zu alt für eine Antwort)
Ekkehard Böhme
2004-12-09 16:30:05 UTC
Permalink
Hallo und guten Tag,
Kurze Frage:
Ist es möglich von Access (A2K) aus in einer .csv-Datei ein "Suchen &
Ersetzen" auszuführen?
Für Tipps und Hinweise wie immer dankbar
ekkehard böhme
Gerald Aichholzer
2004-12-09 17:17:55 UTC
Permalink
Post by Ekkehard Böhme
Hallo und guten Tag,
Ist es möglich von Access (A2K) aus in einer .csv-Datei ein "Suchen &
Ersetzen" auszuführen?
Für Tipps und Hinweise wie immer dankbar
ekkehard böhme
Hallo Ekkehard,

Textdateien werden immer read-only eingebunden. Alternativ könntest
du die Textdatei in eine Tabelle importieren, dort deine Ersetzungen
vornehmen und die Tabelle wieder in eine Textdatei exportieren.

Oder du nimmst einfach einen guten Texteditor und führst dort die
Ersetzungs-Operation durch. Notetab Lite ist beispielsweise frei
verfügbar (http://www.notetab.com/ntl.php).

schöne Grüße,
Gerald
Michel Fouquet
2004-12-09 18:48:47 UTC
Permalink
Hallo Gerald,
Post by Gerald Aichholzer
Textdateien werden immer read-only eingebunden.
Gemeinhin versteht man in diesem Zusammenhang unter read-only, dass das

Hinzufügen,
Ändern und
Löschen

von Datensätzen. Für eingebundene Textdateien trifft diese Auslegung
jedoch nicht zu. Denn das Hinzufügen von Datensätzen (also neuen Zeilen
in der Textdatei) ist sehr wohl möglich, wie man durch einfaches Testen
feststellen kann. (Falls man allerdings Mist angefügt hat, kriegt man
diesen per Access-GUI nicht wieder weg.)

Dieser Hinweis ändert natürlich nichts an der Gültigkeit Deiner
sonstigen Darlegungen, insbesondere im Hinblickauf das Suchen und
Ersetzen von Feldinhalten.

mfg,
Michel
Gerald Aichholzer
2004-12-10 07:33:00 UTC
Permalink
Post by Michel Fouquet
Hallo Gerald,
Post by Gerald Aichholzer
Textdateien werden immer read-only eingebunden.
Gemeinhin versteht man in diesem Zusammenhang unter read-only, dass das
Hinzufügen,
Ändern und
Löschen
von Datensätzen. Für eingebundene Textdateien trifft diese Auslegung
jedoch nicht zu. Denn das Hinzufügen von Datensätzen (also neuen Zeilen
in der Textdatei) ist sehr wohl möglich, wie man durch einfaches Testen
feststellen kann. (Falls man allerdings Mist angefügt hat, kriegt man
diesen per Access-GUI nicht wieder weg.)
Hallo Michel,

danke für deine Ausführung. Dass man Datensätze zu eingebundenen
Textdateien hinzufügen kann, ist mir tatsächlich neu. Damit habe
ich nicht gerechnet ;)

schöne Grüße,
Gerald
Olaf Rabbachin
2004-12-10 06:45:16 UTC
Permalink
Hi,
Post by Ekkehard Böhme
Ist es möglich von Access (A2K) aus in einer .csv-Datei ein "Suchen &
Ersetzen" auszuführen?
Für Tipps und Hinweise wie immer dankbar
wenn's nur um einen replace geht, würde ich die Datei einfach vollständig
einlesen (sofern sie eine "normale" Grösse aufweist), einen replace darüber
laufen lassen und per #put wieder zurückschreiben.
Hier ein Schnipsel zum Einlesen, zu put/print und Konsorten s. OH:

--- 8< ---
'returns a textfile (specified by strTextFile) as string
Function readFileIntoString(strTextFile As String) As Variant
On Error GoTo HandleErrors
Dim intFileNo As Integer, strTxtStream As String

intFileNo = FreeFile
Open strTextFile For Binary As #intFileNo
strTxtStream = Space(LOF(intFileNo))
Get #intFileNo, , strTxtStream
strTxtStream = LTrim(strTxtStream)
readFileIntoString = RTrim(strTxtStream)

ExitHere:
On Local Error Resume Next
Close intFileNo
Exit Function

HandleErrors:
MsgBox "Error " & Err & vbCrLf & _
"Description:" & vbCrLf & Err.Description, vbCritical, _
"Error while reading file " & strTextFile
Resume ExitHere
End Function
--- 8< ---

Da du von einer CSV sprichst, kannst du diese jedoch auch als Tabelle
einlinken. Sharing-Probleme gibt's, wenn jemand die Datei z.B. in Excel
geöffnet hat und es erwarten dich Probleme beim Linken (oder auch Import)
mit Rechnern, die unterschiedliche Ländereinstellungen aufweisen und/oder
andere Trennzeichen verwenden.

Bis dann,
Olaf [MVP]
--
Bitte keine emails auf NG-postings.

My .02: www.Resources.IntuiDev.com
Ekkehard Böhme
2004-12-10 13:27:36 UTC
Permalink
Post by Ekkehard Böhme
Hallo und guten Tag,
Ist es möglich von Access (A2K) aus in einer .csv-Datei ein "Suchen &
Ersetzen" auszuführen?
Für Tipps und Hinweise wie immer dankbar
ekkehard böhme
Vielen Dank an Euch. Aber:
Gerald, Olaf
Post by Ekkehard Böhme
Textdateien werden immer read-only eingebunden. Alternativ könntest
du die Textdatei in eine Tabelle importieren, dort deine Ersetzungen
vornehmen und die Tabelle wieder in eine Textdatei exportieren.
wenn's nur um einen replace geht, würde ich die Datei einfach vollständig
einlesen (sofern sie eine "normale" Grösse aufweist), einen replace
darüber
Post by Ekkehard Böhme
laufen lassen und per #put wieder zurückschreiben.
Wieder exportieren muss ich sie nicht, und das Importieren funkt ohne das
"replace" leider nicht.
Das Problem ist ein Datums-/Zeitwert. In der .csv-Datei steht in manchen
Datensätzen "0000-00-00 00:00:00", und das verursacht beim Import einen
Überlauf-Fehler.
Post by Ekkehard Böhme
Oder du nimmst einfach einen guten Texteditor und führst dort die
Ersetzungs-Operation durch. Notetab Lite ist beispielsweise frei
verfügbar (http://www.notetab.com/ntl.php).
So mache ich es ja im Moment; also in Excel "suchen & ersetzen" und dann per
Importspezifikation in Access in eine bzw. mehrere Tabelle(n) importieren.
Ich dachte jedoch, dass es vielleicht möglich ist direkt aus Access heraus,
vor dem eigentlichen Import, das "replace" auszuführen.

Muss ich es wohl weiter "manuell" machen.

Trotzdem vielen Dank für Eure Bemühungen.
freundliche grüsse von ekkehard böhme
Gerald Aichholzer
2004-12-10 13:52:31 UTC
Permalink
Post by Ekkehard Böhme
Gerald, Olaf
[snip]
Post by Ekkehard Böhme
Wieder exportieren muss ich sie nicht, und das Importieren funkt ohne das
"replace" leider nicht.
Das Problem ist ein Datums-/Zeitwert. In der .csv-Datei steht in manchen
Datensätzen "0000-00-00 00:00:00", und das verursacht beim Import einen
Überlauf-Fehler.
Post by Gerald Aichholzer
Oder du nimmst einfach einen guten Texteditor und führst dort die
Ersetzungs-Operation durch. Notetab Lite ist beispielsweise frei
verfügbar (http://www.notetab.com/ntl.php).
So mache ich es ja im Moment; also in Excel "suchen & ersetzen" und dann per
Importspezifikation in Access in eine bzw. mehrere Tabelle(n) importieren.
Ich dachte jedoch, dass es vielleicht möglich ist direkt aus Access heraus,
vor dem eigentlichen Import, das "replace" auszuführen.
Muss ich es wohl weiter "manuell" machen.
Hallo Ekkehard,

jetzt verstehe ich endlich dein grundsätzliches Problem, das
ändert natürlich einiges.

In diesem Fall würde ich die Tabelle in die Access-DB einbin-
den und in der Import-Spezifikation den Datentyp der Datums-
spalte auf "Text" ändern.

Anschließend erzeugst du eine Abfrage, die in etwa wie folgt
aufgebaut ist:

SELECT ...
Wenn(IstDatum([Datumsspalte]),
ZDatum([Datumsspalte]),
Null)
...
FROM [eingebundener CSV-Datei]

Und das Ergebnis dieser Abfrage importierst du in deine Ziel-
tabelle (bzw. du verwendest einfach die Abfrage, wenn du die
Daten nicht in einer Tabelle benötigst).

HTH,
Gerald


PS: ich hoffe, dass ich die deutschen Funktionsnamen richtig
zitiert habe, ich verwende normalerweise immer die englische
Variante
Ekkehard Böhme
2004-12-10 17:32:49 UTC
Permalink
Hallo Gerald,
Vielen Dank für Deinen weiteren Tipp. Ich werde das mal so ausprobieren.
schönes Wochenende
ekkehard böhme

P.S. Entschuldigung für TOFU
Post by Gerald Aichholzer
Post by Ekkehard Böhme
Gerald, Olaf
[snip]
Post by Ekkehard Böhme
Wieder exportieren muss ich sie nicht, und das Importieren funkt ohne das
"replace" leider nicht.
Das Problem ist ein Datums-/Zeitwert. In der .csv-Datei steht in manchen
Datensätzen "0000-00-00 00:00:00", und das verursacht beim Import einen
Überlauf-Fehler.
Post by Gerald Aichholzer
Oder du nimmst einfach einen guten Texteditor und führst dort die
Ersetzungs-Operation durch. Notetab Lite ist beispielsweise frei
verfügbar (http://www.notetab.com/ntl.php).
So mache ich es ja im Moment; also in Excel "suchen & ersetzen" und dann per
Importspezifikation in Access in eine bzw. mehrere Tabelle(n) importieren.
Ich dachte jedoch, dass es vielleicht möglich ist direkt aus Access heraus,
vor dem eigentlichen Import, das "replace" auszuführen.
Muss ich es wohl weiter "manuell" machen.
Hallo Ekkehard,
jetzt verstehe ich endlich dein grundsätzliches Problem, das
ändert natürlich einiges.
In diesem Fall würde ich die Tabelle in die Access-DB einbin-
den und in der Import-Spezifikation den Datentyp der Datums-
spalte auf "Text" ändern.
Anschließend erzeugst du eine Abfrage, die in etwa wie folgt
SELECT ...
Wenn(IstDatum([Datumsspalte]),
ZDatum([Datumsspalte]),
Null)
...
FROM [eingebundener CSV-Datei]
Und das Ergebnis dieser Abfrage importierst du in deine Ziel-
tabelle (bzw. du verwendest einfach die Abfrage, wenn du die
Daten nicht in einer Tabelle benötigst).
HTH,
Gerald
PS: ich hoffe, dass ich die deutschen Funktionsnamen richtig
zitiert habe, ich verwende normalerweise immer die englische
Variante
Thomas Möller
2004-12-11 07:47:53 UTC
Permalink
Hallo Ekkehard,
Post by Ekkehard Böhme
P.S. Entschuldigung für TOFU
das verstehe ich jetzt nicht. Du entschuldigst Dich und machst es im selben
Posting gleich wieder.
Ist es denn wirklich so schwer die überflüssigen Zeilen zu löschen?

CU
--
Thomas

Homepage: www.team-moeller.de

TM-Änderprotokoll: Version 2.10 (seit 17.11.2004)
Wer hat wann welchen Datensatz wie geändert?
Loading...