csv Datei importieren

14/08/2008 - 15:43 von Jörg Harnisch | Report spam
Hallo NG,
ich möchte eine csv Datei in eine Tabelle importieren. Ich habe einen
Quellcode, der mir ein Dialogfenster öffnet und ich dort eine csv Datei
auswàhlen kann.
Soweit alles gut! Nun habe ich aber das Problem, einige Felder nicht richtig
initialisiert werden. z.B. eine Spalte mit einer Hausnummer wird als
numerisches Feld angenommen, wenn dort aber in einer Zeile 6c drin steht,
dann bekomme ich einen Fehler. Ebenfalls habe ich ein Problem bei einer
Zins- Spalte, die als Uhrzeit definiert wurde. Wie kann ich dem csv Treiber
ein Format für alle Spalten vorgeben?

Code...

Public Function ImportCSV(ant As String)
'Deklaration csv Recordset
Dim CoCSV As DAO.Database
Dim RsCSV1 As DAO.Recordset
Dim sPath, sFN, sExt, HNr As String
Dim z As Integer

'Deklaration DB Recordset
Dim db1 As Database
Dim rs1 As Recordset
Set db1 = CurrentDb
Set rs1 = db1.OpenRecordset("KundenTab", dbOpenDynaset, dbSeeChanges)

'String ant zerlegen in Pfad und Dateiname
Dim objFso As Object
Set objFso = CreateObject("Scripting.FileSystemObject")
sPath = objFso.GetParentFolderName(ant)
sFN = objFso.GetBaseName(ant)
sExt = objFso.GetExtensionName(ant)

Set CoCSV = OpenDatabase(sPath, False, False, "text")
Set RsCSV1 = CoCSV.OpenRecordset("Select * from " & sFN & "." & sExt)
RsCSV1.MoveFirst
z = 0
While Not RsCSV1.EOF
rs1.AddNew
'Zeile erstellen
rs1!IDat = Date
rs1!AArt = ""
rs1!S_KSum = RsCSV1.Fields(34).Value
rs1!S_Laufzeit = RsCSV1.Fields(35).Value
rs1!S_Rate = RsCSV1.Fields(36).Value
rs1!S_Zins = Format(RsCSV1.Fields(37).Value, "###0.00") 'hier steht
z.B. 5,50 drin und er deutet es als 5:50:00 ?!?!
rs1!Status = RsCSV1.Fields(32).Value
rs1!Anrede = RsCSV1.Fields(0).Value
rs1!Vorname = RsCSV1.Fields(4).Value
rs1!Nachname = RsCSV1.Fields(5).Value
rs1!K_Str = RsCSV1.Fields(6).Value & " " &
Str$(RsCSV1.Fields(7).Value) 'die Hausnummer ist als numerisch erkannt und
wenn er zu der Zeile mit 6c kommt, dann bricht er ab.
rs1!K_PLZ = RsCSV1.Fields(8).Value
rs1!K_Ort = RsCSV1.Fields(9).Value
rs1!K_TelPriv = RsCSV1.Fields(13).Value
rs1!K_Email = RsCSV1.Fields(14).Value
rs1!EDat = Now
rs1!User = CurrentUser()
rs1.Update
z = z + 1
RsCSV1.MoveNext
Wend
RsCSV1.MoveLast
ant = RsCSV1.RecordCount

rs1.Close
Set db1 = Nothing

RsCSV1.Close
Set RsCSV1 = Nothing
Set CoCSV = Nothing

End Function


Danke
Gruß Jörg
 

Lesen sie die antworten

#1 Henry Habermacher
14/08/2008 - 16:04 | Warnen spam
Hallo Jörg

"Jörg Harnisch" wrote in message
news:e7rdJQh$

ich möchte eine csv Datei in eine Tabelle importieren. Ich habe einen
Quellcode, der mir ein Dialogfenster öffnet und ich dort eine csv Datei
auswàhlen kann.
Soweit alles gut! Nun habe ich aber das Problem, einige Felder nicht
richtig initialisiert werden. z.B. eine Spalte mit einer Hausnummer wird
als numerisches Feld angenommen, wenn dort aber in einer Zeile 6c drin
steht, dann bekomme ich einen Fehler. Ebenfalls habe ich ein Problem bei
einer Zins- Spalte, die als Uhrzeit definiert wurde. Wie kann ich dem csv
Treiber ein Format für alle Spalten vorgeben?



Zum Beispiel über eine Import Spezifikation, die Du mit dem Assistenten
erstellst und dann speicherst. Diese kannst Du dann beim Import angeben.

Gruss
Henry

Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen