20. juni 2006 - 14:02
Der er
6 kommentarer og 1 løsning
Update af db
Jeg kan ikke lige se hvad fejlen i min kode er. Serveren melder at der er tale om flg: Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. /forum/update.asp, line 39 Her er et uddrag af min update.asp Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb") Conn.Open DSN strSQL = "Update [Entries] set " strSQL = strSQL & "[ForumID]= '" & Request.Form("ForumID") & "', " strSQL = strSQL & "[MessageID]= '" & Request.Form("MessageID") & "', " strSQL = strSQL & "[Name]= '" & Replace(Request.Form("Name"), "'", "''") & "', " strSQL = strSQL & "[Subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', " strSQL = strSQL & "[Comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', " strSQL = strSQL & "[Date]= '" & Now & "', " strSQL = strSQL & "[ip]= '" & (IP) & "'" strSQL = strSQL & " Where [id] = " & Request.querystring("id") 'Serveren siger at fejlen ligger i nedenstående linje conn.execute(strSQL) Conn.Close Set Conn = Nothing Er der nogle der kan hjælpe? Jeg er fuldstændig blind for hvad der mon kan være galt.
Annonceindlæg fra Infor
fejlen er omkring at et eller flere felter ikke findes... Prøv at undersøg om alle felter findes i databasen
gadebarnet > Det er ikke fordi der er manglende felter i db. Fejlen siger lidt sig selv. Der er for få parametre i sql strengen. miwu.tk > Du kan f.eks. ændre din kode lidt, så du kan debugge koden (finde eventuelle mangler i sql strengen): Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb") Conn.Open DSN strSQL = "Update [Entries] set " strSQL = strSQL & "[ForumID]= '" & Request.Form("ForumID") & "', " strSQL = strSQL & "[MessageID]= '" & Request.Form("MessageID") & "', " strSQL = strSQL & "[Name]= '" & Replace(Request.Form("Name"), "'", "''") & "', " strSQL = strSQL & "[Subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', " strSQL = strSQL & "[Comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', " strSQL = strSQL & "[Date]= '" & Now & "', " strSQL = strSQL & "[ip]= '" & (IP) & "'" strSQL = strSQL & " Where [id] = " & Request.querystring("id") 'conn.execute(strSQL) Response.Write(strSQL) Conn.Close Set Conn = Nothing Så udskriver den din sql streng, i stedet for at afvikle den, og du kan nu se om der skulle være mangler i den. En anden mulighed er også at datatypen på din felter i databasen er "forkerte". F.eks. går jeg ud fra at [ForumID]-feltet er af datatypen Tal / Integer, og hvis det er sandt skal du ikke skrive ' (<apostrof) omkring Request.Form("ForumID"). Et lille eks. Hvis felt-datatypen er tal: strSQL = strSQL & "[ForumID]= " & Request.Form("ForumID") & ", " Hvis felt-datatypen er tekst eller notat strSQL = strSQL & "[ForumID]= '" & Request.Form("ForumID") & "', " Håber du forstår, ellers kan du lige prøve at skrive hvilke felter du har i db og hvilke datatyper de har :)
Jo, jeg forstod godt hvad du mente, og det hjalp en del. Nu får jeg ihvertfald ingen fejlmeldinger, men sjovt nok bliver min database ikke opdateret tiltrods for at log'en siger flg: Update [Entries] set [name]= 'Test', [subject]= 'test', [comment]= '321bang', [date]= '20-06-2006 15:43:26', [ip]= 'xx.xxx.xxx.xxx' Where [id] = 555 Lidt besynderligt?
hov, jeg burde muske også lige poste ændringerne. Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb") Conn.Open DSN strSQL = "Update [Entries] set " strSQL = strSQL & "[name]= '" & Replace(Request.Form("Name"), "'", "''") & "', " strSQL = strSQL & "[subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', " strSQL = strSQL & "[comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', " strSQL = strSQL & "[date]= '" & Now & "', " strSQL = strSQL & "[ip]= '" & (strIP) & "'" strSQL = strSQL & " Where [id] = " & Request.querystring("id") 'conn.execute(strSQL) Response.Write(strSQL) Conn.Close Set Conn = Nothing Jeg fandt ud af at messageid og forumid var overflødige i den her sammenhæng, og at der var noget med datatype der var forkert i databasen.
Så skal du lige fjerne ' apostroffen fra Conn.Execute(strSQL), da apostroffen jo udkommenterer den linie som udfører din sql sætning. Like this: Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb") Conn.Open DSN strSQL = "Update [Entries] set " strSQL = strSQL & "[name]= '" & Replace(Request.Form("Name"), "'", "''") & "', " strSQL = strSQL & "[subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', " strSQL = strSQL & "[comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', " strSQL = strSQL & "[date]= '" & Now & "', " strSQL = strSQL & "[ip]= '" & (strIP) & "'" strSQL = strSQL & " Where [id] = " & Request.querystring("id") Conn.execute(strSQL) 'Response.Write(strSQL) Conn.Close Set Conn = Nothing
Hvor er jeg ufattelig dum og blind.. de fleste burde tro at jeg er en kraft idiot når jeg overser sådan noget, hehe. Tusind tak for hjælpen! Du er velkommen til at modtage point nu :)
Hehe, vi er her for at hjælpe hinanden ;)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.