11. januar 2006 - 09:25Der er
2 kommentarer og 3 løsninger
opdel fornavn og efternavn i streng
jeg havde oprettet en spørgsmål http://www.eksperten.dk/spm/644687 men fik aldrig det rigtige svar. jeg skal have opdelt navn i en streng til at indeholde 2 strenge med fornavn og efternavn. eks.
navn ="Hans peter sørensen" fornavn = "Hans peter" Efternavn="Sørensen"
Det skal lige siges at jeg bruger access 97, så der er en begrænsning på hvilke funktioner jeg kan bruge.
Jeg bruger selv funktionen InStrReverse til denne opgave:
'---------------------------------------------------------------------------------------------------- 'InStrReverse finder den sidste position af et tegn - i modsætning til Instr, der finder den første. 'Syntaksen er næsten identisk med InStr: ' ' InStrReverse(string1, string2[, compare]) ' ' string1 Obligatorisk. Strengudtryk, der søges i. ' string2 Obligatorisk. Strengudtryk, der søges efter. ' compare Valgfrit. Angiver typen af strengsammenligning. Argumentet compare kan udelades, eller ' det kan indeholde 0, 1 eller 2. Angiv 0 (standard) for at udføre en binær sammenligning. ' Angiv 1 for at udføre en tekstsammenligning, der ikke skelner mellem små og store bog- ' staver. Kun i forbindelse med Microsoft Access skal du angive 2 for at udføre en sammen- ' ligning, der er baseret på oplysninger indeholdt i databasen. Hvis compare indeholder en ' nulværdi, opstår der en fejl. Hvis compare udelades, bestemmes sammenligningstypen af ' indstillingen Option Compare. '---------------------------------------------------------------------------------------------------- Function InStrReverse(ByVal sTarget As String, ByVal sFind As String, ByVal iCompare As Long) As Long Dim P As Long, LastP As Long, Start As Long
P = InStr(1, sTarget, sFind, iCompare) Do While P LastP = P P = InStr(LastP + 1, sTarget, sFind, iCompare) Loop InStrReverse = LastP
Dim MaxUd, FMax, K, i, intSpace As Integer Dim strnavn As String DoCmd.OpenForm "form1" Me.Requery MaxUd = DMax("[Tæller]", "Tabel1") For K = 1 To MaxUd strnavn = LTrim$(Me.[Navn]) FMax = Len(strnavn) For i = 1 To FMax + 1 If Mid$(strnavn, i, 1) = " " Then Exit For intSpace = i Next i Me.[Fornavn] = LTrim$(Mid$(strnavn, 1, intSpace)) Me.[Efternavn] = LTrim$(Mid$(strnavn, intSpace + 2, FMax)) DoCmd.GoToRecord acForm, "form1", acNext, 1 Next K DoCmd.GoToRecord acForm, "form1", acPrevious, 1
Hvor Wolfgang Amadæus Mozart Hannibal Olsen opdeles med Wolfgang til fornavn.
Eller denne:
Dim Str, Str2, Pos As String Str = Me.Navn Pos = InStr(1, StrReverse(Str), " ", vbTextCompare) If Pos = 0 Then Me.Navn = Str Else Str2 = Right(Str, Pos - 1) MsgBox Str2 & ", " & StrReverse(Mid(StrReverse(Str), Pos)) End If
som bliver til:
Olsen, Wolfgang Amadæus Mozart Hannibal i een tekststreng.
Nu skulle der vist være lidt at arbejde med.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.