CSV Import

21/05/2009 - 18:47 von Joerg M. | Report spam
Hi NG,

Access 2003

Wir bekommen verschiedene CSV, mit unterschiedlicher Struktur.
In irgendwelchen Spalten stehen

Name
Vorname
Personalnummer

Die CSV-Datei soll importiert werden. Danach soll der Anwender angeben, in
welchen Spalten Name, Vorname, Personalnummer stehen. Jetzt soll eine neue
Tabelle angelegt werden, nur mit ID (aus der ersten Tabelle), Name, Vorname,
Personalnummer.

Wie kriege ich das hin?

1. FileDialog (kann ich)
2. Tabellen via VBA anlegen (kann ich)
3. CSV-Datei importieren mit fertiger Inmportspezifikation (kann ich)

ABER

Ich hab keinen Plan, wie ich eine CSV importieren soll, die immer
unterschiedlich sein kann. Also z.B. Anzahl Spalten und Position der
relevanten Spalten.

Wenn ich die CSV dann mal komplett in der Tabelle habe, kann ich den Rest,
denke ich.

Tipps?

Danke, Gruß Joerg
 

Lesen sie die antworten

#1 Josef Poetzl
21/05/2009 - 19:15 | Warnen spam
Hallo!

Joerg M. schrieb:
Wir bekommen verschiedene CSV, mit unterschiedlicher Struktur.
In irgendwelchen Spalten stehen
Name
Vorname
Personalnummer


[...]
Ich hab keinen Plan, wie ich eine CSV importieren soll, die immer
unterschiedlich sein kann. Also z.B. Anzahl Spalten und Position der
relevanten Spalten.

Wenn ich die CSV dann mal komplett in der Tabelle habe, kann ich den Rest,
denke ich.



Wie wàre mit so einem Ablauf (in einem ungebundenen Formular):
1. CSV-Datei auswàhlen
2. ein SQL-Anweisung zusammensetzen
(mit Bedingung where 1=0, da erstmal keine Daten benötigt werden)
3. die SQL-Anweisung an ein Listenfeld mit Herkunftstyp="Feldliste" übergeben
4. Benutzer wàhlt die Felder aus
5. Mit diesen Felder eine weitere SQL-Anweisung erstellen,
in der aber nur noch die ausgewàhlten Felder enthalten sind,
diesmal inkl. Daten
6. mit der neuen SQL-Anweisung den Datenimport durchführen
(Eventuell noch als Sicherheitscheck zuvor einen Datenauszug
in einem weiteren Listenfeld anzeigen.)


SQL-Anweisung für 2.) könnte so aussehen:
SELECT T.*
FROM [Text;;FMT=Delimited;HDR=YES;IMEX=2;CharacterSet…0;DATABASE=D:\eine].[Datei#csv] AS T
where 1=0


mfg
Josef


EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen