Avatar billede peter.linde Nybegynder
03. oktober 2002 - 20:49 Der er 30 kommentarer og
1 løsning

Hjælp til 'syntaksfejl i UPDATE-sætningen'

Jeg har lavet en databasebaseret ugemenu i ASP.

Adgangen til databasen fungerer fint og menuen vises som den skal.

Meeeen. Opdateringssiden driller til gengæld. :-(

Jeg får denne fejlmeddelelse:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
/ugemenu/OpdaterMenu.asp, line 22

Og sådan ser min UPDATE-sætning ud:
' SQL sætning opbygges
strSQL = "Update menu "
strSQL = strSQL & "set "
strSQL = strSQL & "Uge=" & Request.Form("UgeNr") & ","
strSQL = strSQL & "Mandag=" & Request.Form("Mandag") & ","
strSQL = strSQL & "Tirsdag=" & Request.Form("Tirsdag") & ","
strSQL = strSQL & "Onsdag=" & Request.Form("Onsdag") & ","
strSQL = strSQL & "Torsdag=" & Request.Form("Torsdag") & ","
strSQL = strSQL & "Fredag=" & Request.Form("Fredag") & ","
strSQL = strSQL & "WHERE Id=" & Request.Form("Id") & ","

Kan du se hvad jeg skriver forkert?

Mange hilsner

Peter Linde
Avatar billede hyperactive Nybegynder
03. oktober 2002 - 20:51 #1
Hvilke datatyper skal indsættes???? Du kan prøve at sætte ' rundt om: strSQL = strSQL & "Mandag='" & Request.Form("Mandag") & "',"
Avatar billede keysersoze Ekspert
03. oktober 2002 - 20:52 #2
alle IKKE talfelter skal have plinger omkring det der skal indsættes - dvs du måske skal prøve noget a la dette medmindre alle dine felter er talfelter;

strSQL = "Update menu "
strSQL = strSQL & "set "
strSQL = strSQL & "Uge='" & Request.Form("UgeNr") & "',"
strSQL = strSQL & "Mandag='" & Request.Form("Mandag") & "',"
strSQL = strSQL & "Tirsdag='" & Request.Form("Tirsdag") & "',"
strSQL = strSQL & "Onsdag='" & Request.Form("Onsdag") & "',"
strSQL = strSQL & "Torsdag='" & Request.Form("Torsdag") & "',"
strSQL = strSQL & "Fredag='" & Request.Form("Fredag") & "',"
strSQL = strSQL & "WHERE Id=" & Request.Form("Id") & ","
Avatar billede eagleeye Praktikant
03. oktober 2002 - 20:53 #3
Hvis nogle af dine felter i databasen er defineret som tekst skal der ' omkring i SQL'en. Så skal der heller ikke , før og efter WHERE:


strSQL = "Update menu "
strSQL = strSQL & "set "
strSQL = strSQL & "Uge=" & Request.Form("UgeNr") & ", "
strSQL = strSQL & "Mandag='" & Request.Form("Mandag") & "', "
strSQL = strSQL & "Tirsdag='" & Request.Form("Tirsdag") & "', "
strSQL = strSQL & "Onsdag='" & Request.Form("Onsdag") & "', "
strSQL = strSQL & "Torsdag='" & Request.Form("Torsdag") & "', "
strSQL = strSQL & "Fredag='" & Request.Form("Fredag") & "' "
strSQL = strSQL & "WHERE Id=" & Request.Form("Id")
Avatar billede dr0zie Nybegynder
03. oktober 2002 - 21:01 #4
Avatar billede keysersoze Ekspert
03. oktober 2002 - 21:11 #5
spam?
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:05 #6
Hej keysersoze & eagleeye.

Tak for jeres forslag.

Prøvede begge forslag - uden held. Prøvede også uden ' omkring UgeNr i keysersozes forslag (talfelt).

Alle 'ugedage-felter' er tekstfelter. Id og UgeNr er talfelter.

->eagleeye: Er det med vilje, at du har fjernet komma'et sidst i fredag-linien?
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:07 #7
Ja som jeg skrev der skal ikke være , før og efter WHERE

Får du samme fejl kode + tekst eller er det en ny?
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:08 #8
Rettelse: UgeNr -> Uge
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:09 #9
Fejlkode:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
/ugemenu/OpdaterMenu.asp, line 21


Browser Type:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Page:
POST 99 bytes to /ugemenu/OpdaterMenu.asp

POST Data:
UgeNr=52&Id=1&Mandag=ris&Tirsdag=pasta&Onsdag=%E6g&Torsdag=bacon&Fredag=chips&Submit=Opdat%E9r+Menu
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:12 #10
Hedde det så uge eller ugenr i databasen ???

strSQL = "Update menu "
strSQL = strSQL & "set "
strSQL = strSQL & "Ugenr=" & Request.Form("UgeNr") & ", "
strSQL = strSQL & "Mandag='" & Request.Form("Mandag") & "', "
strSQL = strSQL & "Tirsdag='" & Request.Form("Tirsdag") & "', "
strSQL = strSQL & "Onsdag='" & Request.Form("Onsdag") & "', "
strSQL = strSQL & "Torsdag='" & Request.Form("Torsdag") & "', "
strSQL = strSQL & "Fredag='" & Request.Form("Fredag") & "' "
strSQL = strSQL & "WHERE Id=" & Request.Form("Id")
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:13 #11
Uge
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:13 #12
UgeNr kommer fra Form
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:19 #13
Fejlen betyder som regl at et kolonnenavn er stavet forkert i SQL sætningen.
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:23 #14
Tjekket. Alle kolonnenavne er fuldstændig identiske med databasens.
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:26 #15
Prøv at udskrive SQL sætningen..

Response.write strSQL

og vis resultat her så kan det nogle gange være lettere at se om der er fejl i.
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:28 #16
Ok. Hvor indsættes sætningen?
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:29 #17
lige efter du har lavet  strSQL og inden du udføre den:

.
.
strSQL = strSQL & "WHERE Id=" & Request.Form("Id")
Response.write strSQL
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:31 #18
Det ligner samme fejlmeddelelse:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
/ugemenu/OpdaterMenu.asp, line 22


Browser Type:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Page:
POST 92 bytes to /ugemenu/OpdaterMenu.asp

POST Data:
UgeNr=42&Id=1&Mandag=ost&Tirsdag=ost&Onsdag=ost&Torsdag=ost&Fredag=ost&Submit=Opdat%E9r+Menu
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:32 #19
Ok. plingede execute ud..det hjalp vist ;-)

Ny meddelelse:
Update menu set Uge=42,Mandag='ost',Tirsdag='ost',Onsdag='ost',Torsdag='ost',Fredag='ost',WHERE Id=1,
Ugemenuen er opdateret
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:32 #20
Så prøv at indsætte:  Response.End

strSQL = strSQL & "WHERE Id=" & Request.Form("Id")
Response.write strSQL
Response.End

..Kode som opdater databasen
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:34 #21
Har du prøvet den jeg har vist hvor , var fjerne før og efter WHERE for det ser ud som om det stadig er med.:

strSQL = "Update menu "
strSQL = strSQL & "set "
strSQL = strSQL & "Uge=" & Request.Form("UgeNr") & ", "
strSQL = strSQL & "Mandag='" & Request.Form("Mandag") & "', "
strSQL = strSQL & "Tirsdag='" & Request.Form("Tirsdag") & "', "
strSQL = strSQL & "Onsdag='" & Request.Form("Onsdag") & "', "
strSQL = strSQL & "Torsdag='" & Request.Form("Torsdag") & "', "
strSQL = strSQL & "Fredag='" & Request.Form("Fredag") & "' "
strSQL = strSQL & "WHERE Id=" & Request.Form("Id")
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:34 #22
Just for the record...

Teksten Ugemenuen er opdateret er en del af sidens HTML.
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:38 #23
Du har ret. , var tilbage igen.

Fjernede det - prøvede igen - Stadig fejl.

Ny Response.Write:
Update menu set Uge=42,Mandag='ost',Tirsdag='ost',Onsdag='ost',Torsdag='ost',Fredag='ost' WHERE Id=1
Ugemenuen er opdateret
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:43 #24
Hvis ID og Uge er defineret som tal i databasen og resten som tekst, og du har tjekke alle kolonnenavn/tabelnavne er stavet på samme måde i databasen så virker det meget underligt... For det ser rigtigt ud nu.
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:51 #25
du kan evt prøve at sætte [] omkring kolonne navne for at se om det hjælper men så vidt jeg kan se er der ingen kolonnen som er imod reglerne for navne, altå indeholder - / + mellemrum ;.: med flere.. Eller reserveret ord i SQL http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q209187& :

strSQL = "Update menu "
strSQL = strSQL & "set "
strSQL = strSQL & "[Uge]=" & Request.Form("UgeNr") & ", "
strSQL = strSQL & "[Mandag]='" & Request.Form("Mandag") & "', "
strSQL = strSQL & "[Tirsdag]='" & Request.Form("Tirsdag") & "', "
strSQL = strSQL & "[Onsdag]='" & Request.Form("Onsdag") & "', "
strSQL = strSQL & "[Torsdag]='" & Request.Form("Torsdag") & "', "
strSQL = strSQL & "[Fredag]='" & Request.Form("Fredag") & "' "
strSQL = strSQL & "WHERE [Id]=" & Request.Form("Id")
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:52 #26
Fandt fejlen...

Du havde endda været inde på den. Kolonnen hedder Uge i databasen - men FELTNAVNET var UgeNR - som i formularen.

Tusind tak for hjælpen.

Vores kantinedame bliver lykkelig! ;-)

Mange hilsner

Peter Linde
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:53 #27
Har du fået points?
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:54 #28
Jeps mange tak :)
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 22:55 #29
Det er mig som takker.

Det er første gang jeg prøver dette. Skal tråden lukkes på en eller anden måde?
Avatar billede eagleeye Praktikant
03. oktober 2002 - 22:59 #30
Man lukker en tråd ved at acceptere et eller flere svar.
Avatar billede peter.linde Nybegynder
03. oktober 2002 - 23:01 #31
Okay.

Men så - Godnat - og endnu en gang tak for hjælpen.

Peter Linde
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