Avatar billede celal Nybegynder
01. september 2005 - 12:27 Der er 8 kommentarer og
1 løsning

Opdeling af fornavn og efternavn i streng

Hvordan opdeler jeg en streng med både fornavn og efternavn så det deles op i fornavn og efternavn for sig.

eks:

navn = "Hans Myrre Hansen"
fornavn = "Hans"
Efternavn ="Myrre Hansen"
Avatar billede monmike Nybegynder
01. september 2005 - 15:22 #1
Jeg fandt der her ved at søge på split.

Tager højde for forskellige strenglængder og bruger "/" som adskillelse:
Dim varStreng, varResult1, varResult2 As String
varStreng = "255/45555"
varResult1 = Left$(varStreng, InStr(varStreng, "/") - 1)
varResult2 = Mid$(varStreng, InStr(varStreng, "/") + 1)
MsgBox varResult1
MsgBox varResult2

Du kan så ændre den til:
Dim navn, fornavn, efternavn As String
navn = "Hans Myrre Hansen"
fornavn = Left$(navn, InStr(navn, " ") - 1)
efternavn = Mid$(navn, InStr(navn, " ") + 1)

Ved ikke om du skal ændre mid$ til noget andet for at sikre at den tager evt mellemnavn og efternavn rigtig med, men det er da noget at lege med.
Avatar billede monmike Nybegynder
01. september 2005 - 15:23 #2
Hvis du kan bruge det, så er det super. Jeg kan ikke hjælpe mere eller mindre i dag, da jeg lukker ned nu.
Avatar billede mugs Novice
01. september 2005 - 19:01 #3
Jeg bruger denne i en fortløbende formular:

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
Avatar billede terry Ekspert
01. september 2005 - 19:27 #4
If you are sure that the name always has a space and the first space is always used to split first and last names then you can use

FirstName =  Left(navn, InStr(1, Navn, " "))
LastName = (Navn, Len(Navn) - InStr(1, Navn, " "))
Avatar billede claesdamlund Nybegynder
02. september 2005 - 17:54 #5
Instr() finder kun første forekomst af søgestrengen, og skiller dermed forkert - prøv følgende:

Fornavn = Left(Navn, InstrRev(Navn, " ") - 1)
Efternavn = Mid(Navn, InstrRev(Navn, " ") + 1)

Hvis det er i en forespørgsel, skal kommaerne skiftes ud med semikolon.
Avatar billede terry Ekspert
02. september 2005 - 19:22 #6
claesdamlund>Have I misunderstood something? Arent we only looking for the first " "?

navn = "Hans Myrre Hansen"
fornavn = "Hans"
Efternavn ="Myrre Hansen"
Avatar billede claesdamlund Nybegynder
02. september 2005 - 19:42 #7
Sorry - you are right, Terry. My excuse is that the normal way to split names (in Denmark anyway) is firstname and middlename together, and lastname by itself.

Anyway, my suggestion can be used with the InStr function instead of the InStr function:

Fornavn = Left(Navn, InStr(Navn, " ") - 1)
Efternavn = Mid(Navn, InStr(Navn, " ") + 1)

(your suggestion takes the space into the firstname)
Avatar billede terry Ekspert
02. september 2005 - 19:50 #8
No need for apologies claesdamlund, I would also have expected it to be your way, but gave an answer to the question asked.

Have a good (sunny) weekend.

mvh
Terry
Avatar billede celal Nybegynder
09. januar 2006 - 13:35 #9
claesdamlund har faktisk ret. Navnene forekommer således:
navn = "Hans Myrre Hansen"
fornavn = "Hans Myrre"
Efternavn ="Hansen"

Men detter her fungere ikke:
Fornavn = Left(Navn, InstrRev(Navn, " ") - 1)
Efternavn = Mid(Navn, InstrRev(Navn, " ") + 1)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester