Avatar billede fuldstop Nybegynder
28. oktober 2001 - 19:05 Der er 7 kommentarer og
2 løsninger

Store og små startbogstaver

Hvorfor kan nedenstående kode ikke kende forskel på store og små startbogstaver.
Meningen er at tilmeldingsnavnet skal checkes om det er taget af en anden bruger.
Står der f.eks følgende i Access databasen:
1. Fuldstop
2. fuldstop
3. jack
4. Jack

Og brugeren ønsker at tilmelde sig ved navnet Fuldstop, så siger den godt nok at navnet er ibrug, men skrives fuldstop, siger det at navnet er ledigt, hvordan kan dette undgåes

<% Dim navn
navn = Request.Form(\"T1\")
navn = Replace(navn, \"\'\", \"\'\'\")

Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"menu.mdb\")
Conn.Open DSN
strSQL = \"Select * From login Where username =\'\" & navn & \"\'\"
Set rs = Conn.Execute(strSQL)
If rs.eof OR rs(\"username\")=Request.Form(\"T1\") OR rs(\"username\")=navn Then
Response.Write \"Brugernavn er i brug.\"
Else Response.Write \"Brugernavn er ledigt.\"
End If
%>

Hved ikke om sprgm. er let eller svært, sætter gerne pointene op.
Avatar billede nute Nybegynder
28. oktober 2001 - 19:09 #1
prøv:

strSQL = \"Select * From login Where UPPER(username) LIKE \'\" & UCase(navn) & \"\'\"

Dette skal sette hele kolonnen \'username\' i uppercase ved søk i tabellen.

/nute
Avatar billede fuldstop Nybegynder
28. oktober 2001 - 19:19 #2
Kan ikke rigtigt få det til at virke den skriver følgende fejl:
Der er en ikke defineret funktion \"UPPER\" i udtrykket.
Avatar billede nute Nybegynder
28. oktober 2001 - 19:25 #3
hmmm....nok engang følger ikke MS standarder...:-(

prøv å bytt ut UPPER med UCase...
Avatar billede fuldstop Nybegynder
28. oktober 2001 - 19:34 #4
Virker desværre ikke, den kan stadig ikke kende forskel på fuldstop og Fuldstop.

Skrives følgende:
1. <%Response.Write rs(\"username\")%>
2. <%=Request.Form (\"T1\")%>
3. <%=navn%>

1. Fuldstop
2. fuldstop
3. fuldstop

Er det evt. noget i databasen som skal ændres??
Avatar billede eagleeye Praktikant
29. oktober 2001 - 00:07 #5
hvis du som nute skriver, skriver:

strSQL = \"Select * From login Where Ucase(username) LIKE \'\" & UCase(navn) & \"\'\"

så koverter Acces teksten til store bogstaver før den sammenligner, men det skulle ikke være nødvendig med acces, jeg mener ikke den er case senseativ. Måske man kan ændre det.

Hvis du laver din SQL så den vælger rækker hvor username=navn og ændre din IF sætning, for der er i pricippet ingen grund til at test for om rs(\"username\") er = \"Fuldstop\".

sql = \"SELECT * FROM login WHERE username =\'\" & navn & \"\';\"
set rs = Conn.Execute(sql)
if (rs.BOF AND rs.EOF) then
  Response.Write \"Bruger navnet er optaget!\"
else
  Response.Write \"Bruger navnet er ledig vil du havde det til denne site?\"
end if


Men du kan ikke hvade fuldstop og Fuldstop som to forkellige login navne, access vil betragte dem som ens.
Avatar billede eagleeye Praktikant
29. oktober 2001 - 00:24 #6
Når du henter fra databasen får du et recordsæt som ser sådan ud:
ID  username
1.  Fuldstop
2.  fuldstop

her er din if
If rs.eof OR rs(\"username\")=Request.Form(\"T1\") OR rs(\"username\")=navn Then
rs.eof = flase da der er 2 i dit record sæt. så har vi:

If rs(\"username\")=Request.Form(\"T1\") OR rs(\"username\")=navn Then

rs(\"username\") er ved første record \"Fuldstop\"

Så når du skriver \"Fuldstop\" i Form(\"T1\") fanger din IF den den \"Fuldstop\" = \"Fuldstop\"
skriver du \"fuldstop\" i Form(\"T1\") så fanger din IF den ikke \"Fuldstop\" = \"fuldstop\"  her er asp så case senseativ og vil ikke sige de to ikke er ens.
Derfor skal du som jeg skrev før ikke tjekke på rs(\"username\") i din IF men udelukne tjekke om dit recordsæt er tomt.
Avatar billede eagleeye Praktikant
29. oktober 2001 - 00:30 #7
hmm jeg har puttet rundt på optaget ikke optager:

sql = \"SELECT * FROM login WHERE username =\'\" & navn & \"\';\"
set rs = Conn.Execute(sql)
if (rs.BOF AND rs.EOF) then
  Response.Write \"Bruger navnet er ledig vil du havde det til denne site?\"
else
  Response.Write \"Bruger navnet er optaget!\"
end if
Avatar billede eagleeye Praktikant
29. oktober 2001 - 00:31 #8
puttet = byttet... jeg går sku i seng nu :)
Avatar billede fuldstop Nybegynder
29. oktober 2001 - 19:03 #9
Ok, troede man kunne bruge to forskellige login navne, som f.eks Fuldstop el. fuldstop, men jeg kan godt se at access ikke kan kende forskel på de to brugernavne.
Så her er 15 pt. hver for interessen og svarene.
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