Avatar billede moritz Nybegynder
04. januar 2003 - 16:51 Der er 30 kommentarer og
3 løsninger

Opdateringsproblem

Hej, jeg arbejde på en side til min Warcraft III clan, og da det jo helst skulle være muligt at opdatere løbende valgte jeg at lave den i simpel asp.
(siden kan ses på http://www.petethepech.frip.dk/glad2003/default.asp)
Jeg har oprettet en acces database med 3 underliggende tabeller (news, users, report)

Jeg kan fint få vist indholdet af databasen, men problemet ligger i at jeg ikke kan opdatere den.
Det burde være rigtigt det jeg har lavet men jeg får denne fejl hele tiden.

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
/reanimatedreavers/admin/update.asp, line 25

Asp dele af Update.asp

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "SERVER=LOCALHOST;DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath(".../.../db/database.mdb")
Conn.Open DSN

strSQL = "UPDATE NEWS SET newsSubject='" & Request.Form("newsSubject") & "', "
strSQL = strSQL & "newsSmall='" & replace(Request.Form("newsSmall"),"'","''") & "', "
strSQL = strSQL & "newsLarge='" & Request.Form("newsLarge") & "', "
strSQL = strSQL & "newsAf='" & Request.Form("newsAf") & "', "
strSQL = strSQL & "newsDate='" & Request.Form("newsDate") & "' "
strSQL = strSQL & "WHERE ID = '" & Request.Form("newsID") & "'"


Conn.Execute( strSQL )
Conn.Close

Set Conn = Nothing
%>

Asp delen af modigynews.asp

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "SERVER=LOCALHOST;DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath(".../.../db/database.mdb")
Conn.Open DSN

SQL = "Select * From News Where newsid = " & Request.Querystring("id")
Set RS = Conn.Execute( SQL )
if( NOT RS.EOF ) then
  newsID    = RS("newsID")
  newsSubject = RS("newsSubject")
  newsSmall = RS("newsSmall")
  newsLarge = RS("newsLarge")
  newsAf = RS("newsAf")
  newsDate = RS("newsDate")
end if

RS.Close
Conn.Close

Set RS = nothing
Set Conn = nothing
%>

Og så tabeller med newsSubject osv...
Avatar billede 2-maz Nybegynder
04. januar 2003 - 16:54 #1
strSQL = "UPDATE news SET newsSubject='" & Request.Form("newsSubject") & "', "
strSQL = strSQL & "newsSmall='" & replace(Request.Form("newsSmall"),"'","''") & "', "
strSQL = strSQL & "newsLarge='" & Request.Form("newsLarge") & "', "
strSQL = strSQL & "newsAf='" & Request.Form("newsAf") & "', "
strSQL = strSQL & "newsDate='" & Request.Form("newsDate") & "' "
strSQL = strSQL & "WHERE ID = " & Request.Form("newsID")

prøv evt, men denne update query istedet...
Avatar billede moritz Nybegynder
04. januar 2003 - 17:16 #2
same error
Avatar billede klok Nybegynder
04. januar 2003 - 18:35 #3
Prøv at skrive din SQL ud istedet for at udføre den.
Dette gør du sådan:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "SERVER=LOCALHOST;DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath(".../.../db/database.mdb")
Conn.Open DSN

strSQL = "UPDATE NEWS SET newsSubject='" & Request.Form("newsSubject") & "', "
strSQL = strSQL & "newsSmall='" & replace(Request.Form("newsSmall"),"'","''") & "', "
strSQL = strSQL & "newsLarge='" & Request.Form("newsLarge") & "', "
strSQL = strSQL & "newsAf='" & Request.Form("newsAf") & "', "
strSQL = strSQL & "newsDate='" & Request.Form("newsDate") & "' "
strSQL = strSQL & "WHERE ID = '" & Request.Form("newsID") & "'"

Response.Write(strSQL)
'Conn.Execute( strSQL )
Conn.Close

Set Conn = Nothing
%>

Så tror jeg du vil se at en af de værdier du tror du overføre fra forrige side mangler (F.eks. kan talfelter ikke være "blanke", men skal evt. sættes til 0 eller Null ). Dette skyldes så nok igen at du ikke har fået navngivningen helt korrekt, eller at du bare ikke har noget input i alle felter.

Hvis du ikke selv kan se fejlen, så prøv at skrive SQL'en herinde, så skal jeg da nok lige give den et kig.
Avatar billede moritz Nybegynder
04. januar 2003 - 18:54 #4
Prøvede at slette hele datokolonnen, og lave et id med meget lidt tekst.
jeg fik error i linie 24 = Conn.Execute(strsql)

Med resp write gav den

UPDATE news SET newsSubject='hej', newsSmall='hej4', newsLarge='hej', newsAf='moritz', WHERE ID = 6
Avatar billede moritz Nybegynder
04. januar 2003 - 18:56 #5
Syntaks fejl... skrev den
Avatar billede medions Nybegynder
04. januar 2003 - 20:31 #6
Jamen hvad med dine felter i din database? -De felter (kolonner) du sender tekst til, SKAL oxo være text felter!

//>Rune
Avatar billede moritz Nybegynder
04. januar 2003 - 22:35 #7
Fatter ikke lige det med datatyper :(
Har lagt de implicerede filer ud på http://petethepech.frip.dk/hehe.rar
Avatar billede moritz Nybegynder
04. januar 2003 - 22:35 #8
vil med glæde give flere points for en løsning :(
Avatar billede medions Nybegynder
04. januar 2003 - 22:37 #9
Jeg kan ikke åbne filen!

-send prøv at pak den på ny og send den til rune@medions.dk !

//>Rune
Avatar billede moritz Nybegynder
04. januar 2003 - 22:44 #10
ok
Avatar billede moritz Nybegynder
04. januar 2003 - 22:44 #11
hov ja der var vist gået ged i den fil, frip sucks :(
Avatar billede medions Nybegynder
04. januar 2003 - 23:03 #12
Prøv at skriv den præcise fejl her!

//>Rune
Avatar billede moritz Nybegynder
04. januar 2003 - 23:07 #13
Fejlen er at hvis jeg forsøger at redigere i en fil (modifynews.asp) får jeg en error når den skal til at redigere i den (update.asp)
Jeg tror jeg har haft et par forskellige forskellige. Den der er nu (Der er en syntaksfejl i UPDATE-sætningen.
/reanimatedreavers/admin/update.asp, line 23 - Execute sql)
en anden med at der ikke var nok "ting" der var ventet 1, kan ikke huske den men den har jeg heller ikke længere...

Men altså kort og godt vil den ikke regidere databasen
Avatar billede moritz Nybegynder
04. januar 2003 - 23:08 #14
Det den skrev før (da jeg ikke havde slettet dato tror det er noget med datatype som blev nævnt tidligere)

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

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 5.

/glad2003/admin/update.asp, line 25


Men altså nu siger den syntaksfejl
Avatar billede medions Nybegynder
04. januar 2003 - 23:09 #15
Har du skrive rettigheder til Databasen?

//>Rune
Avatar billede moritz Nybegynder
04. januar 2003 - 23:19 #16
det sku jeg mene (eller?)
Avatar billede moritz Nybegynder
04. januar 2003 - 23:19 #17
Hvordan ændrer man det
Avatar billede medions Nybegynder
04. januar 2003 - 23:22 #18
Hvis du har Windows 2000 så:

Find database filen (.mdb)
Højreklik på den -> Properties -> Unmark ReadOnly -> Security -> Add -> IUSR_MASHINNAME -> Add

så skulle det virke!

//>Rune
Avatar billede moritz Nybegynder
04. januar 2003 - 23:31 #19
har windows xp dansk ;)
Avatar billede medions Nybegynder
04. januar 2003 - 23:33 #20
Sorry, then i don't know! -men så er det helt 100% sikkert at det er der fejlen ligger!

//>Rune
Avatar billede hossein Nybegynder
04. januar 2003 - 23:49 #21
Prøv sådan:
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath(".../.../db/database.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
strSQL = "UPDATE NEWS SET newsSubject='" & Request.Form("newsSubject") & "', "
strSQL = strSQL & "newsSmall='" & replace(Request.Form("newsSmall"),"'","''") & "', "
strSQL = strSQL & "newsLarge='" & Request.Form("newsLarge") & "', "
strSQL = strSQL & "newsAf='" & Request.Form("newsAf") & "', "
strSQL = strSQL & "newsDate='" & Request.Form("newsDate") & "' "
strSQL = strSQL & "WHERE ID = '" & Request.Form("newsID") & "'"

rs.Open strSQL,conn,3,3

'prøv 1. med uden at lukke rs og conn

'RS.Close
'Conn.Close

'Set RS = nothing
'Set Conn = nothing
%>
Avatar billede moritz Nybegynder
04. januar 2003 - 23:56 #22
no change :(

EN der ved hvordan man ser om det er read only pp databasen?
Avatar billede klok Nybegynder
05. januar 2003 - 10:23 #23
mortiz: Du højer klikker på databasen, vælger egenskaber, og ser så efter om databasen er read only.

Kan du for øverigt ikke skrive den fejlmeddelse du får nu, altså den precises som den står i din browser ?
Avatar billede klok Nybegynder
05. januar 2003 - 10:27 #24
Hov jeg bemærkede lige at der er fejl i den update sætning du skrev før, altså den uden dato:
UPDATE news SET newsSubject='hej', newsSmall='hej4', newsLarge='hej', newsAf='moritz', WHERE ID = 6
Der må ikke være , før WHERE
Så den skal se sådan ud:
UPDATE news SET newsSubject='hej', newsSmall='hej4', newsLarge='hej', newsAf='moritz' WHERE ID = 6

Jeg er ret sikker på at du ikke får smidt datoen rigtig ned, og det er der fejlen ligger, så jeg syntes du skulle prøve at sætte datoen ind igen, også lave response.write trikket på den update sætning du får ud af det. Skriv så den herinde, så tror jeg vi er ved at være der.
Avatar billede moritz Nybegynder
05. januar 2003 - 13:01 #25
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
/reanimatedreavers/admin/update.asp, line 23


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Side:
POST 67 bytes to /reanimatedreavers/admin/update.asp

POST Data:
newsID=6&newsSubject=hejs&newsSmall=hej&newsLarge=hej&newsAf=moritz
Avatar billede moritz Nybegynder
05. januar 2003 - 13:02 #26
ja det er fint nok med datoen, men jeg kan jo ikke engang få den til at virke uden den ;)
Avatar billede klok Nybegynder
05. januar 2003 - 15:11 #27
Moritz: Uden datoen er jeg ret sikker på at dit problem er det ekstra , før din WHERE som jeg skrev tidligere.
Avatar billede moritz Nybegynder
05. januar 2003 - 15:46 #28
men hvad er løsningen
Avatar billede klok Nybegynder
05. januar 2003 - 16:07 #29
Løsningen er at stykke alle disse hjælpende ord som du har fået af os alle sammen, og give dig til at rette i din kode.

Hvis jeg var dig ville jeg starte med at få skidtet til at virke uden datoen. Det gør du ved at slette det , <--- Komma du har før din WHERE. Når det forhåbentligt køre, vil jeg sætte datoen ind igen.

Nu får du formentlig en fejl igen igen, men så er det at du skal gøre som jeg har skrevet før og skrive din SQL streng ud. Den viser så nok at det er et forkert format du smider ind som din dato. Når du så har den, så finder du ud af hvad fejlen er i dit dato format også retter du det...

Prøv nu nogle af de forslag du har fået, og se om du ikke kan få det til at virke...
Avatar billede moritz Nybegynder
05. januar 2003 - 21:58 #30
ja men problemet er bare at jeg stadig får fejl (uden dato) når jeg sletter det komma...
Avatar billede hossein Nybegynder
05. januar 2003 - 23:15 #31
se dette eksampel måske det hjælper:
http://www.w3schools.com/ado/ado_update.asp
Avatar billede moritz Nybegynder
07. januar 2003 - 19:03 #32
ok tror jeg laver en ny database ;) tror den er screwed max up, skrive rher igen når jeg får gjort noget ved det men har lidt travlt for tiden
Avatar billede moritz Nybegynder
07. januar 2003 - 20:53 #33
Ok problemet var en fucked up database, nu duer det. Jeg deler pointene ud mellem jer allesammen, håber det er ok med alle ;)
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