Avatar billede fkj Juniormester
20. september 2006 - 15:49 Der er 10 kommentarer

Stort begyndelsesbogstav i hvert ord i et felt

Jeg mener at dette har været diskuteret fleregange men jeg prøver alligevel.

Hvordan ændres 1. bogstav automatisk i hvert ord i et felt til Stort bogstav i en eksisterende tabel.
Dette også selv om nogle felter er tomme.

Jeg har prøvet med i en formular:

Dim Streng As String, a As String, længde As Integer, længde1 As Integer, b
Do Until Me.NewRecord = True
længde = Len(BETEGNELSE)
længde1 = længde - 1
b = Right(BETEGNELSE, længde1)
Me.BETEGNELSE = b
[BETEGNELSE].Value = "'" & StrConv([BETEGNELSE].Value, vbProperCase)
DoCmd.GoToRecord acForm, "form1", acNext, 1
Loop

men den giver en fejlmelding

Håber på hjælp fra jer eksperter.
Avatar billede webcreator Nybegynder
20. september 2006 - 16:04 #1
Prøv at spørge i VB kategorien hvis du ikke får svar her.
Avatar billede mugs Novice
20. september 2006 - 16:19 #2
"Tæller" er et numerisk felt i din tabel. felt1 er det felt i formularen der skal have stort bergyndelsesbogstav. form1 er navnet på din formular.

Dim MaxUd, K
Dim a As String
MaxUd = DMax("[Tæller]", "Tabel1")
For K = 1 To MaxUd
[felt1].Value = StrConv([felt1].Value, vbProperCase)
DoCmd.GoToRecord acForm, "Form1", acNext, 1
Next KDim MaxUd, K
Dim a As String
MaxUd = DMax("[Tæller]", "Tabel1")
For K = 1 To MaxUd
[felt1].Value = StrConv([felt1].Value, vbProperCase)
DoCmd.GoToRecord acForm, "Form1", acNext, 1
Next K
Avatar billede kjulius Novice
20. september 2006 - 21:38 #3
Måske har jeg misforstået din kode, men ville det ikke være nemmere simpelthen at ændre data i den underliggende tabel, som din form trækker på:

currentdb.Execute "UPDATE tabel1 SET BETEGNELSE = UCase(Left(BETEGNELSE, 1)) + Right(BETEGNELSE, Len(BETEGNELSE)-1) WHERE Len(BETEGNELSE) > 0"

Følg det op med en requery for at få opdateret din form:

me.requery
Avatar billede mugs Novice
20. september 2006 - 21:44 #4
Nu er der flere måder at gøre tingene på, hvad der er bedst skal jeg ikke gøre mig klog på. Men for at følge op på min kode, kan denne kode altid sikre stort begyndelsesbogstav i felt1:

Private Sub felt1_AfterUpdate()
[felt1].Value = StrConv([felt1].Value, vbProperCase)
End Sub
Avatar billede kjulius Novice
20. september 2006 - 21:52 #5
Det er der næsten altid, det har du ret i :-)

Jeg syntes bare det var meget kode for så lidt, men måske er der mere i det end som så, det skal jeg heller ikke gøre mig klog på, jeg ville bare tilbyde et alternativ. :-)

For øvrigt, så ser det for mig ud som om du har "fordoblet" din kode fra 16:19:10, hvilket selvfølgelig gør den endnu mere "opsvulmet" end den behøvede at være. ;-)
Avatar billede mugs Novice
20. september 2006 - 21:58 #6
kjulius > Du da ret i "fordoblingen":

Private Sub Kommandoknap8_Click()
Dim MaxUd, K
Dim a As String
MaxUd = DMax("[Tæller]", "Tabel1")
For K = 1 To MaxUd
[felt1].Value = StrConv([felt1].Value, vbProperCase)
DoCmd.GoToRecord acForm, "Form1", acNext, 1
Next K
End Sub
Avatar billede kjulius Novice
20. september 2006 - 22:10 #7
Også min kode kan naturligvis køres med StrConv funktionen i stedet for UCase:

currentdb.Execute "UPDATE tabel1 SET BETEGNELSE = StrConv(BETEGNELSE, 3) WHERE Len(BETEGNELSE) > 0"

Hvis betegnelse kun indeholder ét ord, skulle der ikke være nogen forskel, men indeholder feltet flere ord, som alle skal begynde med et stort bogstav, vil det være bedre at bruge StrConv.
Avatar billede mugs Novice
20. september 2006 - 22:16 #8
kjulius > KISS, fkj prøv kjulius kode.
Avatar billede kjulius Novice
20. september 2006 - 23:30 #9
???

Er det det her, du antyder? http://en.wikipedia.org/wiki/KISS_Principle
Avatar billede mugs Novice
21. september 2006 - 05:46 #10
kjulius > Lige nøjagtig. hvorfor skrive 9 linier, hvis man kan nøjes med 2 :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