Hallo, mal wieder ein Hilfegesuch:
Ich habe folgende unstrukturierte .csv Liste; Separator: # die Reihenfolge und die Kennzeichnungsbegriffe (Name:, Tel: usw) der einzelnen Zellen sind immer gleich, aber es sind nicht in jeder Zeile alle Inhalte vorhanden (Zeile 1: Telefon fehlt usw). Leere Spalten sind nicht durch doppelte Separatoren gekennzeichnet.
#Name:abc#Strasse:xyz#Fax:001#Email:Test
#Name:aaa#Telefon:0002#Email:Test1
#Name:bbb#Telefon:9393#Fax:9348
Gewünschtes Ergebnis in Access:
Name Strasse Telefon Fax Email
abc xyz 001 test
aaa 0002 Test1
bbb 9393 9348
a) Gibt es eine Möglichkeit, diese Liste in korrekter Tabellenstruktur in Access einzulesen?
b) Alternativ kann ich je eine ganze Zeile in ein Memo Feld importieren, dann müsste ich aus dem Memo-Feld heraus allerdings noch die korrekte Tabellenstruktur herstellen zB über Tabellenerstellungsabfrage - aber wie kann ich die richtigen Inhalte der richtigen Spalte zuweisen? Man könnte den Inhalt zwischen "#Name:" .... und dem nächsten Separator "#" in eine neue Spalte auslesen usw. Weiss jemand, wie man das in SQL ausdrückt?
VBA kann ich leider nicht - fällt jemand eine Lösung mit SQL oder Access Abfrage ein?
Nachtrag mit Lösungsidee:
Text wurde als Memofeld importiert; Jetzt möchte ich den Bereich "Strasse:xyz" ausschneiden und in eigenem Feld darstellen:
Memofeld sieht folgendermaßen aus:
#Name:abc#Strasse:xyz#Fax:001#Email:Test#usw.
Folgende Formulierung gibt mir 400 Zeichen ab "#Strasse" wieder
Teil([Tabelle.Feld];InStr(1;[Tabelle.Feld];"#Strasse";1);400) --> Memofeld: #Strasse:xyz#Fax:001#Email:Test#usw.
Folgende Formulierung löscht alle Inhalte rechts vom darauffolgenden #
Teil([Tabelle.Feld];1;InStr(1;[Tabelle.Feld];"#";1)) --> Memofeld: #Strasse:xyz#
Problem: wie kriege ich das in eine kombinierte Formel, so dass ich nicht zwei aufeindanderfolgende Abfragen laufen lassen muss?
Das Ergebnisfeld sollte optimalerweise wie folgt aussehen:
"Strasse:xyz"
Viele Grüße
Anke
Hallo,
Zitatfolgende unstrukturierte .csv Liste
...unstrukturiert ist schon mal gar nicht gut! :(
ZitatKennzeichnungsbegriffe (Name:, Tel: usw) der einzelnen Zellen sind immer gleich
Nein, sind sie eben nicht, da - wie du folgend richtig beschreibst - die leeren Spalten fehlen. :'(
ZitatLeere Spalten sind nicht durch doppelte Separatoren gekennzeichnet.
...und der Ersteller dieses Datenchaos - was meint der zum Vorschlag die *.csv neu zu erstellen und zwar so, dass man damit auch vernünftig arbeiten kann? ::)
Dein Einsatz um die Sache in Ehren aber ...
ZitatDas Ergebnisfeld sollte optimalerweise wie folgt aussehen:
"Strasse:xyz"
...damit hast du mit diesem Ergebnis eigentlich nichts erreicht ausser dass das # vor Strasse wegfällt.
m.E. sollte der Wert
xyz in eine
Tabelle wandern und zwar ins
Feld Strasse, was aber mit deiner Methodik sicher
nicht zu bewerkstelligen ist.
Vielleicht ließe sich das Ding per VBA so aufdröseln, dass dabei auch noch was G'scheites rauskommt.
Ich könnte mir das mit einer Textsuche pro Zeile vorstellen aber dieses Prozedere ...
An der großen Anzahl von Reaktionen auf deine Anfrage kannst du ungefähr auf den Kosten/Nutzen - Faktor schließen. :-\
Grüße
Peter
Hallo,
habe gerade nichts anderes zu tun.... ;D
Folgende Prozedur in ein Standardmodul kopieren:
Public Function fktChaosEntflechtung(strFilename As String)
Dim i As Long, a, b, db As Database, lu As Long, rs As DAO.Recordset, strLine
On Error Goto MyErr
lu = FreeFile
Set db = CurrentDb
Set rs = db.OpenRecordset("tbl_Chaosbegrenzung", dbOpenDynaset)
Open strFilename For Input As #lu
Do Until EOF(lu)
Line Input #lu, strLine
a = Split(strLine, "#")
rs.AddNew
For i = 1 To UBound(a)
b = Split(a(i), ":")
rs(Replace(b(0), "Name", "Kennung")) = b(1)
Next
rs.Update
Loop
Close #lu
rs.Close
Set rs = Nothing
Exit_Function:
Exit Function
MyErr:
Msgbox "Fehler: " & Err.Number & "- " & Err.Description
Resume Exit_Function
End Function
und in einem Formular mittels einem Button aufrufen:
Private Sub Chaosuebernahme_Click()
fktChaosEntflechtung "c:\chaos.csv" 'richtigen Dateinamen angeben...
End Sub
vorher eine Tabelle anlegen mit den Feldern (Datentyp Text):
Kennung (auf Name "Name" DRINGEND verzichten!)
Strasse
Telefon
Fax
Email
Herzlichen Dank!!!
Grüße
Anke