Avatar billede ravnkilde Nybegynder
19. oktober 2007 - 11:27 Der er 17 kommentarer og
1 løsning

Format / Første bogstav med stort, resten med småt

Jeg har flg. kode:
act.WriteLine("<td align=""left"">"& (objRs("Country") & "</td>")

Jeg vil gerne have data i feltet Country skrevet med stort begyndelsesbogstav og resten med små bogstaver, eks. indtastet DANMARK bliver til Danmark.

Jeg har forsøgt lidt ala StrConv([fieldname],3) uden held. Nogen, der kan hjælpe? PFT.
Avatar billede ravnkilde Nybegynder
19. oktober 2007 - 11:28 #1
hov, rigtig kode er:

act.WriteLine("<td align=""left"">"& objRs("Country") & "</td>")
Avatar billede fennec Nybegynder
19. oktober 2007 - 11:28 #2
UCase(left(objRs("Country"),1)) & lCase(mid(objRs("Country"),2))
Avatar billede ravnkilde Nybegynder
19. oktober 2007 - 11:39 #3
Smukt, fennec! Men hvis nu der står "UNITED STATES", så bliver det til United states. Kan man tage forbehold for det også?
Avatar billede nielle Nybegynder
19. oktober 2007 - 11:59 #4
Sådan?

country = objRs("Country")
countryArr = Split(" ", country)

country = ""
For idx = LBound(countryArr) To UBound(countryArr)
    If country <> "" Then country = country & " "
    country = country & UCase(Left(countryArr(idx)), 1)) & LCase(Mid(countryArr(idx), 2))
Next
Avatar billede nielle Nybegynder
19. oktober 2007 - 12:03 #5
countryArr = Split(country, " ")

eller blot:

countryArr = Split(country)
Avatar billede fennec Nybegynder
19. oktober 2007 - 12:06 #6
Jeps. Præsis som nielle har lavet det :o)

Evt som en funktion så den er til at kalde:

function WriteCountry(fCountry)
dim fArr, fRetur, ff
  fArr = Split(fCountry, " ")
  fRetur = ""
  For ff = LBound(fArr) To UBound(fArr)
    If fRetur<> "" Then fRetur= fRetur& " "
    fRetur= fRetur& UCase(Left(fArr(ff)), 1)) & LCase(Mid(fArr(ff), 2))
  Next
  WriteCountry = fRetur
end function
Avatar billede nielle Nybegynder
19. oktober 2007 - 12:12 #7
Man kunne også vinde en smule effektivitet ved kun at kalde LCase en gang:

function WriteCountry(fCountry)
dim fArr, fRetur, ff
  fArr = Split(LCase(fCountry), " ")
  fRetur = ""
  For ff = LBound(fArr) To UBound(fArr)
    If fRetur<> "" Then fRetur = fRetur & " "
    fRetur = fRetur & UCase(Left(fArr(ff)), 1)) & Mid(fArr(ff), 2)
  Next
  WriteCountry = fRetur
end function

Jeg ved dog ikke om det liiiige er noget som virkeligt kan måles ;^)
Avatar billede ravnkilde Nybegynder
19. oktober 2007 - 12:15 #8
Herligt, men fennec's kode giver fejlen:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
create_xls_B.asp, line 11, column 40
fRetur= fRetur& UCase(Left(fArr(ff)), 1)) & LCase(Mid(fArr(ff), 2))

Jeg kan godt placere den kode før min SQL, ikke? Hvordan får jeg værdien indsat i stedet for objRs("Country")?
Avatar billede fennec Nybegynder
19. oktober 2007 - 12:16 #9
Funktionen burde virke som den er, og kan placeres hvor som helst. Den bruges så sådan her:

act.WriteLine("<td align=""left"">"& WriteCountry(objRs("Country")) & "</td>")
Avatar billede nielle Nybegynder
19. oktober 2007 - 12:18 #10
Der var en lille parentes for meget ved UCase-kaldet. Sådan:

Function WriteCountry(fCountry)
    dim fArr, fRetur, ff
    fArr = Split(LCase(fCountry), " ")
    fRetur = ""
    For ff = LBound(fArr) To UBound(fArr)
        If fRetur<> "" Then fRetur = fRetur & " "
        fRetur = fRetur & UCase(Left(fArr(ff)), 1) & Mid(fArr(ff), 2)
    Next
    WriteCountry = fRetur
End Function

Ja, funktionen kan godt placeres i toppen af din side hvis du ønsker det.
Avatar billede nielle Nybegynder
19. oktober 2007 - 12:20 #11
Sådan!

fRetur = fRetur & UCase(Left(fArr(ff), 1)) & Mid(fArr(ff), 2)
Avatar billede fennec Nybegynder
19. oktober 2007 - 12:23 #12
Ahh der er kommet et ) for meget:
fRetur= fRetur& UCase(Left(fArr(ff)), 1)) & LCase(Mid(fArr(ff), 2))

Skal være:
fRetur= fRetur& UCase(Left(fArr(ff), 1)) & LCase(Mid(fArr(ff), 2))
Avatar billede fennec Nybegynder
19. oktober 2007 - 12:23 #13
Så nielle også :o)
Avatar billede ravnkilde Nybegynder
19. oktober 2007 - 13:13 #14
Det er kunst! Det virker efter hensigten. Ret beset burde jeg vel lave dette allerede når data skrives ned i databasen, ikke? Således at data kommer rigtigt ned i første hug.

Vil jeg kunne bruge jeres kode i min INSERT-kode (kun en del vist her), der også har en replace med?:
Replace(Request.Form("Country"),"'","''")

PS: Smid et svar i to eksperter!
Avatar billede nielle Nybegynder
19. oktober 2007 - 13:16 #15
Ja, det kan du sagtens:

Replace(WriteCountry(Request.Form("Country")), "'", "''")

Det ville endda hjælpe på performance at gøre det den vej rundt - for så skal det kun gøres een gang i alt i stedet for hver gang ved udtræk.
Avatar billede nielle Nybegynder
19. oktober 2007 - 13:17 #16
Springer over på denne her. Tog jo sådan set bare fennec's oprindelige kode og begyndte at lege lidt med den. Men ellers tak for tilbuddet. :^)
Avatar billede fennec Nybegynder
19. oktober 2007 - 13:23 #17
.o) <-- One Eyed Jack
Avatar billede ravnkilde Nybegynder
19. oktober 2007 - 13:29 #18
nielle: du har så noget til gode ;-) God weekend til jer begge. Jeg tror jeg bruger jeres kode allerede i starten.
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
Kurser inden for grundlæggende programmering

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