Avatar billede OnkelJoakim Novice
23. juli 2002 - 10:31 Der er 11 kommentarer og
1 løsning

Formatere et navn til f-navn, e-navn og sortere efter efternavn?

Hej Eksperter!


Jeg har en tabel med nogle personer. I det ene tabellen skriver jeg en persons fulde navn ind. Dette felt skal jeg have formateret i en rapport til "EFTERNAVN, FORNAVN" og derefter sortere efter efternavnet. Der skal også tages højde for personer med mellemnavn, så formatteringen skriver: "EFTERNAVN, MELLEMNAVN FORNAVN"

Kan det lade sig gøre? Hvordan?

PS: Jeg er IKKE VB'er

\\Hansen
Avatar billede kjeld_klit Nybegynder
23. juli 2002 - 10:54 #1
Hvis du har det fulde navn i en streng kan du med InStr() 0g RTrim() "fange" efternavnet og derefter sætte det ind i en liste med "Efternavn", & "Fornavn(e)"
Avatar billede kjeld_klit Nybegynder
23. juli 2002 - 11:21 #2
Det var vist ikke helt nok!
Her er et lille program der kan gøre det:

Private Sub Command1_Click()
Dim Str, Str2, Pos As String
    Str = RTrim(InputBox("Skriv et navn"))  'Fjerner evt. h-stillede mellemrum
    Pos = InStr(1, StrReverse(Str), " ", vbTextCompare)  'Finder 1. mellemrum
    If Pos = 0 Then                        'Hvis der nu kun er ét eller ingen ord i strengen
        Me.Caption = Str
    Else
        Str2 = Right(Str, Pos - 1)      'Skriver det 1. ord i strengen
        Me.Caption = Str2 & ", " & StrReverse(Mid(StrReverse(Str), Pos))
    End If
End Sub
Avatar billede OnkelJoakim Novice
23. juli 2002 - 11:40 #3
kigger lige på det.. Vender tilbage i løbet af et par timer.

\\Hansen
Avatar billede OnkelJoakim Novice
23. juli 2002 - 14:06 #4
Hejsa igen Kjeld!

Jeg har kigget lidt på det men mangler dog stadig at få det sorteret i alfabetisk orden efter efternavnet.

Jeg vil gerne give dig de 30 p for den halve løsning!

\\Hansen
Avatar billede kjeld_klit Nybegynder
23. juli 2002 - 14:10 #5
Skal resultatet vises i en ListBox eller hurn?
Avatar billede OnkelJoakim Novice
23. juli 2002 - 14:39 #6
Resultatet skal vises i en rapport

\\Hansen
Avatar billede kjeld_klit Nybegynder
23. juli 2002 - 15:07 #7
Det var bare fordi du kan få den nye datastring "Efternavn, Fornavne" sorteret automatisk i en ListBox. Altså ikke "bare" sorteret efter efternavn men sorteret efter hele navnet med "Efternavn, " først og resten af navnet også - helt gratis(læs automatisk). Listnavn.Sorted = True

Ellers skal du kode en rutine der sorterer data først. Desværre må jeg løbe får ikke tid til det med rapporten. Alternativt kan du bruge ListBox som grundlag for rapporten.
Avatar billede OnkelJoakim Novice
23. juli 2002 - 15:31 #8
ok... Jeg vil sikkert lave det som en listeboks, hvis det er lettere. Bare det ikke vises som en listeboks ved udskrift. Jeg kigger på det om et par timer. Jeg er lige optaget af noget andet. Ellers tak for hjælpen indtil videre.

PS. Du får pointene når det virker. Skulle være i løbet af aftenen!


\\Hansen
Avatar billede OnkelJoakim Novice
24. juli 2002 - 18:15 #9
Hej kjeld!

Jeg har desværre ikke fået rapporten til at sortere alfabetisk!

Jeg har lagt min db på: http://www.abc72.dk/temp/db5.zip
Under rapport-->Snitskema til SJBU, skal navnene være i alfabetisk orden. Kan man gøre det?

\\Hansen
Avatar billede kjeld_klit Nybegynder
24. juli 2002 - 20:22 #10
Jeg kan ikke lige se det sådan lige på en studs;-\ Kort fortalt skal data sorteres inden de sendes til rapporten. Du har et felt "Navn" som rapporten sorteres efter (det bli'r den også) men når der så efterfølgende bliver byttet på for- og efternavn passer det jo ikke længere. Du kan ikke lave den manipulering når rapporten bliver genereret da det er de manipulerede data du vil sorterer efter. En meget simpel løsning kunne være at oprette et ekstra felt af det sammensatte navn "Efternavn, Fornavne" som automatisk blev dannet hver gang du opretter et nyt navn og så bare bruger dette "snydefelt" når data skal sorteres efter dette princip.
Avatar billede kjeld_klit Nybegynder
24. juli 2002 - 21:38 #11
Var lige ude at køre! - Her er et forslag: Det er simpelt, men det virker!

Tabel.Stamdata: Tilføj et felt der hedder 'Navn2'
FormularQuery (Må ikke slettes): Hiv 'Navn2' ned ved siden af 'Navn'
frmStamdata: Indsæt et textfelt med 'Navn2' (fjern etiket, gør den usynlig) og indsætter følgende kode:

Private Sub Fornavn_LostFocus()
Dim Str, Str2, Pos As String
Str = Me.Fornavn  'RTrim(Me.Navn)
Pos = InStr(1, StrReverse(Str), " ", vbTextCompare)
If Pos = 0 Then                        'Hvis der nu kun er ét eller ingen ord i strengen
        Me.Navn2 = Str
    Else
        Str2 = Right(Str, Pos - 1)      'Skriver det 1. ord i strengen
        Me.Navn2 = Str2 & ", " & StrReverse(Mid(StrReverse(Str), Pos))
    End If
End Sub

Rapport Snitskema til SJBU: Fjern al kode. Fjern TestTekst. Gør 'Navn' synlig og flyt det op på plads. Ændrer gruppesorteringen til det nye felt 'Navn2'.

Nu har du det ønskede resultat ved alle nyoprettede navne. Fidusen er også at den sorterer på HELE det sammensatte navn så din gamle liste ser sådan ud:
Andersen, Peter
Andersen, Svend-Erik
Osv
Avatar billede OnkelJoakim Novice
25. juli 2002 - 10:47 #12
Tak for hjælpen :o)
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