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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.