Avatar billede fenriz Nybegynder
09. marts 2006 - 10:33 Der er 12 kommentarer og
1 løsning

UPDATE Bruger SET

Hvad er der galt med denne "Update" sætning ???

Jeg for hele tiden fejl på den og har nu stirret mig blind på den og kan ikke se fejlen...

BrugerID = Request.Form("BrugerID")
        Fornavn = Request.Form("Fornavn")
        Efternavn = Request.Form("Efternavn")
        Brugernavn = Request.Form("Brugernavn")
        Password = Request.Form("Password")
        Brugertype = Request.Form("Type")
        Kreds = Request.Form("Kreds")
        Firma = Request.Form("Firmanavn")
        Adresse = Request.Form("Adresse")
        Pnr = Request.Form("Postnr")
        By = Request.Form("By")
        Tlf = Request.Form("TelefonMobil")
        Email = Request.Form("Email")
        CV = Request.Form("CV")

        'Ser efter om brugeren er oprettet i databasen
        StrSQL = "SELECT * FROM Bruger where Fornavn = '" & Fornavn & "' AND Efternavn = '" & Efternavn & "' AND Brugernavn = '" & Brugernavn & "' AND Password = '" & Password & "'"
        Set RS = Conn.Execute(strSQL)
     
        'Hvis ikke brugeren er oprettet i databasen
    '    If RS.BOF then

            ' SQL forespørgsel
            strSQL = "UPDATE Bruger SET Fornavn ='"& Fornavn &"',Efternavn ='"& Efternavn &"',Brugernavn='"& Brugenavn &"',Password='"& Password &"',Brugertype ='"& Brugertype &"',Kreds ='"& Kreds &"',Firma ='"& Firma &"',Adresse ='"& Adresse &"',Pnr ='"& Pnr &"',By ='"& By &"',Tlf ='"& Tlf &"',Email ='"& Email &"',CV ='"& CV &"' WHERE BrugerID ="& BrugerID &" "
            set RS = Conn.Execute(strSQL)
                   
        Fornavn = ""
        Efternavn = ""
        Brugernavn = ""
        Password = ""
        BrugerType = ""
        Kreds = ""
        Firma = ""
        Adresse = ""
        Pnr = ""
        By = ""
        Tlf = ""
        Email = ""
        CV = ""
       
            'Luk databasen
            Conn.Close
            Set Conn = Nothing
       
            response.Redirect("bruger_oversigt.asp")
Avatar billede keysersoze Ekspert
09. marts 2006 - 10:43 #1
det er vel ikke sp smart at din sql selecter ud med fornavn, efternavn, brugernavn og password - hvad nu hvis brugeren ændrer en af disse? Så vil din select give EOF og din update vil aldrig blive kørt. Du skal derimod nok hellere føre brugerens ID med videre fra den forrige side og i din select bare sige 'WHERE id = " & BrugerID'

Der er heller ingen umiddelbar grund til at nulstille dine variabler.

Hvad fejler din SQL-med?
Avatar billede fenriz Nybegynder
09. marts 2006 - 10:57 #2
Men du sådan her ?
        'Ser efter om brugeren er oprettet i databasen
        StrSQL = "SELECT * FROM Bruger where BrugerID = '" & BrugerID & "'"
        Set RS = Conn.Execute(strSQL)
Avatar billede keysersoze Ekspert
09. marts 2006 - 11:00 #3
ja - for ID for en bruger vil aldrig kunne ændre sig, det vil de øvrige 4 nemlig kunne. Er BrugerID et tal skal du dog undlad ' omkring din variabel.
Avatar billede fenriz Nybegynder
09. marts 2006 - 11:04 #4
Jeg er desværre tilbage med dene fejlmeddelelse?
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
Avatar billede softspot Forsker
09. marts 2006 - 11:06 #5
By er et reserveret ord i databasesammenhænge, så den skal du have sat [] omkring, altså:

strSQL = "UPDATE Bruger SET Fornavn ='"& Fornavn &"',Efternavn ='"& Efternavn &"',Brugernavn='"& Brugenavn &"',Password='"& Password &"',Brugertype ='"& Brugertype &"',Kreds ='"& Kreds &"',Firma ='"& Firma &"',Adresse ='"& Adresse &"',Pnr ='"& Pnr &"', [By] ='"& By &"',Tlf ='"& Tlf &"',Email ='"& Email &"',CV ='"& CV &"' WHERE BrugerID ="& BrugerID &" "
Avatar billede softspot Forsker
09. marts 2006 - 11:06 #6
Det samme gælder alle andre steder hvor du arbejder med By i SQL-sætninger i dette format.
Avatar billede softspot Forsker
09. marts 2006 - 11:11 #7
Hvorvidt du skal bruge fornavn, efternavn osv. til at finde brugeren på afhænger noget af hvordan du kommer ind til denne kode, for hvis du bare præsenterer brugeren for en formular, hvori de kan indtaste deres oplysninger uden nogen forudgående identificering af brugeren, kan du være nød til at søge efter brugeren på den måde du startede med. Hvis du derimod lader brugeren udvælge sine oplysninger (f.eks. via login eller sådan noget), så er jeg grundliggende enig med keysersoze i at det er bedre at benytte brugerens ID til at finde hem med.
Avatar billede fenriz Nybegynder
09. marts 2006 - 11:23 #8
Nu har jeg ændret det for go ordens skyld til "Bynavn" men har nu et andet problem
da den ikke vil opdatere en bruger, da den hele tiden går videre til at brugeren allerede er opdateret..
Hvad har jeg gjort forkert der??

If Request.Form("opret") = "OPRET" Then

        Fornavn = Request.Form("Fornavn")
        Efternavn = Request.Form("Efternavn")
        Brugernavn = Request.Form("Brugernavn")
        Password = Request.Form("Password")
        Brugertype = Request.Form("Type")
        Kreds = Request.Form("Kreds")
        Firma = Request.Form("Firmanavn")
        Adresse = Request.Form("Adresse")
        Pnr = Request.Form("Pnr")
        Bynavn = Request.Form("Bynavn")
        Tlf = Request.Form("TelefonMobil")
        Email = Request.Form("Email")
        CV = Request.Form("CV")
       
       

        'Ser efter om brugeren er oprettet i databasen
        StrSQL = "SELECT Brugernavn FROM Bruger where Brugernavn = '" & Brugernavn & "'"
        Set RS = Conn.Execute(strSQL)
     
            ' Hvis ikke brugeren er oprettet i databasen
            If RS.BOF then
               
            strSQL = "INSERT INTO Bruger ("
               
                strSQL = strSQL & "Fornavn, "
                strSQL = strSQL & "Efternavn, "
                strSQL = strSQL & "Firma,"
                strSQL = strSQL & "Adresse,"
                strSQL = strSQL & "Pnr,"
                strSQL = strSQL & "Bynavn,"
                strSQL = strSQL & "Tlf,"
                strSQL = strSQL & "Kreds,"
                strSQL = strSQL & "Email,"
                strSQL = strSQL & "Password, "
                strSQL = strSQL & "Brugernavn, "
                strSQL = strSQL & "CV, "
                strSQL = strSQL & "Brugertype"

            strSQL = strSQL & ") values( "
   
                strSQL = strSQL & "'" & Fornavn & "', "
                strSQL = strSQL & "'" & Efternavn & "', "
                strSQL = strSQL & "'" & Firma & "', "
                strSQL = strSQL & "'" & Adresse & "', "
                strSQL = strSQL & "'" & Pnr & "', "
                strSQL = strSQL & "'" & Bynavn & "', "
                strSQL = strSQL & "'" & Tlf & "', "
                strSQL = strSQL & "'" & Kreds & "', "
                strSQL = strSQL & "'" & Email & "', "
                strSQL = strSQL & "'" & Password & "', "
                strSQL = strSQL & "'" & Brugernavn & "', "
                strSQL = strSQL & "'" & CV & "', "
                strSQL = strSQL & "'" & Brugertype
                strSQL = strSQL & "');"
   
            Conn.Execute(strSQL)
               
        Fornavn = ""
        Efternavn = ""
        Brugernavn = ""
        Password = ""
        BrugerType = ""
        Kreds = ""
        Firma = ""
        Adresse = ""
        Pnr = ""
        Bynavn = ""
        Tlf = ""
        Email = ""
        CV = ""

        Conn.Close
        Set Conn = Nothing
               
        Response.Redirect "bruger_oversigt.asp"
               
            Else
                Response.write "<center><br><font color='#003366' size='2' face='Verdana, Arial, Helvetica, sans-serif'>Det indtastede brugernavn er allerede i brug<br><br><a href='java script:history.back(-1)'>Klik her for at  indtaste oprette en anden bruger</a></font></center>"
                Conn.Close
                Set Conn = Nothing
            End if

    ElseIf Request.Form("slet") = "SLET" Then
               
        strSQL = "Delete * From Bruger Where  BrugerID = " & Request.Querystring("BID")
        Conn.Execute(strSQL)
   
        Conn.Close
        Set Conn = Nothing
       
        response.Redirect("bruger_oversigt.asp")
   
   
    Else

        BrugerID = Request.Form("BrugerID")
        Fornavn = Request.Form("Fornavn")
        Efternavn = Request.Form("Efternavn")
        Brugernavn = Request.Form("Brugernavn")
        Password = Request.Form("Password")
        Brugertype = Request.Form("Type")
        Kreds = Request.Form("Kreds")
        Firma = Request.Form("Firmanavn")
        Adresse = Request.Form("Adresse")
        Pnr = Request.Form("Postnr")
        Bynavn = Request.Form("Bynavn")
        Tlf = Request.Form("TelefonMobil")
        Email = Request.Form("Email")
        CV = Request.Form("CV")

        'Ser efter om brugeren er oprettet i databasen
        StrSQL = "SELECT * FROM Bruger Where BrugerID = " & BrugerID & " "
        Set RS = Conn.Execute(strSQL)
     
        'Hvis ikke brugeren er oprettet i databasen
        If RS.BOF then

            ' SQL forespørgsel
            strSQL = "UPDATE Bruger SET Fornavn ='"& Fornavn &"',Efternavn ='"& Efternavn &"',Brugernavn='"& Brugenavn &"',Password='"& Password &"',Brugertype ='"& Brugertype &"',Kreds ='"& Kreds &"',Firma ='"& Firma &"',Adresse ='"& Adresse &"',Pnr ='"& Pnr &"',Bynavn ='"& Bynavn &"',Tlf ='"& Tlf &"',Email ='"& Email &"',CV ='"& CV &"' WHERE BrugerID ="& BrugerID &" "
            set RS = Conn.Execute(strSQL)
                   
        Fornavn = ""
        Efternavn = ""
        Brugernavn = ""
        Password = ""
        BrugerType = ""
        Kreds = ""
        Firma = ""
        Adresse = ""
        Pnr = ""
        Bynavn = ""
        Tlf = ""
        Email = ""
        CV = ""
       
            'Luk databasen
            Conn.Close
            Set Conn = Nothing
       
            response.Redirect("bruger_oversigt.asp")
       
        Else
            Response.write "<center><br><font color='#003366' size='2' face='Verdana, Arial, Helvetica, sans-serif'>Det indtastede brugernavn / password er allerede i brug<br><br><a href='java script:history.back(-1)'>Klik her for at  indtaste oprette en anden bruger</a></font></center>"
            Conn.Close
            Set Conn = Nothing
        End if
           
    End IF
Avatar billede softspot Forsker
09. marts 2006 - 11:34 #9
I din opdatering er det jo også et kriterie at brugeren IKKE findes før du opdaterer og det er umiddelbart forkert. Du skal teste på om rs.bof = false og ikke true som du gør nu.

  'Ser efter om brugeren er oprettet i databasen
  StrSQL = "SELECT * FROM Bruger Where BrugerID = " & BrugerID & " "
  Set RS = Conn.Execute(strSQL)
     
  'Hvis brugeren er oprettet i databasen
  If not RS.BOF then
Avatar billede fenriz Nybegynder
09. marts 2006 - 11:42 #10
HELT kanon, der er mig der har været en spade... tusin tak for hjælpen !!
Avatar billede fenriz Nybegynder
09. marts 2006 - 11:48 #11
lig lige et svar så jeg kan give dig poeng !
Avatar billede softspot Forsker
09. marts 2006 - 12:03 #12
Velbekomme :)
Avatar billede softspot Forsker
09. marts 2006 - 12:11 #13
Tak for point :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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