28. oktober 2001 - 19:05Der 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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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.
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
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.
Synes godt om
Ny brugerNybegynder
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.