bumbum
Goto Top

Access 1 Textfeld auf 2 Spalten in einer Tabelle aufteilen, beim speichern

Hallo Leute,
ich habe das Problem, dass ich Daten in ein Textfeld eingebe und diese Daten sollen beim speichern auf 2 Spalten in einer Tabelle aufgeteilt werden.
Bsp.: "56123-816" ist der Wert den ich eingebe
"56123" soll in die Spalte "LiefNr"
UND "816" soll in die Spalte "ArtNr" gespeichert werden.

Meine Frage:
Ist das von mir beschriebene Beispiel möglich und wenn ja, wie?

Ich Habe es schon mit den Excel-Formeln, LINKS und RECHTS versucht, aber das funktioniert nicht so wie ich das gemacht habe.

LG BUMBUM

Content-Key: 125071

Url: https://administrator.de/contentid/125071

Printed on: April 19, 2024 at 00:04 o'clock

Member: Biber
Biber Sep 16, 2009 at 10:31:44 (UTC)
Goto Top
Ja wie jezz', bumbum,

Ich Habe es schon mit den Excel-Formeln, LINKS und RECHTS versucht
ist es denn nun ein Accessformular oder sind wir grad in einem Excel-Sheet?

Und egal was nun für eine Krücke - was genau soll denn nun der Algorithmus sein für die Trennung?
Fest verdrahtet mid( eingabefeld,1, 5) und mid(eingabefeld,6,3) oder ein split() am Trennzeichen "-"?

Grüße
Biber
Member: bumbum
bumbum Sep 16, 2009 at 10:50:59 (UTC)
Goto Top
Hallo Biber,
es hat mit der mid() Funktion funktioniert, vielen Dank.

LG BUMBUM
Member: bumbum
bumbum Sep 22, 2009 at 09:03:12 (UTC)
Goto Top
Hey Biber,
kannst du mir mal erklären wie das mit der SPLIT()-Funktion in VBA funktioniert, wenn ich in Text1 = 65123-816 eingebe.

Was wird bei der funktion ausgegeben?
Was muss ich eingeben, wenn ich die "816" ausgegeben haben möchte?

LG bumbum
Member: Biber
Biber Sep 22, 2009 at 18:26:13 (UTC)
Goto Top
Moin bumbum,

ich wollte eigentlich erst mit einem freundlichen RTFM antworten, aber die Split()/Join-Funktionen sind zumindest im Access 2000/2003 shice dokumentiert.

Also deshalb erst die lange Ausführung der Antwort:

Lies dir diesen Testschnipsel kurz durch, kopier ihn in den VBA-Editor und steppe ihn dann mit F8 durch.

Sub splitAndJoinTest()
Dim aStrWithoutDimension() As String
Dim teststr As String
Dim i As Integer
teststr = "65123-816-1711-0911"  
aStrWithoutDimension = Split(Expression:=teststr, delimiter:="-")  

Debug.Print "zu zerlegender String 1 " & teststr  
For i = 0 To UBound(aStrWithoutDimension)
   Debug.Print "aStrWithoutDimension(" & i & ") = " & aStrWithoutDimension(i)  
Next

aStrWithoutDimension = Split(teststr, "-")  

Debug.Print "zu zerlegender String 2 " & teststr  
For i = 0 To UBound(aStrWithoutDimension)
   Debug.Print "aStrWithoutDimension(" & i & ") = " & aStrWithoutDimension(i)  
Next

Debug.Print "Wieder gejoint mit - : " & Join(aStrWithoutDimension, "-")  
Debug.Print "Wieder gejoint mit #  :" & Join(SourceArray:=aStrWithoutDimension, delimiter:="#")  

End Sub

Nach dem Ausführen,/ Durchsteppen sollte in Deinem Direktfenster folgende Ausgabe zu sehen sein:
zu zerlegender String 1 65123-816-1711-0911
aStrWithoutDimension(0) = 65123
aStrWithoutDimension(1) = 816
aStrWithoutDimension(2) = 1711
aStrWithoutDimension(3) = 0911
zu zerlegender String 2 65123-816-1711-0911
aStrWithoutDimension(0) = 65123
aStrWithoutDimension(1) = 816
aStrWithoutDimension(2) = 1711
aStrWithoutDimension(3) = 0911
Wieder gejoint mit - : 65123-816-1711-0911
Wieder gejoint mit # : 65123#816#1711#0911

Dreimal durchlesen, dann hast Du alles verstanden.

Kurzfassung mit dem Nötigsten:
  • ZielArray := Join("ein-Text-mit-Trennzeichen","-") legt an/befüllt ein eindimensionales Array mit "Komponenten" des gesamten Strings. Wo getrennt wird sagen die Trennzeichen/Delimiter
  • "eindimensionale Arrays" werden von Nicht-Profi-Programmierern (z.b. meine Omma) oft auch einfach als "Listen" bezeichnet, Komponenten als "Token" oder "Elemente"
  • Wichtig ist: das ZielArray darf/sollte keine vorgegebene Länge haben. Meine Omma würde sagen: "Du musst die Liste definieren, darfst aber nicht vorher sagen, wie lang die wird." Das macht nämlich die Join()-Funktion.
  • Gegenstück zur Split()-Funktion ist die Join()-Funktion. "Join()" ist neudeutsch für "Zusammenbrat()".
  • Das Ergebnis von Split("65123-816","-") wären also im ZielArray die Elemente ZielArray(0) und ZielArray(1).
  • und in Zielarray(0) steht "65123", in Zielarray(1) steht "816".

Hoffe, es beantwortet Deine Frage.... im Erklären bin ich nicht so gut.

Grüße
Biber
Member: bumbum
bumbum Sep 23, 2009 at 05:23:31 (UTC)
Goto Top
Vielen dank Biber,
das ist doch gut erklär, zumindest denke ich das ich das verstanden habe. face-smile

LG bumbum