Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Micharius am September 27, 2018, 13:42:35

Titel: Aus String einzelne Begriffe ziehen
Beitrag von: Micharius am September 27, 2018, 13:42:35
Hallo zusammen
Ich kriege in einer Tabelle Firmennamen angeliefert, zum Beispiel "Max Muster AG" oder "Heinrich Hörst GmbH".
Was müsste ich in eine Funktion schreiben, dass ich als String nur a) die ersten beiden Wörter und b) nur das erste Wort zurück erhalte?
Ihr habt natürlich recht: Nachlesen und Ausprobieren wäre hier der vermutlich schlauste Ansatz, aber ich seh's wirklich nicht grad so  ::)
Beste Grüsse
Micharius
Titel: Re: Aus String einzelne Begriffe ziehen
Beitrag von: Beaker s.a. am September 27, 2018, 14:19:00
Hallo Micharius,
Schau dir in der OH die Methode "Split" an.
gruss ekkehard
Titel: Re: Aus String einzelne Begriffe ziehen
Beitrag von: Micharius am September 28, 2018, 08:24:45
@Beaker: Wink mit dem Zaunpfahl verstanden  8)

Mit diesem Code kann ich einen Firmennamen à la "Max Muster AG" auswerten, und erhalte je nach Wunsch das erste oder zweite Worte retour:

Function FirmenNamenSplitten(strFirmennamen As String, bolAnzahlWoerter As Boolean) As String

Dim strArray() As String

strArray = split(strFirmennamen, " ")

Select Case bolAnzahlWoerter

    Case 0
    FirmenNamenSplitten = strArray(0)

    Case 1
    FirmenNamenSplitten = strArray(0) & " " & strArray(1)

End Select

End Function


Vermutlich codetechnisches Gebastel, über Optimimierungsvorschläge würde ich mich natürlich freuen...

Grüsse

Micharius
Titel: Re: Aus String einzelne Begriffe ziehen
Beitrag von: Lachtaube am September 28, 2018, 11:15:32
Split, Filter und Join sind rechenintensive Anweisungen. Wenn sich die Datenmenge in Grenzen hält, kannst Du soetwas mit in einer Abfrage gefilterten Daten veranstalten.

Aus dem VBA-Direktfenster:?Join(VBA.Filter(Split("Max Muster AG", " "), "AG", False))
Max Muster
Titel: Re: Aus String einzelne Begriffe ziehen
Beitrag von: Milvus am Oktober 23, 2018, 20:57:44
Ich geb da gern noch mal was zu.
Probier mal das:

dim o as object, i as long

for each o in split(...)
     debug.print o
     i=i+1
     select case i
          case 1,2,3
               ....
          case else
              exit for
     end select
next o