Hallo Community,
hier im Hause gibt es eine Datenbank, mittels der txt-Dateien importiert und dann ausgewertet werden können.
Leider funktioniert das Ganze seit dem Umstieg von Office 2003 auf Office 2010 nicht mehr.
Mein Vorgänger hat die Datei schlichtweg über ein Makro und die darin enthaltene Importfunktion importieren lassen. Diesen Befehl gibt es ja nun aber nicht mehr und ich habe im Internet für mich verwirrende Angaben gefunden, wie es denn nun richtig geht.
Weg 1 wäre für mich, ich bekomme den Hinweis, welcher Befehl richtig ist, und Weg 2, ich bekomme einen Tipp, was an meiner VBA-Programmierung falsch ist.
Bei einem händischen Import mit Zugriff auf die Importspezifikation funktioniert alles, nur wenn ich den VBA-Code durchlaufen lasse, importiert er nur Daten in die erste Spalte (2 Zeichen) und schneidet die verbliebenen 200 Zeichen ab und wirft diese in einer "..Importfehler.."-Tabelle aus.
Wer kann mir einen Tipp geben, wie ich weitermachen kann?
Vielen Dank schon einmal!
Private Sub Import_Click()
On Error GoTo Import_Err
Dim fd
Dim Dateipfad As String
Dim gewähltedatei As Variant
DoCmd.SetWarnings False
DoCmd.OpenQuery "Import_DB_löschen", acViewNormal, acEdit
Beep
MsgBox "Bitte Import-Assistenten verwenden - TXT-Datei auswählen, Spezifikation angeben und an DATENBASIS_STATISTIK anfügen!", vbExclamation, ""
Set fd = Application.FileDialog(msoFileDialogFilePicker) 'FileDialog starten
With fd
.AllowMultiSelect = False
.Show
Dateipfad = gewähltedatei
End With
For Each gewähltedatei In fd.SelectedItems
Dateipfad = gewähltedatei
Next gewähltedatei
DoCmd.TransferText acImportDelim, "Importspezifikation_HS", "DATENBASIS_STATISTIK", Dateipfad
Beep
MsgBox "Import beendet.", vbInformation, ""
DoCmd.SetWarnings True
Import_Exit:
Exit Sub
Import_Err:
MsgBox Error$
Resume Import_Exit
End Sub
Hallo,
"..importiert er nur Daten in die erste Spalte (2 Zeichen) und schneidet die verbliebenen 200 Zeichen ab .."
entweder stimmt die Importspezifikation nicht genau(!) und/oder das Zielfeld in der Tabelle hat eine zu kleine Feldgröße....
Am Code sollte u. a. dieses geändert werden:
DoCmd.SetWarnings False
DoCmd.OpenQuery "Import_DB_löschen", acViewNormal, acEdit
ersetzen durch
Currentdb.Execute "Import_DB_löschen", dbFailOnError
Hallo Franz,
vielen Dank für Deinen Hinweis.
Ich habe noch mal eine Hardcopie gezogen.
Spalte 1 ist 2-stellig und nach dem Import mit "02" gefüllt, alle weiteren Spalten sind leer.
Wo soll da ein Fehler sein?
Ich habe an der Importspezifikation ja nichts verändert.
Hatte es schon vor dem Posten hier mit dem Speichern unter einem anderen Namen versucht, aber das brachte mich auch nicht weiter.
Hast Du noch eine andere Idee, außer die Importspezifikation einmal komplett neu zu erstellen?
An meinem restlichen Code scheint es ja nicht zu liegen, oder?
Viele Grüße
Nicole
(http://foto.arcor-online.net/palb/alben/85/3791985/3330323837383933.jpg)
Hallo,
hast Du mal ALLE Tabellen-Felder auf korrekte Länge überprüft?
An der (relevanten) Codezeile (Docmd.TransferText) liegt es auch nicht.
Hallo Franz,
nein, ich gestehe, das habe ich nicht überprüft, weil beim händischen Importieren in diese Tabelle die Importspezifikation ja auch greift und die Tabelle "Datenbasis_Statistik" hinterher genau so aussieht, wie ich sie erwarte.
Daher vermutete ich den Fehler in meinem Code.
Aber sei's drum. Ich werde mich morgen dran machen und alle Felder / Feldlängen überprüfen. Melde mich dann wieder.
Danke aber schon mal!
Guten Morgen in die Runde,
also inzwischen habe ich alle Felder in der Tabelle DATENBASIS_STATISTIK überprüft.
Reihenfolge und Feldlängen stimmen exakt mit der Importspezifikation überein.
Jetzt bin ich echt überfragt, wieso die Importspezifikation beim Importieren via VBA nicht korrekt greift, der beim Import mit dem Assistenten jedoch alles funzt.
Gibt es noch Ideen, was ich tun oder probieren könnte?
Da die Importspezifikation 160 Schritte enthält, zögere ich noch diese "einfach" neu anzulegen...
___________
Zwischenzeitlich habe ich die Importspezifikation erneuert, aber das hat überhaupt nichts gebracht. Sieht alles genauso aus wie mit der alten. Spalte 1 ist gefüllt, alle weiteren sind leer. :(
Hallo,
vermutlich liegt es doch am Code. Es sind ja fixe Spaltenlängen definiert...
DoCmd.TransferText acImportFixed, "Importspezifikation_HS", "DATENBASIS_STATISTIK", Dateipfad
Franz!
Ich schicke Dir im Geiste mal einen Kasten Pralinen!
Das war's - das "fixed".
Vielen, vielen Dank!
Warum nur "im Geiste" ... ??? :o 8)