PDA

Vollständige Version anzeigen : String vor dem zweiten Leerzeichen vergleichen


Mitschy71
29.09.2005, 15:04
Hallo Access-Profis,

ich habe eine Tabelle mit 59000 Datensätzen. In der Spalte die ich für den Vergleich benötige ist z.B.

Adresse

Vorname Nachname Straße
Vorname Nachname <<< ohne Straße
Max Muster Musterweg 27
Max Muster

jetzt möchte ich das er mir nur den Spalteninhalt bis nach dem Nachnamen vergleicht und ich den dann gruppiere und er mir die Anzahl ausgibt.
Also im Fall von Max Muster wäre dann die Anzahl 2.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.

Vielen Dank für Euere Hilfe

Gruß Michael

Lord Hirni
29.09.2005, 16:00
Hallo,
evtl. hilft das weiter
Gruß
DAN



Dim Dummy_Fertig as Boolean
Dim Dummy_Textfeld
Dim Dummy_VorNachname as String
Dim x, y as String


Fertig = False
a = 0
b = 0

Dummy_Textfeld = DEIN_FELD



REPEAT UNTIL Dummy_Fertig = True

x = LEFT (Dummy_Textfeld,a)
y = Lese Rechts (x, 1)

IF y = „“ Then b=b+1
End IF

IF y = 2
then Fertig = True
dann Dummy_VorNachname = Links(a)
End If


a=a+1

LOOP

uwek
29.09.2005, 16:31
Hallo,

Was passiert bei einen Doppelnamen?

Function CountSeparatedWords(ByVal str, separator As String) As Integer
Dim WC As Integer, Pos As Integer
If varType(str) <> 8 Or Len(str) = 0 Then
CountSeparatedWords = 0
Exit Function
End If
WC = 1
Pos = InStr(str, separator)
Do While Pos > 0
WC = WC + 1
Pos = InStr(Pos + 1, str, separator)
Loop
CountSeparatedWords = WC
End Function

Function GetSeparatedWord(ByVal str, separator As String, Indx As Integer)
Dim WC As Integer, count As Integer
Dim SPos As Integer, EPos As Integer

WC = CountSeparatedWords(str, separator)
If Indx < 1 Or Indx > WC Then
GetSeparatedWord = Null
Exit Function
End If
count = 1
SPos = 1
For count = 2 To Indx
SPos = InStr(SPos, str, separator) + 1
Next count
EPos = InStr(SPos, str, separator) - 1
If EPos < 0 Then EPos = Len(str)
GetSeparatedWord = Trim(Mid(str, SPos, EPos - SPos + 1))
End Function

Mit der Funktion CountSeparatedWords() kannst du alle Wörter zählen die durch den entsprechenden Seperator getrennt sind.

Mit der Funktion GetSeparatedWord() die wiederum CountSeparatedWords() aufruft, kannst du entsprechende Wörter anzeigen.

Mitschy71
04.10.2005, 07:05
Hallo Ihr,

vielen Dank das war der Weg zur Lösung!!!

kama
04.10.2005, 07:32
Also
Left("Vorname Nachname Straße",Instrrev("Vorname Nachname Straße"," ")-1)
führt zu diesem ergebnis
Vorname Nachname