2.9k Aufrufe
Gefragt in Datenbanken von bassix Einsteiger_in (37 Punkte)
Hallo,
ich importiere mit TransferText acImportDelim eine CSV in eine MDB.

Dies funktioniert einwandfrei,
jedoch wenn ein Datensatz ein leeres Feld enthält, wird in der MDB der Datensatz nicht angelegt.

Frage: gibt es für den TransferText acImportDelim - Vorgang Sonderzeichen die ein Feld als leer Kennzeichnen können?

Beispiel:

CSV:
Vorname;Nachname;Tel;Email
Markus;Meier;089/123456789;mmeier@domain.de <-- Fall1 wird übertragen
Alf;Müller;;amueller@domain.de <-- Fall2 wird NICHT übertragen

MDB:
Vorname;Nachname;Tel;Email
Markus;Meier;089/123456789;mmeier@domain.de

VBS:
Dim Acc
Set Acc = CreateObject("Access.Application")
Acc.OpenCurrentDatabase ("C:\DB.mdb")
Acc.DoCmd.TransferText acImportDelim, ";", "tblAdress", "C:\import.csv", true
Set Acc = Nothing

6 Antworten

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

habe es mit dem Importassistenten von Access nachvollzogen, der vergibt automatisch einen Feldnamen, wenn es dazwischen ein Feld gibt, das keine Überschrift hat.

Kann aber jederzeit geändert werden.


Gruß

Paul1

[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
MS Windows 7 Professional SP1
ECDL-Syllabus Version 4.0[/sub]
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo nochmals,

so ganz automatisch ist es auch wieder nicht, im zweiten Schritt des Textimport-Assistenten muß "erste Zeile enthält Feldnamen" angehakt sein, dann wird ein Feldnamen angeboten, mit OK bestätigen.

Gruß

Paul1
0 Punkte
Beantwortet von bassix Einsteiger_in (37 Punkte)
Danke für deine Hilfe Paul.

ich habe den Import-Assist von Access probiert,
dieser kommt mit zwei aufeinanderfolgenden Semikolon klar und erkennt leere Zellen.

jedoch soll der Import mit VBS durchgeführt werden
die Funktion acImportDelim verhält sich aber anders:
sie erkennt keine leere Zellen bei aufeinanderfolgenden Semikolon.

- meine Frage nochmal neu formuliert, sie bezieht sich auf acImportDelim:

Kann in der CSV-Datei auf eine Weise eine Zelle als leer deklariert werden? z.B. mit NULL oder ähnlich?
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Leider habe ich von VBS keine Ahnung.

Gruß

Paul1
0 Punkte
Beantwortet von bassix Einsteiger_in (37 Punkte)
uuuuups...

in der Datenbank waren die Erforderlich-Feldeigenschaften auf Ja eingestellt, nachdem ich diese geändert hatte lief alles reibungslos.

Quelle:
http://office.microsoft.com/de-de/access-help/importieren-von-oder-verknupfen-mit-daten-in-einer-excel-arbeitsmappe-HA001219419.aspx

Leere Spalten, Zeilen und Zellen:

Wenn Sie die Datensätze einer vorhanden Tabelle anfügen möchten, stellen Sie sicher, dass das entsprechende Feld in der Tabelle Nullwerte (fehlende oder unbekannte Werte) akzeptiert. Ein Feld akzeptiert Nullwerte, wenn seine Erforderlich-Feldeigenschaft auf Nein festgelegt ist und seine Gültigkeitsregel-Eigenschaft Nullwerte zulässt.
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Da habe ich Dich aber ordentlich mißverstanden, ich bin immer davon ausgegangen, dass Spaltenüberschriften in der csc-Datei fehlen und dieses Manko durch den Import nach Access ausgeglichen werden muß.

Nach dem Import der csv-Datei nach Access waren in der Entwurfsansicht der Tabelle "Eingabe erforderlich" bei mir aber alles standardmäßig auf "Nein" gestellt!

Das "Ja" im Feld keine Nullwerte zuläßt ist völlig klar.

Ich danke trotzdem für Dein Feedback und den bekanntgegebenen Link, obwohl ich diesbezüglich keine Nachhilfe brauche.

schönen Tag noch

Gruß

Paul1
...