Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: stieler am Februar 13, 2017, 19:23:24

Titel: Mit InStr zwei Informationen einholen VBA
Beitrag von: stieler am Februar 13, 2017, 19:23:24
Hallo Zusammen,

ich bin neu hier, Anfänger und mehr als ratlos...

Folgendes Problem:
In einer Tabelle lese ich ein Feld aus was folgende Daten enthalten kann

1. 1234a 12345
2. 1234 12345
3. 12345
oder
4. keine Daten (Feld ist leer).


die Zahlen sind nur ein Beispiel, kann also auch 23456 34567 sein, fakt ist, dass immer wenn zwei Werte vorhanden sind, sie durch ein Blank getrennt sind.
mit dem Code hier versuche ich zu "erahnen" was ich gefunden habe

Mit den Code hier
'Prüfen ob brauchbare Daten vorhanden sind
intLeerPos = InStr(rs1![Daten_1], " ")
str1 = Left(rs1![Daten1], intLeerPos)
str2 = Right(rs1![Daten1], intLeerPos)

funktioniert es nur ab und zu. Mal vergist str1 mit das 2 von Beispiel 1 zu liefern, oder manchmal bekomme ich gar keine Infos, obwohl Beispiel 3 einen Wert hat.

Kann mir bitte jemand helfen und sagen wo ich den Fehler habe.

DANKE!

Titel: Re: Mit InStr zwei Informationen einholen VBA
Beitrag von: daolix am Februar 13, 2017, 20:58:41
hallo
versuch mal

Code (ohne Gewähr) [Auswählen]
intLeerPos = InStr(nz(rs1![Daten_1], ""), " ")
if intLeerPos then 'vom typ 1 u. 2
str1 = Left(rs1![Daten1], intLeerPos)
str2 = Right(rs1![Daten1], intLeerPos)
else 'vom type 3 und andere
str1 = nz(rs1![Daten1], "")
end if
Titel: Re: Mit InStr zwei Informationen einholen VBA
Beitrag von: Lachtaube am Februar 13, 2017, 21:20:15
InStr liefert Null als Ergebnis, falls String1 Null ist, 0 falls String2 nicht in String1 gefunden wurde und einen Wert größer Null als Position des ersten Vorkommens von String2 in String1.

Demnach kann man so vorgehen:   Dim data As Variant, pos As Variant

   data = rs1![Daten_1]
   pos = InStr(data, " ")

   Select Case pos
   Case Is > 0
      str1 = Left$(data, pos - 1)
      str2 = Mid$(data, pos + 1)
   Case 0
      str1 = data
   'Case Else
      'Fall 4
   End Select
Titel: Re: Mit InStr zwei Informationen einholen VBA
Beitrag von: stieler am Februar 13, 2017, 21:53:51
DANKE...da wäre ich alleine niemals drauf gekommen!