Daten in einem Access Textfeld aufteilen

Hallo,

von einer Krankenversichertenkarte lese ich Daten in ein Textfeld über einen Chipkartenleser ein. Sie landen in Dem Textfeld kom.

Ich möchte diesen String?? in dem Textfeld (kom):

Krankenkasse=AOK
KNummer=654966
VkNr=648653
VNummer=875622
Status=000
StatusExt=
Vorname=Test
Name=Test
GebDatum=00000000
Strasse=Von 5
Land=D
PLZ=88888
Ort=Hone
Gultigkeit=1231
CheckSumme=p0

aufteilen.

Die einzelnen Positionen rechts vom = in je ein Textfeld schreiben, um die Daten weiter zu verarbeiten?

Ich habe es probiert mit

KKasse: Rechts([kom];Länge([kom])-InStr([kom];"="))

Ich bekomme jetzt zwar AOK ohne Krankenkasse davor, aber hinter AOK sind noch immer die anderen Daten.

Weiss einer wie ich das realisieren kann?

Danke

Gruß elke

Hallo,

von einer Krankenversichertenkarte lese ich Daten in ein
Textfeld über einen Chipkartenleser ein. Sie landen in Dem
Textfeld kom.

Ich möchte diesen String?? in dem Textfeld (kom):

Krankenkasse=AOK

KNummer=654966

VkNr=648653

VNummer=875622

Status=000

StatusExt=

Vorname=Test

Name=Test

GebDatum=00000000

Strasse=Von 5

Land=D

PLZ=88888

Ort=Hone

Gultigkeit=1231

CheckSumme=p0

aufteilen.

Die einzelnen Positionen rechts vom = in je ein Textfeld
schreiben, um die Daten weiter zu verarbeiten?

Ich habe es probiert mit

KKasse: Rechts([kom];Länge([kom])-InStr([kom];"="))

Ich bekomme jetzt zwar AOK ohne Krankenkasse davor, aber
hinter AOK sind noch immer die anderen Daten.

Weiss einer wie ich das realisieren kann?

Ich denke, mit einer zweifachen Anwendung der Split-Funktion solltest Du den String aufsplitten können…

Sub Kom_Afterupdate()
dim a1,a2, i as long

a1= Split (Me!kom,vbcrlf) ’ falls die Zeilenschaltung aus Cr und Lf besteht
for i=Lbound(a1) to Ubound(a1)
a2=Split(a1(i),"=")
Me(a2(0))=a2(1)
next
End Sub

wobei es Textfelder im Formular mit den entspr. Namen geben muß

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz,

Danke für Deine Antwort und den Code.

Jetzt bekomme ich, dank dem Code von Dir, die Daten in einzelne Textfelder und kann sie in einer Tabelle speichern.

Jetzt ergibt sich folgendes Problem:

Nach Aktualiesierung erscheint die Fehlermeldung Laufzeitfehler 9: Index außerhalb des gültigen Bereichs und im VBA-Editor ist die Zeile Me(a2(0)) = a2(1) gelb markiert.

Hast Du da vieleicht auch eine Lösung für mich?

Danke

Gruß elke

Hallo Elke,

wann, wie und wo verwendest Du den Code?

Bei „Nach Aktualisierung“ von WAS?

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz,

bin Dir erstmal superdankbar für den Code.

Ich verwende den Code in dem Textfeld (kom). In dieses Textfeld werden die KVK Daten eingelesen.

Der Code von Dir:
Private Sub kom_DblClick(Cancel As Integer)
Dim a1, a2, i As Long

a1 = Split(Me!kom, vbCrLf)
For i = LBound(a1) To UBound(a1)
a2 = Split(a1(i), „=“)
Me(a2(0)) = a2(1)
Next
End Sub

überträgt bei Doppelklick die Daten in einzelne Textfelder und dann kommt die Fehlermeldung und die Zeile Me(a2(0)) = a2(1) wird gelb angezeigt.

Gruß elke

Hallo Elke,

der Code besitzt ja keine Plausibilitäts-Prüfungen…

Die Fehlermeldung kommt u. a. dann, wenn das Feld „kom“ nicht genau entspr. Deiner Beschreibung gefüllt ist, z. B.
– es gibt eine Leerzeile

– es gibt kein „=“ -Zeichen in einer Zeile

Hier ein entspr. modifizierter Code:

Private Sub kom_DblClick(Cancel As Integer)
Dim a1, a2, i As Long
On Error Goto MyErr
a1 = Split(Nz(Me!Kom, „“), vbCrLf) ’ falls die Zeilenschaltung aus Cr und Lf besteht
For i = LBound(a1) To UBound(a1)
a2 = Split(a1(i), „=“)
If UBound(a2) = 1 Then
Me(a2(0)) = a2(1)
Else
'MsgBox „Formatfehler im Quellfeld“
End If
Next

On Error Goto 0
Exit Sub

MyErr:
MsgBox „Error " & Err.Number & " (“ & Err.Description & „)“
End Sub

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz,

Vielen herzlichen Dank, für Deine Hilfe.
Mit dem neuen Code klappt es wunderbar und Dank Deiner Beschreibung auch gleich noch dazu gelernt.

Danke,
Gruß elke