Avatar billede weis Nybegynder
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") %>"
Avatar billede softspot Forsker
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")
Avatar billede weis Nybegynder
03. december 2005 - 02:11 #2
Det ændre ikke noget...!
Avatar billede weis Nybegynder
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?
Avatar billede softspot Forsker
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...
Avatar billede weis Nybegynder
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...
Avatar billede softspot Forsker
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
Avatar billede weis Nybegynder
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 =
Avatar billede tjp Mester
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?
Avatar billede softspot Forsker
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??
Avatar billede softspot Forsker
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...
Avatar billede weis Nybegynder
03. december 2005 - 02:36 #11
ja rs=("level") giver en tabel i databasen nyheder.mdb
Avatar billede softspot Forsker
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?
Avatar billede weis Nybegynder
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
Avatar billede weis Nybegynder
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
Avatar billede softspot Forsker
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")
Avatar billede softspot Forsker
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 :)
Avatar billede weis Nybegynder
03. december 2005 - 02:54 #17
;) - men tallene gør det en hel del lettere at lave levels...! :D

- kom bare med et svar
Avatar billede softspot Forsker
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")
Avatar billede weis Nybegynder
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
Avatar billede softspot Forsker
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... :)
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