03. december 2005 - 02:03
Der er
19 kommentarer og 1 løsning
Update database - men får hele tiden fejl
Jeg har forsøg at lave en update funktion i min nyhed, men jeg får hele tiden fejl, jeg ved desværre ikke hvad der er galt!!! Fejlen ser sådan her ud: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. Min kode ser sådan her ud: <% if Request.ServerVariables("REQUEST_METHOD") = "POST" then overskrift = Request.Form("over") indledning = Request.Form("ind") beskrivelse = Request.Form("nota") billede = Request.Form("img") if overskrift <> "" and indledning <> "" and beskrivelse <> "" and billede <> "" then Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("nyheder.mdb") strSQL = "update ["& rs("level") &"] SET WHERE id = " & Request.Querystring("id") strSQL = strSQL & "over= '"&overskrift&"', " strSQL = strSQL & "ind= '"&indledning&"', " strSQL = strSQL & "nota= '"&beskrivelse&"', " strSQL = strSQL & "img= '"&billede&"'" Conn.Execute(strSQL) Conn.Close Set Conn = Nothing Response.Redirect("nyheder.asp") end if end if %> Linjen den siger der er fejl i er: Conn.Execute(strSQL) Min form action hedder: "nyheder.asp?mode=ret&id=<% Request.Querystring("id") %>"
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
03. december 2005 - 02:07
#1
Prøv evt. med denne SQL: strSQL = "update ["& rs("level") &"] SET " strSQL = strSQL & "over= '"&overskrift&"', " strSQL = strSQL & "ind= '"&indledning&"', " strSQL = strSQL & "nota= '"&beskrivelse&"', " strSQL = strSQL & "img= '"&billede&"' " strSQL = strSQL & "WHERE id = " & Request.Querystring("id")
03. december 2005 - 02:11
#2
Det ændre ikke noget...!
03. december 2005 - 02:13
#3
Jeg glemte lige at spørge om det betyder noget, at jeg har flere felter i min database, men disse skal ikke opdateres?
03. december 2005 - 02:20
#4
Det gør ikke noget at der mangler værdier til nogle felter. Hvor kommer rs("level") fra? Bort set fra rs("level") kan jeg ikke se der skulle være nogle problemer rent syntaktisk (med den rettelse jeg foreslog), så det kan være det er der problemets årsag skal findes...
03. december 2005 - 02:22
#5
Det er et login level brugerne i systemet har - det kommer fra en anden database der er åbnet tidligere på siden...
03. december 2005 - 02:28
#6
prøv lige at tilføje disse to linier umiddelbart efter den sidste "strSQL = strSQL & ..."-linie: response.write strSQL response.end og vis hvad den skriver
03. december 2005 - 02:30
#7
Den skriver: update [1] SETover= 'Rettet', ind= 'Test til ret', nota= 'Test til ret', img= 'img/nyhed.jpg'WHERE id =
03. december 2005 - 02:32
#8
Næh, det burde ikke gøre nogen forskel, men nu spørger jeg lidt dumt - gir '"& rs("level")' en tabel?
03. december 2005 - 02:32
#9
...og du kopierede så ikke den sql jeg skrev til dig...? ;) Har du tabller i din database som er navngivet med numre/tal alene??
03. december 2005 - 02:34
#10
ud over at der mangler mellemrum efter SET og før WHERE, så mangler parameteren id at blive specificeret i kaldet til denne side...
03. december 2005 - 02:36
#11
ja rs=("level") giver en tabel i databasen nyheder.mdb
03. december 2005 - 02:39
#12
Jo, men jeg tænkte på om du rent faktisk kalder din tabel f.eks. 1 i databasen nyheder.mdb?
03. december 2005 - 02:41
#13
nu har jeg fået id'et med, men der mangler stadig mellemrum mellem SET og WHERE...! kan fejlen så ligge der... Når jeg opretter nyheder har jeg ingen problemer med at kalde min tabel
03. december 2005 - 02:51
#14
Så er den der...! efter jeg fik id'et med og mellemrum de rigtige steder, så virker det: strSQL = "update ["& rs("grenkode") &"] SET " strSQL = strSQL & "over= '"&overskrift&"', " strSQL = strSQL & "ind= '"&indledning&"', " strSQL = strSQL & "nota= '"&beskrivelse&"', " strSQL = strSQL & "img= '"&billede&"' " strSQL = strSQL & "WHERE id = " & Request.Querystring("id") Lig du bare et svar, havde aldrig tænkt på at "udskrive" hvad den skulle gemme, men den vil jeg huske - så er det mere overskueligt - Tak for det
03. december 2005 - 02:52
#15
Nej, når du omstiller tabelnavnet med [], så er det lovligt, men jeg er bare af den "gamle" skole, hvor det er "no-no" at bruge andet en bogstaver som det første tegn i en identifier (herunder navngivning af tabeller i databaser)... kald mig bare religiøs :) Prøv lige at kopiere denne SQL ind i stedet for din egen (den burde indeholde de fornødne mellemrum): strSQL = "UPDATE ["& rs("level") &"] SET " strSQL = strSQL & "over= '"&overskrift&"', " strSQL = strSQL & "ind= '"&indledning&"', " strSQL = strSQL & "nota= '"&beskrivelse&"', " strSQL = strSQL & "img= '"&billede&"' " strSQL = strSQL & "WHERE id = " & Request.Querystring("id")
03. december 2005 - 02:53
#16
Ja, det er en ret effektiv metode til at finde den slags fejl og kan også anbefales i mange andre scenarier... Velbekomme :)
03. december 2005 - 02:54
#17
;) - men tallene gør det en hel del lettere at lave levels...! :D - kom bare med et svar
03. december 2005 - 03:00
#18
Tak for point :) Nu kan jeg ikke helt gennemskue hvad du ellers har lavet som kører op mod denne database, men du kunne bare foranstille tabelnavnene med en fast tekst, f.eks. userlevel, så din UPDATE kom til at se således ud: strSQL = "UPDATE userlevel"& rs("level") &" SET " strSQL = strSQL & "over= '"&overskrift&"', " strSQL = strSQL & "ind= '"&indledning&"', " strSQL = strSQL & "nota= '"&beskrivelse&"', " strSQL = strSQL & "img= '"&billede&"' " strSQL = strSQL & "WHERE id = " & Request.Querystring("id")
03. december 2005 - 03:05
#19
okay... men min level virker også, som en session og der bruger jeg noget med = og > og <, men nu er jeg også ny i faget, så derfor virker tal nok mest lige til for mig :D
03. december 2005 - 04:30
#20
Fair nok - sålænge det fungerer så er det jo også fint nok. Jeg har bare på fornemmelsen at man kommer til at fortryde sådanne valg senere... :)
Kurser inden for grundlæggende programmering