Avatar billede jelle Nybegynder
18. februar 2003 - 20:57 Der er 35 kommentarer og
3 løsninger

Hvorfor virker den her UPDATE ikke?

Hej!
Jeg får følgende fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/efterskole-elev.dk/beskyttede/opdater_brugeroplysninger.asp, line 102



når jeg køre følgende kode:

        Sql = "UPDATE brugere SET (password, fornavn, efternavn, email, icq, messenger, mobil, adresse1, postnummer, bynavn, dag, maaned, aar, klasse, koen, efterskole, beskrivelse, vsperson, vsefterskole, vskontakt) values('"
        Sql = Sql & Request.form("password") & "','"
        Sql = Sql & Request.form("fornavn") & "','"
        Sql = Sql & Request.form("efternavn") & "','"
        Sql = Sql & Request.form("email") & "','"
        Sql = Sql & Request.form("icq") & "','"
        Sql = Sql & Request.form("messenger") & "','"
        Sql = Sql & Request.form("mobil") & "','"
        Sql = Sql & Request.form("adresse1") & "','"
        Sql = Sql & Request.form("postnummer") & "','"
        Sql = Sql & Request.form("bynavn") & "','"
        Sql = Sql & Request.form("dag") & "','"
        Sql = Sql & Request.form("maaned") & "','"
        Sql = Sql & Request.form("aar") & "','"
        Sql = Sql & Request.form("klasse") & "','"
        Sql = Sql & Request.form("koen") & "','"
        Sql = Sql & Request.form("efterskole") & "','"
        Sql = Sql & Request.form("beskrivelse") & "','"
        Sql = Sql & Request.form("personoplysninger") & "','"
        Sql = Sql & Request.form("efterskoleoplysninger") & "','"
        Sql = Sql & Request.form("kontaktoplysninger") & "') WHERE id = " & session("aktivBruger")
        conn.Execute(Sql)

Linie 102 er den sidste linie.

Håber i kan hjælpe mig!
Avatar billede no_doubt Nybegynder
18. februar 2003 - 21:02 #1
password er et reserveret ord
UPDATE brugere SET ([password], fornavn, efternavn, email, icq, messenger, mobil, adresse1, postnummer, bynavn, dag, maaned, aar, klasse, koen, efterskole, beskrivelse, vsperson, vsefterskole, vskontakt)
Avatar billede jelle Nybegynder
18. februar 2003 - 21:23 #2
får stadig den samme fejl
Avatar billede hossein Nybegynder
18. februar 2003 - 21:49 #3
Felternes datatype, er de alle sammen Tekst?
Måske er det bedre at du lægger resten af din kode for db forbindelse, så kan vi se om du har glemt noget.
Avatar billede hossein Nybegynder
18. februar 2003 - 21:57 #4
hvis du bruger Microsoft Access Driver så skift den ud med Jet OLEDB Provider 4.0. fx:
Set Conn=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.recordset")
Conn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="&server.Mappath("minDB.mdb"))
Avatar billede hnteknik Novice
18. februar 2003 - 21:57 #5
prøv af lave email om til emailadr.
Et godt råd: skriv foran con...
response.write(SQL)
response.end()
og vis os/hvad der skrives ud - så kan vi bedre se, hvad conn.... skal læse

Henrik
Avatar billede jelle Nybegynder
18. februar 2003 - 22:03 #6
Det udskriver følgende:
UPDATE brugere SET ([password], fornavn, efternavn, email, icq, messenger, mobil, adresse1, postnummer, bynavn, dag, maaned, aar, klasse, koen, efterskole, beskrivelse, vsperson, vsefterskole, vskontakt) values('pass','Mads','Ellesgaard','mads@ellesgaard.dk','34351200','ellesgaard@ellesgaard.dk','26284567','Nørskovvej 8','7600','Struer','14','6','1985','10','0','113','','0','0','0') WHERE id =
Avatar billede jelle Nybegynder
18. februar 2003 - 22:04 #7
og det er fejlen til sidst, hvorfor får den ikke id'en med?
Avatar billede jelle Nybegynder
18. februar 2003 - 22:08 #8
jeg har fundet ud af, det der med id'en, sessionen var udløbet... men det virker stadig ikke
Avatar billede hossein Nybegynder
18. februar 2003 - 22:19 #9
Du bruger nogle tegn som skal filteres fx: . og @ i email og messenger
Avatar billede jelle Nybegynder
18. februar 2003 - 22:25 #10
ok jeg forstår bare ikke, jeg kan men sammen kode - altså borset fra UPDATE og SET tilføje de samme felter....
Avatar billede hossein Nybegynder
18. februar 2003 - 22:27 #11
Hvad for en driver du bruger?
Avatar billede longshanks Nybegynder
18. februar 2003 - 22:40 #12
ØHHH er det bare mig eller er det SQL syntaksen for en INSERT istedet for en UPDATE du laver ?????????

INSERT SQL:
INSERT INTO Tabelnavn (Fornavn) Values ('Hans') where Id= osv....

UPDATE SQL:
UPDATE Tabelnavn Set Fornavn = 'Kurt' where id =osv.....
Avatar billede mortrr Praktikant
18. februar 2003 - 23:19 #13
;-)

Det kunne altså også være han er vant til at bruge Oracle.

UPDATE Tabel SET (Felt1, Felt2, Felt3) = (Værdi1, Værdi2, Værdi3)
Avatar billede longshanks Nybegynder
18. februar 2003 - 23:21 #14
OK har aldrig leget med ORACLE, så der kan man bare se......Men det ser ud til på fejlen at det er en Access database han prøver at indsættte noget i!!!!

;)
Avatar billede jelle Nybegynder
19. februar 2003 - 12:43 #15
Hvad mener i med driver? Jeg er ikke helt så hardcore til asp endnu...
Avatar billede longshanks Nybegynder
19. februar 2003 - 13:27 #16
er det ikke en acces database du sætter ind i ?
Avatar billede longshanks Nybegynder
19. februar 2003 - 13:27 #17
undskyld, en access db du vil opdatere?
Avatar billede roo104 Nybegynder
19. februar 2003 - 13:36 #18
Du bruger insert syntax
Sql = "UPDATE brugere SET (password = & Request.form("password") & ..... WHERE id = " & session("aktivBruger")

sådan skal den se ud du skal sætte alle kolonner = noget hvor id er et bestemt nummer.
Avatar billede roo104 Nybegynder
19. februar 2003 - 13:37 #19
husk endelig where betingelsen eller opdaterer den alle poster i tabellen
Avatar billede hnteknik Novice
19. februar 2003 - 18:52 #20
>jelle  jeg tror du har fået svaret til strukturen - test strukturen og lad os se, om email og password måske ikke er reserverede ord. F.eks. [by] går helt galt
Henrik

blot et eks:
var SQL = 'UPDATE tbludvalgliste SET ' +
'uid = ' + Request.Form("muid") + ',' +
'pid = "' + String(Request.Form("mpid")) + '",' +
'cid = ' + Request.Form("mcid") + ' ' +
'WHERE uid='+Request.Form("muidold")+ ' AND pid="' +
String(Request.Form("mpidold")) + '" AND cid=' +Request.Form("mcidold")+';';
con.Execute (SQL);
Avatar billede roo104 Nybegynder
19. februar 2003 - 18:58 #21
password er reseveret, men men kan sætte ` ` (backticks hedder de på engelsk) omkring eller man kan bruge tabelnavn.password

Her er en liste over reseverede ord i MySQl, det er nok det samme i Acces, oracle ect.
http://www.mysql.com/doc/en/Reserved_words.html
Avatar billede longshanks Nybegynder
19. februar 2003 - 19:00 #22
Han giver alligevel ikke respons på jeres svar/kommentarer så det kan faktisk være ligemeget!
Avatar billede roo104 Nybegynder
19. februar 2003 - 19:00 #23
det er shift og den ved siden af backspace.
Så kan du sagtens bruge reseverede ord.
Avatar billede roo104 Nybegynder
19. februar 2003 - 19:01 #24
det kunne jo også være han ikke var hjemme, eller ikke liga havde tid!
Avatar billede jelle Nybegynder
19. februar 2003 - 21:57 #25
I må undskyld, jeg har ikke haft tid til at kigge på det i dag.. men kigger på det i morgen... Takker for hjælpen indtil videre....
Avatar billede jelle Nybegynder
20. februar 2003 - 10:50 #26
Ok så langt så godt, nu har jeg rettet det til følgende:
strSQL = "Update brugere SET "
    strSQL = strSQL & "fornavn= '" & Request.form("fornavn") & "' "
    strSQL = strSQL & "efternavn= '" & Request.form("efternavn") & "' "
    strSQL = strSQL & "`password`= '" & Request.form("password") & "' " 
    strSQL = strSQL & "`email`= '" & Request.form("email") & "' " 
    strSQL = strSQL & "icq= '" & Request.form("icq") & "' " 
    strSQL = strSQL & "messenger= '" & Request.form("messenger") & "' " 
    strSQL = strSQL & "mobil= '" & Request.form("mobil") & "' " 
    strSQL = strSQL & "adresse1= '" & Request.form("adresse1") & "' " 
    strSQL = strSQL & "postnummer= '" & Request.form("postnummer") & "' " 
    strSQL = strSQL & "bynavn= '" & Request.form("bynavn") & "' " 
    strSQL = strSQL & "dag= '" & Request.form("dag") & "' " 
    strSQL = strSQL & "maaned= '" & Request.form("maaned") & "' " 
    strSQL = strSQL & "aar= '" & Request.form("aar") & "' " 
    strSQL = strSQL & "klasse= '" & Request.form("klasse") & "' " 
    strSQL = strSQL & "koen= '" & Request.form("koen") & "' " 
    strSQL = strSQL & "efterskole= '" & Request.form("efterskole") & "' " 
    strSQL = strSQL & "beskrivelse= '" & Request.form("beskrivelse") & "' " 
    strSQL = strSQL & "vsperson= '" & Request.form("personoplysninger") & "' " 
    strSQL = strSQL & "vsefterskole= '" & Request.form("efterskoleoplysninger") & "' " 
    strSQL = strSQL & "vskontakt= '" & Request.form("kontaktoplysninger") & "' " 
    strSQL = strSQL & " Where Id = " & session("aktivBruger")

    ' SQL sætning eksekveres
    response.write(SQL)

    Conn.Execute(strSQL)

men jeg får følgende fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression ''Mads' efternavn= 'Ellesgaard' `password`= 'webster' `email`= 'mads@ellesgaard.dk' icq= '34351200' messenger= 'ellesgaard@ellesgaard.dk' mobil= '26284567' adresse1= 'Nørskovvej 8' postnummer= '7600' bynavn= 'Struer' dag= '4' maaned= '6' aar= '1985' klasse= ''.

/beskyttede/opdater_brugeroplysninger.asp, line 107


Hvad er der galt?

P.s. jeg sætter lige pointne 50 op, for den hjælp i kommet med indtil nu, det er jeg sq glad for!
Avatar billede jelle Nybegynder
20. februar 2003 - 11:00 #27
jeg har fundet frem til følgende:
At hvis jeg sætter den til at den kun skal opdaterer en linie, så virker det, men hvis den skal opdaterer flere linier får jeg fejlen!
Avatar billede longshanks Nybegynder
20. februar 2003 - 11:01 #28
Mangler der ikke kommaer ????
Det skal være sådan her:
strSQL = strSQL & "fornavn= '" & Request.form("fornavn") & "', "
    strSQL = strSQL & "efternavn= '" & Request.form("efternavn") & "', "

med et komma efter hver apostrof
Avatar billede longshanks Nybegynder
20. februar 2003 - 11:01 #29
med kommaerne burde du komme videre
Avatar billede jelle Nybegynder
20. februar 2003 - 11:05 #30
Jow de manglede, jeg fandt selv ud af det men ellers tak! Nu virker det! Nu kommer problemet bare med at få fordelt pointne!!!
Avatar billede longshanks Nybegynder
20. februar 2003 - 11:07 #31
Ja det er ikke nemt :)
Avatar billede jelle Nybegynder
20. februar 2003 - 11:14 #32
Håber ikke jeg har fornærmet nogle med fordelingen af pointne, men jeg mener at det var på den måde jeg brugte jeres svar.
Tak for hjælpen alle sammen!
Avatar billede longshanks Nybegynder
20. februar 2003 - 11:16 #33
Tak for point, men undskyld mig hvorfor giver du 75 point for noget der ikke har hjulpet dig???, hvis vi andre ikke havde sagt du rodede rundt i SQL´en havde du stadig siddet med problemer.....

Nå men det er nu engang dig der fordeler
Avatar billede jelle Nybegynder
20. februar 2003 - 11:21 #34
Jamen ved hktekniks svar, så jeg princippet, og det var det der fik mig til at få det til at virke...
Avatar billede longshanks Nybegynder
20. februar 2003 - 11:45 #35
Det er som sagt dig der bestemmer:

men sig mig lige hvad der var så problemløsende ved flg citat:

prøv af lave email om til emailadr.
Et godt råd: skriv foran con...
response.write(SQL)
response.end()
og vis os/hvad der skrives ud - så kan vi bedre se, hvad conn.... skal læse

??????
Hans næste svar gik godt nok på hvordan en Update streng i access skal se ud, men det var svaret på af andre inden da..
Avatar billede hnteknik Novice
20. februar 2003 - 18:31 #36
Hør longhals - hvor gammel er du.
I stedet for at springe ud på den tynde is og lave en hopsa løsning, skal man arbejde systematisk frem.

I stedet for at sidde med stavepladen ( hvilket du sikkert er helt ferm til) får man udlæst, hvad puteren forsøger at fortolke ( Her finder man ofte de mest banale fejl). Update er en rigtig driller og den mest sandsynlige fejl er ofte, at man har brugt reserverede ord. Herefter kan det være forskelle i SQL sproget og implementeringen (f.eks. MySQL i forhold til Access).

Vi prøver alle at hjælpe, så tør lige munden med smækken og er der mere vrøvl, kan du få 500 points af mig.
Avatar billede longshanks Nybegynder
20. februar 2003 - 21:45 #37
Systematisk frem, ok der er altså markant forskel på en insert og en update sql streng, at du ikke lige fangede den, det er da helt ok, det er jo heller ikke dig jeg skælder ud, jeg spørger bare hvad, der i det du skrev løste problemet.......dvs. ingenting, det må du da kunne se. Kort fortalt var problemet i dette spørgsmål at han brugte forkert sql syntaks, det fandt jeg og andre ud af, det løste hans problem, ergo skulle vi i det mindste have delt pointene lige over Det må du sgu da være enig i????
Avatar billede hnteknik Novice
22. februar 2003 - 15:37 #38
Der er mange måder at løse et problem på.

I mange år har man sendt fødevarer ned til Afrika for at løse sultproblemet - det har jo ikke rigtig flyttet noget.

Der er mere fremtid i at lære folk selv at løse deres problemer.

Jeg er sgu ligeglad med points og det er ikke dig, jeg er ude efter, men harcelere over det ! Livet er for kort til sure cigarer -vil du have de points. Jeg kan se, at du ikke har så mange ??
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