Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Teil-Inhalte des Textfeldes auslesen





Frage

Hallo zusammen, ich habe folgendes Problem in meiner Access XP Datenbank: in einem Textfeld (Format Memo) sind mehrereAngaben erfasst, die ich trennen möchte. Die Texteingaben sind mit dem Zeichen ; voneinander getrennt und können mehrere Wörter enthalten (zB: Rasen; Spaten; Samen für Rasen, Q1;). Aus jedem getrennten String soll eine Zeile in der Artikel-Tabelle im Feld Artikel-Bez entstehen. Wie kann ich dies bewerkstelligen? Besten Dank für Eure Bemühungen.

Antwort 1 von Gummikuh

Hallo Urs,
nun habe ich von Access leider keine Ahnung, aber gibt es dort nicht die Möglichkeit (ich kenne es von Pascal) entweder direkt, oder via VB einen String in einer Schleife Buchstabenweise auszugeben/untersuchen?
Du liest also Buchstabenweise in eine neue Variabele ein, und prüfst dabei jedes Zeichen ob CHAR == " ; "
wenn dein ; auftaucht, ist in Deiner neuen Variabele der Artikel drin, diesen kannst Du nun wegschreiben, die Var. wieder leeren und die Schleife bis zum Ende des String weiterlaufen lassen.
Gruss
Micha

Antwort 2 von Combo

Zitat:
nun habe ich von Access leider keine Ahnung

Genau wie ich ;-). Suche mal in der Dokumentation nach der Funktion split(). Excel hat das ab Version 2000.

Antwort 3 von Urs

Hallo zusammen,
besten Dank für Eure Anregungen. Ich habe leider nur von VBA eine ganz kleine Ahnung.
Hier müsste ich ein Recordset einlesen und dann die Schlaufe machen, richtig), aber wie schreibe ich die Dinger in die Artikeltabelle?

Split-Anweisung habe ich in VBA gefunden mittels eines Array:
Array1(1) = Split(strText,";")...
und dann die Schlaufe mit rausschreiben?

Hat jemand ein Code-Beispiel für die Schlaufe mit rausschreiben in Artikeltabelle?
besten Dank

Antwort 4 von Combo

Ich kann Dir nur sagen, wie Du die Splitfunktion richtig benutzt:

Dim s As String
Dim a As Variant
Dim n As Long
s = "eins;zwei;drei"
a = Split(s,";")
For n = 0 To UBound(a)
 ´schreibe a(n) in tabelle
Next

Du bereitest eine Variable vom Typ Variant vor. Split übergibt dann die Spalteninhalte vom Textstring als Array an diese Variable.
In diesem Beispiel ist also "a" nach Split() ein Array. In a(0) steht "eins", a(1) ist "zwei" und a(2) gleich "drei". Mit der Funktion UBound() kannst Du abfragen, welches der höchste Indexwert im Array ist. Im Beispiel wäre das "2".
Die Schleife kommt also erst nach dem Splitten. Du gehst vom Indexwert 0 bis zum Höchsten durch den Array "a" durch und schreibst nacheinander jedes Element in die Tabelle.

Antwort 5 von Urs

Hallo zusammen,

ich habe die Lösung gefunden. Besten Dank für Eure Anregungen.
Hier der Auszug mit der Splitfunktion und dem Schreiben der Tabelle
´
´ Datensätze einzeln bearbeiten
´
rsE.MoveFirst
Do Until rsE.EOF
With rsE
Debug.Print ![11treff_txt]
If ![11treff_txt] <> "" Then
Txtfeld = ![11treff_txt]
´ MsgBox Txtfeld
´ Feld in Array einlesen
´
a = Split(Txtfeld, ";")
For z1 = 0 To UBound(a)
Debug.Print a(z1)
´
´ führende Leerstellen entfernen
´
Txttrim = LTrim(a(z1))
Debug.Print Txttrim
´
´ Daten in Tabelle ausgeben
´
With rsAdd
.AddNew
!TR_FB_Nr = rsE![Fragebogen_Nr]
!TR_Jahrgang = rsE![Jahrgang]
!TR_Sex = rsE![Sex]
!TR_Sex_txt = rsE![Sex_txt]
!TR_Treff_txt = Txttrim
.Update
End With
´
Next
´
End If
.MoveNext
End With
Loop
´