Avatar billede Slettet bruger
06. juni 2000 - 10:58 Der er 11 kommentarer og
1 løsning

Fejl hvis man opretter 2 ens brugere !!!

Denne fejl kommer hvis man forsøger oprettet en bruger med samme navn - den er sat til at 2 e-mails ikke må være ens !!

------

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.

/info/add_user.asp, line 86



------------------
<%
   
    Dim stMode
    stMode = request("mode")

    Dim DirPath, MDBPath, DBPath, connect

    DirPath        =    Request.serverVariables("APPL_PHYSICAL_PATH")
    MDBPath        =    "../database/users.mdb"
    DBPath        =    Dirpath & MDBPath
   
    Set Connect    =    server.createobject("ADODB.connection")
    Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & DBPath

    Dim browser
    browser = request.serverVariables("HTTP_USER_AGENT")
   
    If stMode = "addUser" then
       
        Dim stusername, stpost, stby, stcpr, stemail, stmobiltelefon
       
        stusername = request("userName")
        stemail = request("email")
      stpost = request("post")
      stby = request("by")
      stcpr = request("cpr")
      stemail = request("email")
      stmobiltelefon = request("mobiltelefon")   
           
        Dim validateForm, username, email, by, post, cpr, mobiltelefon, nameCheck, checkNameRs, sqlCheckName
       
        validateForm = "validated"
       
     
      If len(stUserName) < 3 OR len(stUserName) > 20 then
            validateForm = "invalid"
            userName = "error"
        end if

        If len(stby) > 20 then
            validateForm = "invalid"
            by = "error"
        end if
           
        If len(stcpr) > 6 then
            validateForm = "invalid"
            by = "error"
      end if
         
      If len(stpost) > 4 then
            validateForm = "invalid"
            by = "error"
        end if

        If len(stmobiltelefon) > 8 then
            validateForm = "invalid"
            telefon = "error"
        end if
               
        If len(stemail) > 20 then
            validateForm = "invalid"
            email = "error"
        end if
       
        Set checkNameRs = Server.CreateObject("ADODB.Recordset")
   
        sqlCheckName = "SELECT [email] FROM tblUsers WHERE [email] = '" & stemail & "';"
               
        checkNameRs.Open sqlCheckName, Connect
       
       
        If not checkNameRs.eof then
            validateForm = "invalid"
            nameCheck = "error"
        end if
       
       
       
           
        If validateForm = "validated" then
           
            Dim sqlAddUser
           
            sqlAddUser = "INSERT INTO tblUsers ([username], [by], [Post], [Cpr], [mobiltelefon], [email]) VALUES('" & stusername & "', '" & stby & "',  '" & stpost & "',  '" & stcpr & "', '" & stmobiltelefon & "', '" & stemail & "') ;"
           
            connect.execute(sqlAddUser)
               
            validateForm = "validated"
                       
        end if
       
    end if


%>
<HTML>
    <HEAD>
        <TITLE>Bruger oprettelse</TITLE>
        <STYLE>
            body {
            font-family: verdana;
            }
       
        </STYLE>
    </HEAD>
<BODY bgcolor="#000000" link="#808080" vlink="#808080" alink="#808080">

<CENTER>
<DIV CLASS="header"><b><u><font color="#FFFFFF" size="5">Info-mailkartotek</font></u></b></DIV>
<FORM NAME="frmUsers" METHOD="post">
<INPUT TYPE="hidden" NAME="mode" VALUE="addUser">
<TABLE BORDER="0">
    <tr>
        <TD>
            <b><font color="#FFFFFF">Fulde Navn:</font></b></TD>
        <TD <% if username = "error" then response.write "BGCOLOR=""red""" end if %> bgcolor="#808080" >
            <font color="#FFFFFF">
            <INPUT TYPE="text" NAME="username" size="21"></font></TD>
       
    </tr>
    <tr>
        <TD>
            <b><font color="#FFFFFF">Postnummer:</font></b></TD>
        <TD <% if by = "error" then response.write "BGCOLOR=""red""" end if %> bgcolor="#808080" >
            <font color="#FFFFFF">
            <INPUT TYPE="text" NAME="post" size="21"></font></TD>

    </tr>
    <tr>
        <TD>
            <b><font color="#FFFFFF">By:</font></b></TD>
        <TD <% if by = "error" then response.write "BGCOLOR=""red""" end if %> bgcolor="#808080" >
            <font color="#FFFFFF">
            <INPUT TYPE="text" NAME="by" size="21"></font></TD>

    </tr>
    <tr>
        <TD>
            <b><font color="#FFFFFF">Fødsels dato: ddmmaa&nbsp;</font></b></TD>
        <TD <% if by = "error" then response.write "BGCOLOR=""red""" end if %> bgcolor="#808080" >
            <font color="#FFFFFF">
            <INPUT TYPE="text" NAME="cpr" size="21"></font></TD>

    </tr>
    <tr>
        <TD>
            <b><font color="#FFFFFF">Mobiltelefon:</font></b></TD>
        <TD <% if telefon = "error" then response.write "BGCOLOR=""red""" end if %> bgcolor="#808080" >
            <font color="#FFFFFF">
            <INPUT TYPE="text" NAME="mobiltelefon" size="21"></font></TD>

    </tr>
    <tr>
        <TD>
            <b>
            <font color="#FFFFFF">
            E-mail:</font></b></TD>
        <TD <% if email = "error" then response.write "BGCOLOR=""red""" end if %> bgcolor="#808080" >
            <font color="#FFFFFF">
            <INPUT TYPE="text" NAME="email" <% if email <> "error" then response.write "VALUE=""" & stemail & """"%> size="21"></font></TD>

    </tr>
    <TR>
        <TD COLSPAN="2" ALIGN="right">
        <font color="#FFFFFF">
        <INPUT CLASS="botton"  TYPE="reset" VALUE="Slet">    <INPUT CLASS="botton"  TYPE="submit" VALUE="Opret"></font></TD>
    </TR>

       
</TABLE>       
</FORM>
<%
    if validateForm = "invalid" then
        response.write "<FONT COLOR=""red""><B>"
        If userName = "error" then
            response.write "Brugernavnet skal værer mellem 3 og 20 bogstaver. <BR>"
        end if
   
      If by = "error" then
            response.write "By navn må maks være på 20 ciffer. <BR>"
        end if

        If post = "error" then
            response.write "Post nummer må maks være 4 ciffer. <BR>"
        end if
       
      If cpr = "error" then
            response.write "Der fejl i din fødsels dato den skal kun være de 6 første ciffre. Og det skal skrive således 121278 = 12 december 1978<BR>"
        end if
       
             
      If mobiltelefon = "error" then
            response.write "Mobiltelefon nummeret kan kun være 8 ciffer. <BR>"
        end if

        If email = "error" then
            response.write "E-mail adresse kun være på 20 ciffer. <BR>"
            elseif nameCheck = "error" then
                response.write "E-mail adressen er registret i forvejen - enten har du lavet en fejl eller så eksistere du i forvejen <BR>"
        end if
       
        response.write "</B></FONT>"
   
    end if
%>   


</CENTER>


<%
connect.close
set connect = nothing
%>

</BODY>
</HTML>

--------------
Nogen er kan se fejlen ??
Avatar billede erikjacobsen Ekspert
06. juni 2000 - 11:47 #1
Prøv

    If not checkNameRs.bof then

i stedet for den med .eof - det virker totalt ulogisk på mig - og har altid gjort, at
"din" metode ikke burde virke.
Avatar billede erikjacobsen Ekspert
06. juni 2000 - 11:47 #2
(Læs mere i ASP in a Nutshell, O'Reilly, 1999, side 178-179.)
Avatar billede Slettet bruger
06. juni 2000 - 11:55 #3
erikjacobsen :

Den gav ikke pote - det har ingen effekt over hovedet !!

Andre der har et bud ???
Avatar billede erikjacobsen Ekspert
06. juni 2000 - 12:13 #4
ok så prøv (det er ikke fordi jeg ligefrem ved hvad der sker.... hehe):

  if not (checkNameRs.bof or checkNameRs.eof) then
    validateForm = "invalid"
    ....

Men jeg ved ikke om det er dét. Resten af koden ser bare korrekt ud.
Avatar billede erikjacobsen Ekspert
06. juni 2000 - 12:47 #5
Forøvrigt: noget af en begrænsning med kun 20 tegn til en email. Jeg har mindst
én der er længere: xxxxxxxxx@xxxxxxxxxx.xxx    Ja, 24 tegn. 20 er alt for lidt.
Avatar billede mystico Nybegynder
06. juni 2000 - 12:51 #6
Ja jo måske det har du nok ret i !

Men det andet der løser ikke problmet :O(
Avatar billede erikjacobsen Ekspert
06. juni 2000 - 12:56 #7
Ok, er der andre felter i tabellen, der er sat til at være index-felter, til ikke at måtte indeholde
dubletter? Og at det er derfor den brokker sig. (Den siger jo ikke noget om email, og du siger noget
om samme navn, ser jeg nu) Hvordan er username defineret??
Avatar billede nse Nybegynder
06. juni 2000 - 13:04 #8
Do While NOT RS.EOF
If  RS("Username") = request("Username") then Response.write("Bruger findes allerede")
Avatar billede runesoft Nybegynder
06. juni 2000 - 13:17 #9
Er email feltet din primary key i databasen? Hvis ikke, hvad er så?
Avatar billede Slettet bruger
06. juni 2000 - 13:19 #10
nse hmmm hvad mener du med det ?

den tjekker jo på email
Avatar billede Slettet bruger
06. juni 2000 - 13:22 #11
runesoft : det username der primary key
Avatar billede Slettet bruger
06. juni 2000 - 13:27 #12
hmm ja så kan jeg godt se fejlen !!

Takker for hjælpen !
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